arclight 1.1.3 → 1.2.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
  SHA256:
3
- metadata.gz: 8fa0be8b6a63486a158607273080d3bc226029d05c8d8b76b73f72a60dc6afa3
4
- data.tar.gz: 155b435d83af03435aff13db82a1509148da62a84fa960135d1c73b5dfa335ae
3
+ metadata.gz: cc33edce733f7fd511703a9d4b1b7fa7152dc7136a5c0ff06d6cb08891e7bdb4
4
+ data.tar.gz: f698894daf2a17d75db46a8cbc8c8517aaee3168ae62caa6c21f4bb9b5b9e310
5
5
  SHA512:
6
- metadata.gz: 22eeea5a79c6fc8a777a42eff6f9c0ebd2be7bead5a4a3e92277be5a88936b5628b89042999c7b21c3963824767dadc0448f9912ebf9d76fbd9b630e98dfa7e6
7
- data.tar.gz: d5b7a8fa47adfa754db93b8fe0012b7bf51c38f6c10a801b762610b4ca0621fae43a9f80cef4bb71264a90ecebb2bfe002f6b99b02ab36698e86fda7e10e6842
6
+ metadata.gz: 16bbb85fa76bf4003cbc8dbcc38299ba6c7461c0fbc952ee02dbcfddc8ec19fa37f04b595de248a4bd6c39ce69a083f607a6a17a64aa043a94026b4a5249de36
7
+ data.tar.gz: d176c37652331ad6b229412caaf5488cd84cb06a555bc48dd7c4184fabda4ff1f47e8927c8babe7eaeb6fc665c63faf6ec4ebfc5b16b6f89247aec9ac9b1830d
data/.gitignore CHANGED
@@ -9,6 +9,7 @@
9
9
  /pkg/
10
10
  /spec/reports/
11
11
  /tmp/
12
+ /app/assets/builds/
12
13
 
13
14
  # rspec failure tracking
14
15
  .rspec_status
data/README.md CHANGED
@@ -117,7 +117,7 @@ You can also run `bin/console` for an interactive prompt that will allow you to
117
117
  When any of the javascript components or SASS sources in the gem are changed, this package should be published to NPM with the following steps:
118
118
  1. [Install npm](https://www.npmjs.com/get-npm)
119
119
  2. Bump the version number in `package.json`
120
- 3. run `npm publish` to push the javascript package to https://npmjs.org/package/arclight
120
+ 3. run `npm run build && npm publish` to push the javascript package to https://npmjs.org/package/arclight
121
121
 
122
122
  ## Contributing
123
123
 
@@ -0,0 +1,4 @@
1
+ @import "bootstrap/scss/functions";
2
+ @import "bootstrap/scss/mixins/breakpoints";
3
+ @import "bootstrap/scss/variables";
4
+ @import "application";
@@ -46,11 +46,16 @@ $hierarchy-view-collapse-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3
46
46
  display: none;
47
47
  }
48
48
 
