@internetarchive/ia-topnav 1.3.6 → 1.3.7-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.
Files changed (85) hide show
  1. package/.eslintrc +16 -16
  2. package/LICENSE +661 -661
  3. package/README.md +147 -147
  4. package/index.d.ts +109 -109
  5. package/index.js +3 -3
  6. package/package.json +61 -61
  7. package/src/assets/img/hamburger.js +38 -38
  8. package/src/assets/img/ia-icon.js +33 -33
  9. package/src/assets/img/icon-audio.js +23 -23
  10. package/src/assets/img/icon-close.js +16 -16
  11. package/src/assets/img/icon-donate-unpadded.js +16 -16
  12. package/src/assets/img/icon-donate.js +15 -15
  13. package/src/assets/img/icon-ellipses.js +15 -15
  14. package/src/assets/img/icon-ia-logo.js +22 -22
  15. package/src/assets/img/icon-images.js +15 -15
  16. package/src/assets/img/icon-search.js +15 -15
  17. package/src/assets/img/icon-software.js +15 -15
  18. package/src/assets/img/icon-texts.js +15 -15
  19. package/src/assets/img/icon-upload-unpadded.js +14 -14
  20. package/src/assets/img/icon-upload.js +15 -15
  21. package/src/assets/img/icon-user.js +15 -15
  22. package/src/assets/img/icon-video.js +15 -15
  23. package/src/assets/img/icon-web.js +15 -15
  24. package/src/assets/img/icon.js +18 -18
  25. package/src/assets/img/icons.js +33 -33
  26. package/src/assets/img/wordmark-stacked.js +13 -13
  27. package/src/data/menus.js +646 -646
  28. package/src/desktop-subnav.js +45 -45
  29. package/src/dropdown-menu.js +110 -109
  30. package/src/ia-topnav.js +324 -314
  31. package/src/lib/formatUrl.js +1 -1
  32. package/src/lib/keyboard-navigation.js +128 -0
  33. package/src/lib/location-handler.js +5 -5
  34. package/src/lib/query-handler.js +7 -7
  35. package/src/lib/toSentenceCase.js +8 -8
  36. package/src/login-button.js +79 -79
  37. package/src/media-button.js +113 -113
  38. package/src/media-menu.js +154 -133
  39. package/src/media-slider.js +118 -104
  40. package/src/media-subnav.js +112 -112
  41. package/src/more-slider.js +33 -33
  42. package/src/nav-search.js +111 -117
  43. package/src/primary-nav.js +258 -224
  44. package/src/save-page-form.js +59 -59
  45. package/src/search-menu.js +145 -115
  46. package/src/signed-out-dropdown.js +10 -10
  47. package/src/styles/base.js +48 -48
  48. package/src/styles/desktop-subnav.js +37 -37
  49. package/src/styles/dropdown-menu.js +168 -166
  50. package/src/styles/ia-topnav.js +87 -87
  51. package/src/styles/login-button.js +82 -79
  52. package/src/styles/media-button.js +156 -156
  53. package/src/styles/media-menu.js +66 -70
  54. package/src/styles/media-slider.js +81 -81
  55. package/src/styles/media-subnav.js +156 -156
  56. package/src/styles/more-slider.js +15 -15
  57. package/src/styles/nav-search.js +136 -136
  58. package/src/styles/primary-nav.js +311 -300
  59. package/src/styles/save-page-form.js +54 -54
  60. package/src/styles/search-menu.js +105 -99
  61. package/src/styles/signed-out-dropdown.js +31 -31
  62. package/src/styles/user-menu.js +31 -31
  63. package/src/styles/wayback-search.js +48 -48
  64. package/src/styles/wayback-slider.js +30 -30
  65. package/src/tracked-element.js +29 -27
  66. package/src/user-menu.js +56 -42
  67. package/src/wayback-search.js +18 -18
  68. package/src/wayback-slider.js +87 -87
  69. package/test/assets/img/hamburger.test.js +15 -15
  70. package/test/assets/img/user.test.js +15 -15
  71. package/test/data/menus.test.js +19 -19
  72. package/test/dropdown-menu.test.js +25 -25
  73. package/test/ia-icon.test.js +13 -13
  74. package/test/ia-topnav.test.js +273 -273
  75. package/test/login-button.test.js +15 -15
  76. package/test/media-button.test.js +19 -19
  77. package/test/media-menu.test.js +40 -40
  78. package/test/media-slider.test.js +57 -57
  79. package/test/more-slider.test.js +13 -13
  80. package/test/nav-search.test.js +61 -61
  81. package/test/primary-nav.test.js +82 -82
  82. package/test/save-page-form.test.js +35 -35
  83. package/test/search-menu.test.js +49 -49
  84. package/test/user-menu.test.js +33 -33
  85. package/test/wayback-slider.test.js +80 -80
