blacklight-spotlight 5.2.4 → 5.3.1

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.
Files changed (165) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +25 -5
  3. data/app/assets/javascripts/spotlight/spotlight.esm.js +1679 -1228
  4. data/app/assets/javascripts/spotlight/spotlight.esm.js.map +1 -1
  5. data/app/assets/javascripts/spotlight/spotlight.js +1682 -1231
  6. data/app/assets/javascripts/spotlight/spotlight.js.map +1 -1
  7. data/app/assets/stylesheets/spotlight/_spotlight.scss +0 -2
  8. data/app/components/spotlight/analytics/aggregation_component.html.erb +1 -1
  9. data/app/components/spotlight/document_admin_table_component.html.erb +2 -2
  10. data/app/components/spotlight/edit_view_links_component.html.erb +1 -1
  11. data/app/components/spotlight/header_component.html.erb +1 -1
  12. data/app/components/spotlight/tag_list_form_component.html.erb +1 -1
  13. data/app/components/spotlight/tag_selector_component.html.erb +2 -2
  14. data/app/components/spotlight/translations/subheading_component.html.erb +1 -1
  15. data/app/controllers/spotlight/bulk_actions_controller.rb +2 -2
  16. data/app/controllers/spotlight/bulk_updates_controller.rb +2 -2
  17. data/app/controllers/spotlight/catalog_controller.rb +2 -2
  18. data/app/controllers/spotlight/contact_forms_controller.rb +1 -1
  19. data/app/controllers/spotlight/exhibits_controller.rb +1 -1
  20. data/app/controllers/spotlight/featured_images_controller.rb +1 -1
  21. data/app/controllers/spotlight/pages_controller.rb +1 -1
  22. data/app/controllers/spotlight/resources_controller.rb +1 -1
  23. data/app/controllers/spotlight/searches_controller.rb +3 -4
  24. data/app/controllers/spotlight/solr_controller.rb +1 -1
  25. data/app/controllers/spotlight/tags_controller.rb +1 -1
  26. data/app/controllers/spotlight/versions_controller.rb +1 -1
  27. data/app/javascript/spotlight/admin/add_another.js +22 -15
  28. data/app/javascript/spotlight/admin/add_image_selector.js +27 -25
  29. data/app/javascript/spotlight/admin/add_new_button.js +47 -43
  30. data/app/javascript/spotlight/admin/blacklight_configuration.js +52 -38
  31. data/app/javascript/spotlight/admin/block_mixins/autocompleteable.js +68 -60
  32. data/app/javascript/spotlight/admin/block_mixins/formable.js +55 -47
  33. data/app/javascript/spotlight/admin/block_mixins/plustextable.js +19 -20
  34. data/app/javascript/spotlight/admin/blocks/block.js +20 -16
  35. data/app/javascript/spotlight/admin/blocks/browse_block.js +42 -37
  36. data/app/javascript/spotlight/admin/blocks/browse_group_categories_block.js +33 -31
  37. data/app/javascript/spotlight/admin/blocks/iframe_block.js +14 -11
  38. data/app/javascript/spotlight/admin/blocks/link_to_search_block.js +4 -7
  39. data/app/javascript/spotlight/admin/blocks/oembed_block.js +13 -10
  40. data/app/javascript/spotlight/admin/blocks/pages_block.js +20 -13
  41. data/app/javascript/spotlight/admin/blocks/resources_block.js +150 -117
  42. data/app/javascript/spotlight/admin/blocks/rule_block.js +11 -10
  43. data/app/javascript/spotlight/admin/blocks/search_result_block.js +16 -17
  44. data/app/javascript/spotlight/admin/blocks/solr_documents_base_block.js +123 -64
  45. data/app/javascript/spotlight/admin/blocks/solr_documents_block.js +8 -8
  46. data/app/javascript/spotlight/admin/blocks/solr_documents_carousel_block.js +63 -43
  47. data/app/javascript/spotlight/admin/blocks/solr_documents_embed_block.js +9 -9
  48. data/app/javascript/spotlight/admin/blocks/solr_documents_features_block.js +17 -16
  49. data/app/javascript/spotlight/admin/blocks/solr_documents_grid_block.js +6 -7
  50. data/app/javascript/spotlight/admin/blocks/uploaded_items_block.js +84 -64
  51. data/app/javascript/spotlight/admin/crop.js +203 -156
  52. data/app/javascript/spotlight/admin/croppable.js +4 -4
  53. data/app/javascript/spotlight/admin/croppable_modal.js +59 -37
  54. data/app/javascript/spotlight/admin/edit_in_place.js +50 -47
  55. data/app/javascript/spotlight/admin/exhibits.js +52 -41
  56. data/app/javascript/spotlight/admin/form_observer.js +59 -53
  57. data/app/javascript/spotlight/admin/iiif.js +26 -25
  58. data/app/javascript/spotlight/admin/index.js +44 -47
  59. data/app/javascript/spotlight/admin/locks.js +14 -14
  60. data/app/javascript/spotlight/admin/multi_image_selector.js +127 -111
  61. data/app/javascript/spotlight/admin/pages.js +21 -21
  62. data/app/javascript/spotlight/admin/progress_monitor.js +67 -65
  63. data/app/javascript/spotlight/admin/readonly_checkbox.js +3 -3
  64. data/app/javascript/spotlight/admin/search_typeahead.js +55 -43
  65. data/app/javascript/spotlight/admin/select_related_input.js +17 -17
  66. data/app/javascript/spotlight/admin/sir-trevor/block_controls.js +100 -84
  67. data/app/javascript/spotlight/admin/sir-trevor/block_limits.js +36 -31
  68. data/app/javascript/spotlight/admin/sir-trevor/locales.js +52 -39
  69. data/app/javascript/spotlight/admin/spotlight_nestable.js +112 -90
  70. data/app/javascript/spotlight/admin/tabs.js +16 -3
  71. data/app/javascript/spotlight/admin/translation_progress.js +13 -7
  72. data/app/javascript/spotlight/admin/users.js +41 -41
  73. data/app/javascript/spotlight/admin/visibility_toggle.js +4 -4
  74. data/app/javascript/spotlight/controllers/clipboard_controller.js +14 -0
  75. data/app/javascript/spotlight/controllers/index.js +4 -2
  76. data/app/javascript/spotlight/controllers/tag_selector_controller.js +116 -79
  77. data/app/javascript/spotlight/core.js +18 -15
  78. data/app/javascript/spotlight/index.js +4 -4
  79. data/app/javascript/spotlight/user/browse_group_categories.js +24 -22
  80. data/app/javascript/spotlight/user/carousel.js +23 -19
  81. data/app/javascript/spotlight/user/clear_form_button.js +15 -15
  82. data/app/javascript/spotlight/user/index.js +4 -4
  83. data/app/javascript/spotlight/user/zpr_links.js +18 -18
  84. data/app/models/spotlight/analytics/ga.rb +0 -1
  85. data/app/models/spotlight/custom_field.rb +1 -1
  86. data/app/models/spotlight/resources/iiif_manifest_v3.rb +2 -2
  87. data/app/services/spotlight/exhibit_import_export_service.rb +0 -2
  88. data/app/views/blacklight/nav/_bookmark.html.erb +1 -1
  89. data/app/views/catalog/_remove_tags.html.erb +1 -1
  90. data/app/views/layouts/spotlight/base.html.erb +1 -1
  91. data/app/views/shared/_header_navbar.html.erb +1 -1
  92. data/app/views/shared/_masthead.html.erb +2 -2
  93. data/app/views/shared/_site_sidebar.html.erb +1 -1
  94. data/app/views/shared/_user_util_links.html.erb +2 -2
  95. data/app/views/spotlight/about_pages/_contacts.html.erb +1 -1
  96. data/app/views/spotlight/accessibility/alt_text.html.erb +1 -1
  97. data/app/views/spotlight/admin_users/index.html.erb +11 -9
  98. data/app/views/spotlight/appearances/edit.html.erb +1 -1
  99. data/app/views/spotlight/browse/_search_box.html.erb +1 -1
  100. data/app/views/spotlight/bulk_updates/_download.html.erb +1 -1
  101. data/app/views/spotlight/bulk_updates/_progress_panel.html.erb +6 -6
  102. data/app/views/spotlight/bulk_updates/edit.html.erb +1 -1
  103. data/app/views/spotlight/catalog/_admin_header.html.erb +1 -1
  104. data/app/views/spotlight/catalog/_admin_index_header_default.html.erb +1 -1
  105. data/app/views/spotlight/catalog/_curation_mode_toggle_default.html.erb +1 -1
  106. data/app/views/spotlight/catalog/_document.html.erb +2 -2
  107. data/app/views/spotlight/catalog/_document_admin_table.html.erb +1 -1
  108. data/app/views/spotlight/catalog/_edit_sidecar.html.erb +1 -1
  109. data/app/views/spotlight/catalog/_index_compact_default.html.erb +1 -1
  110. data/app/views/spotlight/catalog/_reindex_progress_panel.html.erb +6 -6
  111. data/app/views/spotlight/catalog/select_image.html.erb +1 -1
  112. data/app/views/spotlight/contact_mailer/report_problem.html.erb +2 -2
  113. data/app/views/spotlight/exhibits/_contact.html.erb +2 -2
  114. data/app/views/spotlight/exhibits/_delete.html.erb +2 -2
  115. data/app/views/spotlight/exhibits/_exhibit_card.html.erb +1 -1
  116. data/app/views/spotlight/exhibits/_export.html.erb +1 -1
  117. data/app/views/spotlight/exhibits/_form.html.erb +2 -2
  118. data/app/views/spotlight/exhibits/_languages.html.erb +7 -7
  119. data/app/views/spotlight/exhibits/_missing_exhibits.html.erb +1 -1
  120. data/app/views/spotlight/locks/_lock.html.erb +2 -2
  121. data/app/views/spotlight/metadata_configurations/edit.html.erb +1 -1
  122. data/app/views/spotlight/pages/_order_pages.html.erb +3 -3
  123. data/app/views/spotlight/pages/preview.html.erb +1 -1
  124. data/app/views/spotlight/pages/show.html.erb +2 -2
  125. data/app/views/spotlight/resources/_form.html.erb +1 -1
  126. data/app/views/spotlight/resources/csv_upload/_form.html.erb +1 -1
  127. data/app/views/spotlight/resources/upload/_form.html.erb +1 -1
  128. data/app/views/spotlight/roles/index.html.erb +5 -5
  129. data/app/views/spotlight/search_configurations/_search_fields.html.erb +1 -1
  130. data/app/views/spotlight/search_configurations/edit.html.erb +1 -1
  131. data/app/views/spotlight/searches/index.html.erb +2 -2
  132. data/app/views/spotlight/shared/_configuration_sidebar.html.erb +1 -1
  133. data/app/views/spotlight/shared/_curation_sidebar.html.erb +1 -1
  134. data/app/views/spotlight/shared/_dd3_item.html.erb +1 -1
  135. data/app/views/spotlight/sir_trevor/_sir_trevor_block_array.html.erb +1 -1
  136. data/app/views/spotlight/sir_trevor/blocks/_browse_block.html.erb +1 -1
  137. data/app/views/spotlight/sir_trevor/blocks/_browse_group_categories_block.html.erb +1 -1
  138. data/app/views/spotlight/sir_trevor/blocks/_featured_pages_block.html.erb +2 -2
  139. data/app/views/spotlight/sir_trevor/blocks/_link_to_search_block.html.erb +1 -1
  140. data/app/views/spotlight/sir_trevor/blocks/_rule_block.html.erb +1 -1
  141. data/app/views/spotlight/sir_trevor/blocks/_search_results_block.html.erb +1 -1
  142. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_block.html.erb +1 -1
  143. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_carousel_block.html.erb +1 -1
  144. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_features_block.html.erb +1 -1
  145. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_grid_block.html.erb +1 -1
  146. data/app/views/spotlight/sites/edit_exhibits.html.erb +3 -3
  147. data/app/views/spotlight/translations/_browse_categories.html.erb +2 -2
  148. data/app/views/spotlight/translations/_general.html.erb +21 -21
  149. data/app/views/spotlight/translations/_groups.html.erb +1 -1
  150. data/app/views/spotlight/translations/_metadata.html.erb +8 -8
  151. data/app/views/spotlight/translations/_pages_table.html.erb +2 -2
  152. data/app/views/spotlight/translations/_search_fields.html.erb +13 -13
  153. data/app/views/spotlight/translations/edit.html.erb +5 -5
  154. data/config/importmap.rb +0 -1
  155. data/lib/generators/spotlight/assets/propshaft_generator.rb +0 -1
  156. data/lib/generators/spotlight/templates/solr/conf/admin-extra.html +31 -31
  157. data/lib/spotlight/version.rb +1 -1
  158. data/spec/factories/contact_images.rb +1 -1
  159. data/spec/factories/exhibit_thumbnails.rb +1 -1
  160. data/spec/factories/featured_images.rb +1 -1
  161. data/spec/support/features/test_features_helpers.rb +12 -3
  162. metadata +12 -64
  163. data/app/assets/stylesheets/spotlight/typeahead.scss +0 -77
  164. data/app/javascript/spotlight/admin/copy_email_addresses.js +0 -7
  165. data/vendor/assets/javascripts/jquery.waitforimages.min.js +0 -2