49
- turbo-frame[loading]:not([complete]) {
50
- &::after {
51
- @extend .placeholder !optional;
49
+ turbo-frame[busy] {
50
+ &::before {
52
51
  animation: placeholder-glow 2s ease-in-out infinite;
53
- content: 'Loading...';
52
+ background-color: currentcolor;
53
+ content: "Loading...";
54
+ cursor: wait;
55
+ display: inline-block;
56
+ min-height: 1em;
57
+ opacity: 0.5;
58
+ vertical-align: middle;
54
59
  display: inline-block;
55
60
  margin-left: 1.5rem;
56
61
  }
@@ -101,8 +106,8 @@ $hierarchy-view-collapse-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3
101
106
 
102
107
  .title-container {
103
108
  border-bottom: $border-width solid $border-color;
104
- padding-bottom: $spacer * .5;
105
- margin-bottom: $spacer * .75;
109
+ padding-bottom: $spacer * 0.5;
110
+ margin-bottom: $spacer * 0.75;
106
111
  display: grid;
107
112
  gap: 0.5rem;
108
113
  grid-template-areas:
@@ -142,7 +147,7 @@ $hierarchy-view-collapse-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3
142
147
  .online-contents {
143
148
  grid-area: online-contents;
144
149
  margin-bottom: 1rem;
145
-
150
+
146
151
  h2 {
147
152
  font-size: 1rem;
148
153
  text-transform: uppercase;
@@ -1,5 +1,7 @@
1
-
2
- .toggle-bookmark, .breadcrumb-item, .document, .al-online-content-icon {
1
+ .toggle-bookmark,
2
+ .breadcrumb-item,
3
+ .document,
4
+ .al-online-content-icon {
3
5
  .blacklight-icons svg {
4
6
  height: 1rem;
5
7
  width: 1rem;
@@ -11,5 +13,5 @@
11
13
  }
12
14
 
13
15
  .btn > .bi:first-child {
14
- @extend .me-1
16
+ margin-inline-end: 0.25rem !important;
15
17
  }
@@ -7,7 +7,7 @@
7
7
  .al-show-breadcrumb {
8
8
  border-bottom: $border-width solid $border-color;
9
9
  padding-bottom: $spacer;
10
- margin-bottom: $spacer * .75;
10
+ margin-bottom: $spacer * 0.75;
11
11
  width: 100%;
12
12
 
13
13
  $bent-arrow: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='15'><path fill-rule='evenodd' d='M1.5 1.5A.5.5 0 0 0 1 2v4.8a2.5 2.5 0 0 0 2.5 2.5h9.793l-3.347 3.346a.5.5 0 0 0 .708.708l4.2-4.2a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 8.3H3.5A1.5 1.5 0 0 1 2 6.8V2a.5.5 0 0 0-.5-.5z'></path></svg>";
@@ -53,7 +53,9 @@
53
53
  }
54
54
  }
55
55
 
56
- .breadcrumb-item-1, .breadcrumb-item-4 { // breadcrumb-item-3 can have multiple on one line
56
+ .breadcrumb-item-1,
57
+ .breadcrumb-item-4 {
58
+ // breadcrumb-item-3 can have multiple on one line
57
59
  flex: 1 0 100%;
58
60
  color: $gray-600;
59
61
  }
@@ -100,14 +102,14 @@
100
102
  border: $default-border-styling;
101
103
  background-color: $gray-200;
102
104
  font-size: $font-size-sm;
103
- padding: ($spacer * .5) $spacer ($spacer * .75);
105
+ padding: ($spacer * 0.5) $spacer ($spacer * 0.75);
104
106
 
105
107
  @media (max-width: 767px) {
106
108
  margin-top: $spacer;
107
109
  }
108
110
 
109
111
  .al-collection-id {
110
- margin-bottom: $spacer * .75;
112
+ margin-bottom: $spacer * 0.75;
111
113
  }
112
114
 
113
115
  &-options {
@@ -153,12 +155,16 @@
153
155
  }
154
156
 
155
157
  .show-document {
156
- @extend .ps-lg-4;
157
-
158
158
  .title-container .bookmark-toggle {
159
- @extend .card;
160
- @extend .bg-light;
161
- @extend .p-2;
159
+ border: var(--bs-card-border-width) solid var(--bs-card-border-color);
160
+ background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity));
161
+ padding: 0.5rem;
162
+ }
163
+ }
164
+
165
+ @media (min-width: 992px) {
166
+ .show-document {
167
+ padding-left: 1.5rem !important;
162
168
  }
163
169
  }
164
170
 
@@ -177,7 +183,10 @@ dl.deflist dt {
177
183
  text-align: left;
178
184
  }
179
185
 
180
- .chronlist-head, .list-head, .index-head, .table-head {
186
+ .chronlist-head,
187
+ .list-head,
188
+ .index-head,
189
+ .table-head {
181
190
  caption-side: top;
182
191
  font-size: 1.25rem;
183
192
  font-weight: 500;
@@ -1,9 +1,13 @@
1
1
  .navbar-search {
2
+ border-bottom: $default-border-styling;
3
+ border-top: $default-border-styling;
4
+ margin-bottom: ($spacer * 0.5);
2
5
  z-index: 10;
6
+
3
7
  .search-query-form {
4
- max-width: 100% !important; // work around blacklight styles
8
+ max-width: 100% !important; // work around blacklight styles
5
9
  display: flex;
6
- gap: .5rem;
10
+ gap: 0.5rem;
7
11
 
8
12
  // wrap collection dropdown onto its own line on smaller screens
9
13
  @include media-breakpoint-down(md) {
@@ -22,9 +26,12 @@
22
26
  }
23
27
 
24
28
  .al-masthead {
25
- h1, .h1 {
29
+ --al-mastead-active-link-color: var(--bs-gray-700);
30
+ --al-masthead-title-size: #{$h2-font-size};
31
+
32
+ .h1 {
26
33
  display: block;
27
- font-size: $h2-font-size;
34
+ font-size: var(--al-masthead-title-size);
28
35
  margin: 0;
29
36
  padding: ($spacer * 1.5) ($spacer * 0.5);
30
37
  }
@@ -33,31 +40,8 @@
33
40
  flex-direction: row;
34
41
  font-weight: 700;
35
42
 
36
- .active a {
37
- color: $gray-700;
38
- }
39
- }
40
-
41
- + .navbar-search {
42
- border-bottom: $default-border-styling;
43
- border-top: $default-border-styling;
44
- margin-bottom: ($spacer * 0.5);
45
-
46
- a {
47
- font-weight: $font-weight-bold;
48
- }
49
-
50
43
  .active a {
51
- color: $gray-700;
52
- }
53
-
54
- .navbar-toggler {
55
- background-color: $white;
56
- border: $default-border-styling;
57
- }
58
-
59
- .navbar-toggler-icon {
60
- background-image: $navbar-light-toggler-icon-bg;
44
+ color: var(--al-mastead-active-link-color);
61
45
  }
62
46
  }
63
47
 
@@ -66,8 +50,7 @@
66
50
  justify-content: center !important;
67
51
  }
68
52
 
69
- h1,
70
- + .navbar-search {
53
+ h1 {
71
54
  text-align: center;
72
55
  }
73
56
  }
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  .al-document-abstract-or-scope {
38
- margin-bottom: $spacer * .5;
38
+ margin-bottom: $spacer * 0.5;
39
39
  max-width: 45em;
40
40
  }
41
41
  }
@@ -51,7 +51,7 @@ article.document {
51
51
  div.breadcrumb-links,
52
52
  dd.al-document-abstract-or-scope,
53
53
  dd.al-document-creator {
54
- margin-top: ($spacer * .5);
54
+ margin-top: ($spacer * 0.5);
55
55
  }
56
56
 
57
57
  form.bookmark-toggle.col-auto {
@@ -66,12 +66,12 @@ article.document {
66
66
 
67
67
  .al-document-abstract-or-scope {
68
68
  margin-bottom: 0;
69
- margin-top: $spacer * .75;
69
+ margin-top: $spacer * 0.75;
70
70
  max-width: 45em;
71
71
  }
72
72
  .al-grouped-repository {
73
73
  font-size: $font-size-sm;
74
- margin-bottom: $spacer * .75;
74
+ margin-bottom: $spacer * 0.75;
75
75
  }
76
76
  .al-grouped-title-bar {
77
77
  background-color: $gray-200;
@@ -91,7 +91,7 @@ article.document {
91
91
  .al-grouped-more {
92
92
  border-bottom: $default-border-styling;
93
93
  margin-bottom: $spacer;
94
- padding: ($spacer * .5) 0;
94
+ padding: ($spacer * 0.5) 0;
95
95
  }
96
96
 
97
97
  .document {
@@ -121,7 +121,6 @@ article.document {
121
121
  margin-bottom: ($spacer * 3) !important;
122
122
  }
123
123
 
124
-
125
124
  // Compact Search Results
126
125
  .documents-compact {
127
126
  margin-bottom: $spacer;
@@ -147,7 +146,7 @@ article.document {
147
146
 
148
147
  .index-document-functions {
149
148
  display: flex;
150
- @extend .justify-content-end;
149
+ justify-content: flex-end !important;
151
150
  }
152
151
 
153
152
  .al-document-container.text-muted {
@@ -176,13 +175,14 @@ article.document {
176
175
 
177
176
  .breadcrumb-links .col {
178
177
  flex-basis: auto;
179
- }
178
+ }
180
179
 
181
180
  .btn-outline-secondary svg {
182
181
  fill: $gray-600;
183
182
  }
184
183
 
185
- .btn-outline-secondary:not(:disabled):not(.disabled).active svg, .btn-outline-secondary:hover svg {
184
+ .btn-outline-secondary:not(:disabled):not(.disabled).active svg,
185
+ .btn-outline-secondary:hover svg {
186
186
  fill: $white;
187
187
  }
188
188
 
@@ -197,11 +197,10 @@ article.document {
197
197
  justify-content: flex-end;
198
198
  }
199
199
 
200
-
201
200
  .result-type-group {
202
201
  order: -1;
203
202
  flex-grow: 1;
204
- &.btn-group>.btn {
203
+ &.btn-group > .btn {
205
204
  flex-grow: 0;
206
205
  }
207
206
  }
@@ -246,6 +245,5 @@ article.document {
246
245
  .bookmark-toggle {
247
246
  display: none;
248
247
  }
249
-
250
248
  }
251
249
  }
@@ -29,13 +29,11 @@ module Arclight
29
29
  end
30
30
 
31
31
  def document_path
32
- @document_path ||= solr_document_path(normalized_eadid)
32
+ @document_path ||= solr_document_path(document.collection_id)
33
33
  end
34
34
 
35
35
  def section_anchor(section)
36
36
  "##{t("arclight.views.show.sections.#{section}").parameterize}"
37
37
  end
38
-
39
- delegate :normalized_eadid, to: :document
40
38
  end
41
39
  end
@@ -29,7 +29,7 @@ module Arclight
29
29
  # @param [SolrDocument] document
30
30
  def self.from_solr_document(document)
31
31
  ids = document.parent_ids
32
- legacy_ids = document.legacy_parent_ids.map { |legacy_id| document.eadid == legacy_id ? legacy_id : "#{document.eadid}#{legacy_id}" }
32
+ legacy_ids = document.legacy_parent_ids.map { |legacy_id| document.collection_id == legacy_id ? legacy_id : "#{document.collection_id}#{legacy_id}" }
33
33
  labels = document.parent_labels
34
34
  eadid = document.eadid
35
35
  levels = document.parent_levels
@@ -7,6 +7,7 @@ module Arclight
7
7
  extend ActiveSupport::Concern
8
8
 
9
9
  included do
10
+ attribute :collection_id, :string, '_root_'
10
11
  attribute :parent_ids, :array, 'parent_ids_ssim'
11
12
  attribute :legacy_parent_ids, :array, 'parent_ssim'
12
13
  Arclight.deprecation.deprecate_methods(self, legacy_parent_ids: 'Use `parent_ids` instead')
@@ -50,6 +51,7 @@ module Arclight
50
51
  def normalized_eadid
51
52
  Arclight::NormalizedId.new(eadid).to_s
52
53
  end
54
+ Arclight.deprecation.deprecate_methods(self, normalized_eadid: 'Use `collection_id` instead')
53
55
 
54
56
  def repository
55
57
  first('repository_ssm') || collection&.first('repository_ssm')
@@ -5,9 +5,11 @@ require 'arclight/exceptions'
5
5
  module Arclight
6
6
  ##
7
7
  # A simple utility class to normalize identifiers
8
- # to be used around the application for linking
9
8
  class NormalizedId
10
- def initialize(id)
9
+ # Accepts unused kwargs from the ead2_config.rb id to_field directive
10
+ # (:title and :repository) so that applications can provide a custom
11
+ # id_normalizer class to traject to form the collection id from these attributes.
12
+ def initialize(id, **_kwargs)
11
13
  @id = id
12
14
  end
13
15
 
@@ -6,6 +6,7 @@ require 'traject/nokogiri_reader'
6
6
  require 'traject_plus'
7
7
  require 'traject_plus/macros'
8
8
  require 'arclight/level_label'
9
+ require 'arclight/normalized_id'
9
10
  require 'arclight/normalized_date'
10
11
  require 'arclight/normalized_title'
11
12
  require 'active_model/conversion' ## Needed for Arclight::Repository
@@ -53,6 +54,7 @@ DID_SEARCHABLE_NOTES_FIELDS = %w[
53
54
 
54
55
  settings do
55
56
  provide 'component_traject_config', File.join(__dir__, 'ead2_component_config.rb')
57
+ provide 'id_normalizer', 'Arclight::NormalizedId'
56
58
  provide 'date_normalizer', 'Arclight::NormalizedDate'
57
59
  provide 'title_normalizer', 'Arclight::NormalizedTitle'
58
60
  provide 'reader_class_name', 'Arclight::Traject::NokogiriNamespacelessReader'
@@ -75,7 +77,13 @@ end
75
77
  # NOTE: All fields should be stored in Solr
76
78
  # ==================
77
79
 
78
- to_field 'id', extract_xpath('/ead/eadheader/eadid'), strip, gsub('.', '-')
80
+ to_field 'id' do |record, accumulator|
81
+ id = record.at_xpath('/ead/eadheader/eadid')&.text
82
+ title = record.at_xpath('/ead/archdesc/did/unittitle')&.text
83
+ repository = settings['repository']
84
+ accumulator << settings['id_normalizer'].constantize.new(id, title: title, repository: repository).to_s
85
+ end
86
+
79
87
  to_field 'title_filing_ssi', extract_xpath('/ead/eadheader/filedesc/titlestmt/titleproper[@type="filing"]')
80
88
  to_field 'title_ssm', extract_xpath('/ead/archdesc/did/unittitle')
81
89
  to_field 'title_tesim', extract_xpath('/ead/archdesc/did/unittitle')
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Arclight
4
- VERSION = '1.1.3'
4
+ VERSION = '1.2.0'
5
5
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arclight",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "The frontend for arclight",
5
5
  "main": "app/assets/javascript/arclight/arclight.js",
6
6
  "files": [
@@ -9,9 +9,12 @@
9
9
  "devDependencies": {
10
10
  "eslint": "^8.26.0",
11
11
  "eslint-config-airbnb-base": "^15.0.0",
12
- "eslint-plugin-import": "^2.2.0"
12
+ "eslint-plugin-import": "^2.2.0",
13
+ "sass": "^1.59.3",
14
+ "bootstrap": "^5.2.0"
13
15
  },
14
16
  "scripts": {
17
+ "build": "sass ./app/assets/stylesheets/arclight/build.scss:./app/assets/builds/arclight.css --no-source-map --load-path=node_modules",
15
18
  "lint": "eslint './app/assets/javascripts/**/*.{js,es6}'",
16
19
  "lint:fix": "eslint --fix './app/assets/javascripts/**/*.{js,es6}'",
17
20
  "test": "echo \"Error: no test specified\" && exit 1"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arclight
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darren Hardy
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2024-03-29 00:00:00.000000000 Z
14
+ date: 2024-06-07 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: blacklight
@@ -314,6 +314,7 @@ files:
314
314
  - app/assets/javascripts/arclight/oembed_controller.js
315
315
  - app/assets/javascripts/arclight/truncate_controller.js
316
316
  - app/assets/stylesheets/arclight/application.scss
317
+ - app/assets/stylesheets/arclight/build.scss
317
318
  - app/assets/stylesheets/arclight/modules/collection_search.scss
318
319
  - app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss
319
320
  - app/assets/stylesheets/arclight/modules/highlights.scss
@@ -501,7 +502,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
501
502
  - !ruby/object:Gem::Version
502
503
  version: '0'
503
504
  requirements: []
504
- rubygems_version: 3.4.10
505
+ rubygems_version: 3.5.10
505
506
  signing_key:
506
507
  specification_version: 4
507
508
  summary: A Blacklight-based environment to support discovery and delivery for archives