@@ -1,300 +1,311 @@
1
- import { css } from 'https://offshoot.prod.archive.org/lit.js';
2
-
3
- export default css`
4
- button:focus,
5
- a:focus,
6
- input:focus {
7
- outline: none;
8
- }
9
-
10
- nav {
11
- position: relative;
12
- display: -ms-grid;
13
- display: grid;
14
- height: 4rem;
15
- grid-template-areas: 'hamburger empty heart search user';
16
- -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem 4rem;
17
- grid-template-columns: 4rem auto 4rem 4rem 4rem;
18
- -ms-grid-rows: 100%;
19
- grid-template-rows: 100%;
20
- background: var(--primaryNavBg);
21
- border-bottom: 1px solid var(--primaryNavBottomBorder);
22
- }
23
-
24
- nav.hide-search {
25
- grid-template-areas: 'hamburger empty heart user';
26
- -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem;
27
- grid-template-columns: 4rem auto 4rem 4rem;
28
- }
29
-
30
- .right-side-section {
31
- display: flex;
32
- user-select: none;
33
- }
34
- button {
35
- background: none;
36
- color: inherit;
37
- border: none;
38
- font: inherit;
39
- cursor: pointer;
40
- }
41
-
42
- .branding {
43
- position: static;
44
- float: left;
45
- padding: 0 5px 0 10px;
46
- -webkit-transform: translate(0, 0);
47
- -ms-transform: translate(0, 0);
48
- transform: translate(0, 0);
49
- }
50
-
51
- slot,
52
- .branding {
53
- display: flex;
54
- justify-content: left;
55
- align-items: center;
56
- }
57
-
58
- media-menu {
59
- grid-column-start: hamburger-start;
60
- grid-column-end: user-end;
61
- }
62
-
63
- .ia-logo {
64
- height: 3rem;
65
- width: 2.7rem;
66
- display: inline-block;
67
- }
68
- .ia-wordmark {
69
- height: 3rem;
70
- width: 9.5rem;
71
- }
72
- .ia-logo,
73
- .ia-wordmark {
74
- margin-right: 5px;
75
- }
76
-
77
- .hamburger {
78
- -ms-grid-row: 1;
79
- -ms-grid-column: 1;
80
- grid-area: hamburger;
81
- padding: 0;
82
- }
83
- .hamburger svg {
84
- height: 4rem;
85
- width: 4rem;
86
- fill: var(--activeColor);
87
- }
88
-
89
- .mobile-donate-link svg {
90
- height: 4rem;
91
- width: 4rem;
92
- }
93
- .mobile-donate-link .fill-color {
94
- fill: rgb(255, 0, 0);
95
- }
96
-
97
- .sr-only {
98
- position: absolute;
99
- width: 1px;
100
- height: 1px;
101
- margin: -1px;
102
- padding: 0;
103
- border: 0;
104
- overflow: hidden;
105
- white-space: nowrap;
106
- clip: rect(1px, 1px, 1px, 1px);
107
- -webkit-clip-path: inset(50%);
108
- clip-path: inset(50%);
109
- user-select: none;
110
- }
111
-
112
- .search-trigger {
113
- padding: 0;
114
- }
115
- .search-trigger svg {
116
- height: 4rem;
117
- width: 4rem;
118
- }
119
- .search-trigger .fill-color {
120
- fill: var(--iconFill);
121
- }
122
-
123
- .search-activated {
124
- position: relative;
125
- z-index: 3;
126
- }
127
-
128
- .upload {
129
- display: none;
130
- }
131
-
132
- .upload span {
133
- display: none;
134
- }
135
-
136
- .upload svg {
137
- height: 3rem;
138
- width: 3rem;
139
- }
140
-
141
- .screen-name {
142
- display: none;
143
- font-size: 1.3rem;
144
- vertical-align: middle;
145
- text-transform: uppercase;
146
- }
147
-
148
- .user-menu {
149
- color: var(--lightTextColor);
150
- padding: 0.5rem;
151
- height: 100%;
152
- }
153
-
154
- .user-menu:hover {
155
- color: var(--linkHoverColor);
156
- }
157
-
158
- .user-menu.active {
159
- border-radius: 1rem 1rem 0 0;
160
- background: var(--activeButtonBg);
161
- }
162
-
163
- .user-menu img {
164
- display: block;
165
- width: 3rem;
166
- height: 3rem;
167
- }
168
-
169
- .link-home {
170
- text-decoration: none;
171
- display: inline-flex;
172
- }
173
-
174
- @media only screen and (min-width: 890px) and (max-device-width: 905px) {
175
- .branding.second-logo {
176
- padding-right: 0;
177
- }
178
- }
179
-
180
- @media (min-width: 906px) {
181
- .branding.second-logo {
182
- padding-right: 20px;
183
- }
184
- }
185
-
186
- @media (max-width: 889px) {
187
- slot[name='opt-sec-logo'] {
188
- display: none;
189
- }
190
- }
191
-
192
- @media (min-width: 890px) {
193
- :host {
194
- --userIconWidth: 3.2rem;
195
- --userIconHeight: 3.2rem;
196
- }
197
-
198
- .right-side-section {
199
- display: contents;
200
- }
201
-
202
- nav {
203
- display: block;
204
- z-index: 4;
205
- height: 5rem;
206
- padding-right: 1.5rem;
207
- }
208
-
209
- slot[name='opt-sec-logo-mobile'] {
210
- display: none;
211
- }
212
-
213
- .branding {
214
- margin-top: 1rem;
215
- }
216
-
217
- .ia-logo,
218
- .ia-wordmark {
219
- margin-right: 10px;
220
- }
221
-
222
- .hamburger,
223
- .search-trigger,
224
- .mobile-donate-link {
225
- display: none;
226
- }
227
-
228
- .user-info {
229
- display: block;
230
- float: right;
231
- vertical-align: middle;
232
- height: 100%;
233
- }
234
-
235
- .user-info .user-menu img {
236
- height: 3rem;
237
- width: 3rem;
238
- margin-right: 0.5rem;
239
- }
240
-
241
- .user-menu {
242
- padding: 1rem 0.5rem;
243
- }
244
- .user-menu.active {
245
- background: transparent;
246
- }
247
-
248
- .user-menu img {
249
- display: inline-block;
250
- vertical-align: middle;
251
- margin-right: 0.5rem;
252
- }
253
-
254
- .upload {
255
- display: block;
256
- padding: 1rem 0.5rem;
257
- float: right;
258
- font-size: 1.4rem;
259
- text-transform: uppercase;
260
- text-decoration: none;
261
- color: var(--lightTextColor);
262
- }
263
- .upload:active,
264
- .upload:focus,
265
- .upload:hover {
266
- color: var(--linkHoverColor);
267
- }
268
-
269
- .upload svg {
270
- vertical-align: middle;
271
- fill: var(--iconFill);
272
- }
273
-
274
- .upload:hover svg,
275
- .upload:focus svg,
276
- .upload:active svg {
277
- fill: var(--linkHoverColor);
278
- }
279
-
280
- nav-search {
281
- float: right;
282
- margin-left: 1rem;
283
- }
284
-
285
- }
286
-
287
- @media (min-width: 990px) {
288
- .screen-name {
289
- display: inline-block;
290
- text-overflow: ellipsis;
291
- overflow: hidden;
292
- white-space: nowrap;
293
- max-width: 165px;
294
- }
295
-
296
- .upload span {
297
- display: inline;
298
- }
299
- }
300
- `;
1
+ import { css } from 'https://offshoot.prod.archive.org/lit.js';
2
+
3
+ export default css`
4
+ button:focus,
5
+ input:focus {
6
+ outline: none;
7
+ }
8
+
9
+ nav {
10
+ position: relative;
11
+ display: flex;
12
+ height: 4rem;
13
+ grid-template-areas: 'hamburger empty heart search user';
14
+ -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem 4rem;
15
+ grid-template-columns: 4rem auto 4rem 4rem 4rem;
16
+ -ms-grid-rows: 100%;
17
+ grid-template-rows: 100%;
18
+ background: var(--primaryNavBg);
19
+ border-bottom: 1px solid var(--primaryNavBottomBorder);
20
+ }
21
+
22
+ nav.hide-search {
23
+ grid-template-areas: 'hamburger empty heart user';
24
+ -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem;
25
+ grid-template-columns: 4rem auto 4rem 4rem;
26
+ }
27
+
28
+ .right-side-section {
29
+ display: flex;
30
+ margin-left: auto;
31
+ user-select: none;
32
+ }
33
+ button {
34
+ background: none;
35
+ color: inherit;
36
+ border: none;
37
+ font: inherit;
38
+ cursor: pointer;
39
+ }
40
+
41
+ .branding {
42
+ position: static;
43
+ float: left;
44
+ margin: 0 !important;
45
+ padding: 0 5px 0 10px;
46
+ -webkit-transform: translate(0, 0);
47
+ -ms-transform: translate(0, 0);
48
+ transform: translate(0, 0);
49
+ }
50
+
51
+ slot,
52
+ .branding {
53
+ display: flex;
54
+ justify-content: left;
55
+ align-items: center;
56
+ }
57
+
58
+ media-menu {
59
+ grid-column-start: hamburger-start;
60
+ grid-column-end: user-end;
61
+ }
62
+
63
+ .ia-logo {
64
+ height: 3rem;
65
+ width: 2.7rem;
66
+ display: inline-block;
67
+ }
68
+ .ia-wordmark {
69
+ height: 3rem;
70
+ width: 9.5rem;
71
+ }
72
+ .ia-logo,
73
+ .ia-wordmark {
74
+ margin-right: 5px;
75
+ }
76
+
77
+ .hamburger {
78
+ -ms-grid-row: 1;
79
+ -ms-grid-column: 1;
80
+ grid-area: hamburger;
81
+ padding: 0;
82
+ }
83
+ .hamburger svg {
84
+ height: 4rem;
85
+ width: 4rem;
86
+ fill: var(--activeColor);
87
+ }
88
+
89
+ .mobile-donate-link {
90
+ display: inline-block;
91
+ }
92
+ .mobile-donate-link svg {
93
+ height: 4rem;
94
+ width: 4rem;
95
+ }
96
+ .mobile-donate-link .fill-color {
97
+ fill: rgb(255, 0, 0);
98
+ }
99
+
100
+ .sr-only {
101
+ position: absolute;
102
+ width: 1px;
103
+ height: 1px;
104
+ margin: -1px;
105
+ padding: 0;
106
+ border: 0;
107
+ overflow: hidden;
108
+ white-space: nowrap;
109
+ clip: rect(1px, 1px, 1px, 1px);
110
+ -webkit-clip-path: inset(50%);
111
+ clip-path: inset(50%);
112
+ user-select: none;
113
+ }
114
+
115
+ .search-trigger {
116
+ padding: 0;
117
+ }
118
+ .search-trigger svg {
119
+ height: 4rem;
120
+ width: 4rem;
121
+ }
122
+ .search-trigger .fill-color {
123
+ fill: var(--iconFill);
124
+ }
125
+
126
+ .search-activated {
127
+ position: relative;
128
+ z-index: 3;
129
+ }
130
+
131
+ .upload {
132
+ display: none;
133
+ }
134
+
135
+ .upload span {
136
+ display: none;
137
+ }
138
+
139
+ .upload svg {
140
+ height: 3rem;
141
+ width: 3rem;
142
+ }
143
+
144
+ .screen-name {
145
+ display: none;
146
+ font-size: 1.3rem;
147
+ vertical-align: middle;
148
+ text-transform: uppercase;
149
+ }
150
+
151
+ .user-menu {
152
+ color: var(--lightTextColor);
153
+ padding: 0.5rem;
154
+ height: 100%;
155
+ }
156
+
157
+ button.user-menu:hover,
158
+ button.user-menu:focus {
159
+ color: var(--linkHoverColor);
160
+ outline: none;
161
+ }
162
+
163
+ .user-menu.active {
164
+ border-radius: 1rem 1rem 0 0;
165
+ background: var(--activeButtonBg);
166
+ }
167
+
168
+ .user-menu img {
169
+ display: block;
170
+ width: 3rem;
171
+ height: 3rem;
172
+ }
173
+
174
+ .link-home {
175
+ text-decoration: none;
176
+ display: inline-flex;
177
+ }
178
+ a.link-home:focus,
179
+ a.link-home:focus-visible {
180
+ outline-offset: 1px;
181
+ }
182
+
183
+ @media only screen and (min-width: 890px) and (max-device-width: 905px) {
184
+ .branding.second-logo {
185
+ padding-right: 0;
186
+ }
187
+ }
188
+
189
+ @media (min-width: 906px) {
190
+ .branding.second-logo {
191
+ padding-right: 20px;
192
+ }
193
+ }
194
+
195
+ @media (max-width: 889px) {
196
+ slot[name='opt-sec-logo'] {
197
+ display: none;
198
+ }
199
+
200
+ .right-side-section {
201
+ display: initial;
202
+ }
203
+ .right-side-section .user-info {
204
+ float: right;
205
+ }
206
+ }
207
+
208
+ @media (min-width: 890px) {
209
+ :host {
210
+ --userIconWidth: 3.2rem;
211
+ --userIconHeight: 3.2rem;
212
+ }
213
+
214
+ nav {
215
+ display: flex;
216
+ z-index: 4;
217
+ height: 5rem;
218
+ padding-right: 1.5rem;
219
+ }
220
+
221
+ slot[name='opt-sec-logo-mobile'] {
222
+ display: none;
223
+ }
224
+
225
+ .ia-logo,
226
+ .ia-wordmark {
227
+ margin-right: 10px;
228
+ }
229
+
230
+ .hamburger,
231
+ .search-trigger,
232
+ .mobile-donate-link {
233
+ display: none;
234
+ }
235
+
236
+ .user-info {
237
+ display: block;
238
+ float: right;
239
+ vertical-align: middle;
240
+ height: 100%;
241
+ }
242
+
243
+ .user-info .user-menu img {
244
+ height: 3rem;
245
+ width: 3rem;
246
+ margin-right: 0.5rem;
247
+ }
248
+
249
+ .user-menu {
250
+ padding: 1rem 0.5rem;
251
+ }
252
+ .user-menu.active {
253
+ background: transparent;
254
+ }
255
+
256
+ .user-menu img {
257
+ display: inline-block;
258
+ vertical-align: middle;
259
+ margin-right: 0.5rem;
260
+ }
261
+
262
+ .upload {
263
+ display: block;
264
+ padding: 1rem 0.5rem;
265
+ float: right;
266
+ font-size: 1.4rem;
267
+ text-transform: uppercase;
268
+ text-decoration: none;
269
+ color: var(--lightTextColor);
270
+ }
271
+ .upload:active,
272
+ .upload:focus,
273
+ .upload:hover {
274
+ color: var(--linkHoverColor);
275
+ }
276
+ .upload:focus-visible {
277
+ outline: none;
278
+ }
279
+
280
+ .upload svg {
281
+ vertical-align: middle;
282
+ fill: var(--iconFill);
283
+ }
284
+
285
+ .upload:hover svg,
286
+ .upload:focus svg,
287
+ .upload:active svg {
288
+ fill: var(--linkHoverColor);
289
+ }
290
+
291
+ nav-search {
292
+ float: right;
293
+ margin-left: 1rem;
294
+ }
295
+
296
+ }
297
+
298
+ @media (min-width: 990px) {
299
+ .screen-name {
300
+ display: inline-block;
301
+ text-overflow: ellipsis;
302
+ overflow: hidden;
303
+ white-space: nowrap;
304
+ max-width: 165px;
305
+ }
306
+
307
+ .upload span {
308
+ display: inline;
309
+ }
310
+ }
311
+ `;