@@ -1,74 +1,88 @@
1
- import SpotlightNestable from 'spotlight/admin/spotlight_nestable'
2
- import Core from 'spotlight/core'
1
+ import SpotlightNestable from "spotlight/admin/spotlight_nestable"
2
+ import Core from "spotlight/core"
3
3
 
4
- SirTrevor.Blocks.UploadedItems = (function(){
4
+ SirTrevor.Blocks.UploadedItems = (function () {
5
5
  return Core.Block.Resources.extend({
6
6
  plustextable: true,
7
7
  uploadable: true,
8
8
  autocompleteable: false,
9
9
  show_image_selection: false,
10
-
11
- id_key: 'file',
12
10
 
13
- type: 'uploaded_items',
11
+ id_key: "file",
14
12
 
15
- icon_name: 'items',
13
+ type: "uploaded_items",
16
14
 
17
- blockGroup: 'undefined',
15
+ icon_name: "items",
16
+
17
+ blockGroup: "undefined",
18
18
 
19
19
  // Clear out the default Uploadable upload options
20
20
  // since we will be using our own custom controls
21
- upload_options: { html: '' },
21
+ upload_options: { html: "" },
22
22
 
23
- fileInput: function() { return $(this.inner).find('input[type="file"]'); },
23
+ fileInput: function () {
24
+ return $(this.inner).find('input[type="file"]')
25
+ },
24
26
 
25
- onBlockRender: function(){
26
- SpotlightNestable.init($(this.inner).find('[data-behavior="nestable"]'));
27
+ onBlockRender: function () {
28
+ SpotlightNestable.init($(this.inner).find('[data-behavior="nestable"]'))
27
29
 
28
- this.fileInput().on('change', (function(ev) {
29
- this.onDrop(ev.currentTarget);
30
- }).bind(this));
30
+ this.fileInput().on(
31
+ "change",
32
+ function (ev) {
33
+ this.onDrop(ev.currentTarget)
34
+ }.bind(this),
35
+ )
31
36
  },
32
37
 
33
- onDrop: function(transferData){
38
+ onDrop: function (transferData) {
34
39
  var file = transferData.files[0],
35
- urlAPI = (typeof URL !== "undefined") ? URL : (typeof webkitURL !== "undefined") ? webkitURL : null;
40
+ _urlAPI =
41
+ typeof URL !== "undefined"
42
+ ? URL
43
+ : typeof webkitURL !== "undefined"
44
+ ? webkitURL
45
+ : null
36
46
 
37
47
  // Handle one upload at a time
38
48
  if (/image/.test(file.type)) {
39
- this.loading();
49
+ this.loading()
40
50
 
41
51
  this.uploader(
42
52
  file,
43
- function(data) {
44
- this.createItemPanel(data);
45
- this.fileInput().val('');
46
- this.ready();
53
+ function (data) {
54
+ this.createItemPanel(data)
55
+ this.fileInput().val("")
56
+ this.ready()
57
+ },
58
+ function (_error) {
59
+ this.addMessage(i18n.t("blocks:image:upload_error"))
60
+ this.ready()
47
61
  },
48
- function(error) {
49
- this.addMessage(i18n.t('blocks:image:upload_error'));
50
- this.ready();
51
- }
52
- );
62
+ )
53
63
  }
54
64
  },
55
65
 
56
- title: function() { return i18n.t('blocks:uploaded_items:title'); },
57
- description: function() { return i18n.t('blocks:uploaded_items:description'); },
66
+ title: function () {
67
+ return i18n.t("blocks:uploaded_items:title")
68
+ },
69
+ description: function () {
70
+ return i18n.t("blocks:uploaded_items:description")
71
+ },
58
72
 
59
73
  globalIndex: 0,
60
74
 
61
- _itemPanel: function(data) {
62
- var index = "file_" + this.globalIndex++;
63
- var checked = 'checked="checked"';
75
+ _itemPanel: function (data) {
76
+ var index = "file_" + this.globalIndex++
77
+ var checked = 'checked="checked"'
64
78
 
65
- if (data.display == 'false') {
66
- checked = '';
79
+ if (data.display == "false") {
80
+ checked = ""
67
81
  }
68
82
 
69
- var dataId = data.id || data.uid;
70
- var dataTitle = data.title || data.name;
71
- var dataUrl = data.url || data.file.url;
83
+ var dataId = data.id || data.uid
84
+ var dataTitle = data.title || data.name
85
+ var dataUrl = data.url || data.file.url
72
86
 
73
87
  var markup = `
74
88
  <li class="field dd-item dd3-item" data-id="${index}" id="${this.formId(index)}">
@@ -81,8 +95,8 @@ SirTrevor.Blocks.UploadedItems = (function(){
81
95
  <div class="card-header d-flex item-grid">
82
96
  <div class="checkbox">
83
97
  <input name="item[${index}][display]" type="hidden" value="false" />
84
- <input name="item[${index}][display]" id="${this.formId(this.display_checkbox + '_' + dataId)}" type="checkbox" ${checked} class="item-grid-checkbox" value="true" />
85
- <label class="visually-hidden" for="${this.formId(this.display_checkbox + '_' + dataId)}">${i18n.t("blocks:resources:panel:display")}</label>
98
+ <input name="item[${index}][display]" id="${this.formId(this.display_checkbox + "_" + dataId)}" type="checkbox" ${checked} class="item-grid-checkbox" value="true" />
99
+ <label class="visually-hidden" for="${this.formId(this.display_checkbox + "_" + dataId)}">${i18n.t("blocks:resources:panel:display")}</label>
86
100
  </div>
87
101
  <div class="pic">
88
102
  <img class="img-thumbnail" src="${dataUrl}" />
@@ -90,12 +104,12 @@ SirTrevor.Blocks.UploadedItems = (function(){
90
104
  <div class="main form-horizontal">
91
105
  <div class="title card-title">${dataTitle}</div>
92
106
  <div class="field row me-3">
93
- <label for="${this.formId('caption_' + dataId)}" class="col-form-label col-md-3">${i18n.t("blocks:uploaded_items:caption")}</label>
94
- <input type="text" class="form-control col" id="${this.formId('caption_' + dataId)}" name="item[${index}][caption]" data-field="caption"/>
107
+ <label for="${this.formId("caption_" + dataId)}" class="col-form-label col-md-3">${i18n.t("blocks:uploaded_items:caption")}</label>
108
+ <input type="text" class="form-control col" id="${this.formId("caption_" + dataId)}" name="item[${index}][caption]" data-field="caption"/>
95
109
  </div>
96
110
  <div class="field row me-3">
97
- <label for="${this.formId('link_' + dataId)}" class="col-form-label col-md-3">${i18n.t("blocks:uploaded_items:link")}</label>
98
- <input type="text" class="form-control col" id="${this.formId('link_' + dataId)}" name="item[${index}][link]" data-field="link"/>
111
+ <label for="${this.formId("link_" + dataId)}" class="col-form-label col-md-3">${i18n.t("blocks:uploaded_items:link")}</label>
112
+ <input type="text" class="form-control col" id="${this.formId("link_" + dataId)}" name="item[${index}][link]" data-field="link"/>
99
113
  </div>
100
114
  ${this._altTextFieldsHTML(index, data)}
101
115
  </div>
@@ -105,23 +119,23 @@ SirTrevor.Blocks.UploadedItems = (function(){
105
119
  </div>
106
120
  </li>`
107
121
 
108
- const panel = $(markup);
109
- panel.find('[data-field="caption"]').val(data.caption);
110
- panel.find('[data-field="link"]').val(data.link);
111
- var context = this;
122
+ const panel = $(markup)
123
+ panel.find('[data-field="caption"]').val(data.caption)
124
+ panel.find('[data-field="link"]').val(data.link)
125
+ var context = this
112
126
 
113
- $('.remove a', panel).on('click', function(e) {
114
- e.preventDefault();
115
- $(this).closest('.field').remove();
116
- context.afterPanelDelete();
117
- });
127
+ $(".remove a", panel).on("click", function (e) {
128
+ e.preventDefault()
129
+ $(this).closest(".field").remove()
130
+ context.afterPanelDelete()
131
+ })
118
132
 
119
- this.afterPanelRender(data, panel);
133
+ this.afterPanelRender(data, panel)
120
134
 
121
- return panel;
135
+ return panel
122
136
  },
123
137
 
124
- editorHTML: function() {
138
+ editorHTML: function () {
125
139
  return `<div class="form oembed-text-admin clearfix">
126
140
  <div class="widget-header">
127
141
  ${this.description()}
@@ -146,24 +160,30 @@ SirTrevor.Blocks.UploadedItems = (function(){
146
160
  </div>`
147
161
  },
148
162
 
149
- altTextHTML: function(index, data) {
150
- const { isDecorative, altText, altTextBackup, placeholderAttr, disabledAttr } = this._altTextData(data);
163
+ altTextHTML: function (index, data) {
164
+ const {
165
+ isDecorative,
166
+ altText,
167
+ altTextBackup,
168
+ placeholderAttr,
169
+ disabledAttr,
170
+ } = this._altTextData(data)
151
171
  return `
152
172
  <div class="field row me-3">
153
173
  <div class="col-lg-3 ps-md-2">
154
- <label class="col-form-label text-nowrap pb-0 pt-1 justify-content-md-start justify-content-lg-end d-flex" for="${this.formId(this.alt_text_textarea + '_' + data.id)}">${i18n.t("blocks:resources:alt_text:alternative_text")}</label>
174
+ <label class="col-form-label text-nowrap pb-0 pt-1 justify-content-md-start justify-content-lg-end d-flex" for="${this.formId(this.alt_text_textarea + "_" + data.id)}">${i18n.t("blocks:resources:alt_text:alternative_text")}</label>
155
175
  <div class="form-check d-flex justify-content-md-start justify-content-lg-end">
156
176
  <input class="form-check-input" type="checkbox"
157
- id="${this.formId(this.decorative_checkbox + '_' + data.id)}" name="item[${index}][decorative]" ${isDecorative ? 'checked' : ''}>
158
- <label class="form-check-label" for="${this.formId(this.decorative_checkbox + '_' + data.id)}">${i18n.t("blocks:resources:alt_text:decorative")}</label>
177
+ id="${this.formId(this.decorative_checkbox + "_" + data.id)}" name="item[${index}][decorative]" ${isDecorative ? "checked" : ""}>
178
+ <label class="form-check-label" for="${this.formId(this.decorative_checkbox + "_" + data.id)}">${i18n.t("blocks:resources:alt_text:decorative")}</label>
159
179
  </div>
160
180
  </div>
161
181
  <input type="hidden" name="item[${index}][alt_text_backup]" value="${altTextBackup}" />
162
182
  <textarea class="col-lg-9" rows="2" ${placeholderAttr}
163
- id="${this.formId(this.alt_text_textarea + '_' + data.id)}" name="item[${index}][alt_text]" ${disabledAttr}>${altText}</textarea>
183
+ id="${this.formId(this.alt_text_textarea + "_" + data.id)}" name="item[${index}][alt_text]" ${disabledAttr}>${altText}</textarea>
164
184
  </div>`
165
185
  },
166
186
 
167
- zpr_key: 'zpr_link'
168
- });
169
- })();
187
+ zpr_key: "zpr_link",
188
+ })
189
+ })()