@internetarchive/ia-topnav 1.4.1 → 2.0.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 (68) hide show
  1. package/.prettierignore +1 -1
  2. package/LICENSE +661 -661
  3. package/README.md +147 -147
  4. package/demo/index.html +28 -28
  5. package/dist/src/data/menus.js +0 -2
  6. package/dist/src/data/menus.js.map +1 -1
  7. package/dist/src/ia-topnav.d.ts +7 -10
  8. package/dist/src/ia-topnav.js +95 -133
  9. package/dist/src/ia-topnav.js.map +1 -1
  10. package/dist/src/login-button.js +17 -17
  11. package/dist/src/login-button.js.map +1 -1
  12. package/dist/src/models.d.ts +0 -4
  13. package/dist/src/models.js.map +1 -1
  14. package/dist/src/primary-nav.d.ts +5 -4
  15. package/dist/src/primary-nav.js +98 -119
  16. package/dist/src/primary-nav.js.map +1 -1
  17. package/dist/src/styles/ia-topnav.js +82 -87
  18. package/dist/src/styles/ia-topnav.js.map +1 -1
  19. package/dist/src/styles/primary-nav.js +353 -308
  20. package/dist/src/styles/primary-nav.js.map +1 -1
  21. package/dist/test/ia-topnav.test.js +27 -69
  22. package/dist/test/ia-topnav.test.js.map +1 -1
  23. package/dist/test/primary-nav.test.js +38 -9
  24. package/dist/test/primary-nav.test.js.map +1 -1
  25. package/eslint.config.mjs +53 -53
  26. package/package.json +72 -72
  27. package/prettier.config.js +9 -9
  28. package/src/data/menus.ts +650 -652
  29. package/src/ia-topnav.ts +318 -366
  30. package/src/login-button.ts +78 -78
  31. package/src/models.ts +58 -63
  32. package/src/primary-nav.ts +277 -296
  33. package/src/styles/ia-topnav.ts +85 -90
  34. package/src/styles/primary-nav.ts +356 -311
  35. package/ssl/server.key +28 -28
  36. package/test/ia-topnav.test.ts +282 -343
  37. package/test/primary-nav.test.ts +135 -94
  38. package/tsconfig.json +31 -31
  39. package/web-dev-server.config.mjs +32 -32
  40. package/web-test-runner.config.mjs +41 -41
  41. package/dist/src/lib/location-handler.d.ts +0 -1
  42. package/dist/src/lib/location-handler.js +0 -5
  43. package/dist/src/lib/location-handler.js.map +0 -1
  44. package/dist/src/nav-search.d.ts +0 -19
  45. package/dist/src/nav-search.js +0 -127
  46. package/dist/src/nav-search.js.map +0 -1
  47. package/dist/src/search-menu.d.ts +0 -20
  48. package/dist/src/search-menu.js +0 -162
  49. package/dist/src/search-menu.js.map +0 -1
  50. package/dist/src/styles/nav-search.d.ts +0 -2
  51. package/dist/src/styles/nav-search.js +0 -136
  52. package/dist/src/styles/nav-search.js.map +0 -1
  53. package/dist/src/styles/search-menu.d.ts +0 -2
  54. package/dist/src/styles/search-menu.js +0 -118
  55. package/dist/src/styles/search-menu.js.map +0 -1
  56. package/dist/test/nav-search.test.d.ts +0 -1
  57. package/dist/test/nav-search.test.js +0 -47
  58. package/dist/test/nav-search.test.js.map +0 -1
  59. package/dist/test/search-menu.test.d.ts +0 -1
  60. package/dist/test/search-menu.test.js +0 -42
  61. package/dist/test/search-menu.test.js.map +0 -1
  62. package/src/lib/location-handler.ts +0 -5
  63. package/src/nav-search.ts +0 -117
  64. package/src/search-menu.ts +0 -156
  65. package/src/styles/nav-search.ts +0 -136
  66. package/src/styles/search-menu.ts +0 -118
  67. package/test/nav-search.test.ts +0 -70
  68. package/test/search-menu.test.ts +0 -58
@@ -1,162 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { html } from 'lit';
3
- import { customElement, property } from 'lit/decorators.js';
4
- import TrackedElement from './tracked-element';
5
- import searchMenuCSS from './styles/search-menu';
6
- import formatUrl from './lib/format-url';
7
- import { defaultTopNavConfig } from './data/menus';
8
- let SearchMenu = class SearchMenu extends TrackedElement {
9
- constructor() {
10
- super(...arguments);
11
- this.baseHost = '';
12
- this.config = defaultTopNavConfig;
13
- this.hideSearch = false;
14
- this.openMenu = '';
15
- this.searchMenuOpen = false;
16
- this.searchMenuAnimate = false;
17
- this.selectedSearchType = '';
18
- }
19
- static get styles() {
20
- return searchMenuCSS;
21
- }
22
- firstUpdated() {
23
- var _a;
24
- (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.addEventListener('keydown', (e) => this.handleKeyDownEvent(e));
25
- }
26
- disconnectedCallback() {
27
- var _a;
28
- // Clean up event listener when the element is removed
29
- (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.removeEventListener('keydown', (e) => this.handleKeyDownEvent(e));
30
- }
31
- handleKeyDownEvent(e) {
32
- if (!this.shadowRoot)
33
- return;
34
- const searchTypes = this.shadowRoot.querySelectorAll('.search-menu-inner label input[type=radio]');
35
- const length = searchTypes.length - 1;
36
- if (!length)
37
- return;
38
- const searchTypeHandler = (index) => {
39
- e.preventDefault();
40
- const searchType = searchTypes[index];
41
- searchType.checked = true;
42
- searchType.dispatchEvent(new Event('change'));
43
- searchType.focus();
44
- };
45
- if (e.key === 'Home') {
46
- searchTypeHandler(0);
47
- }
48
- else if (e.key === 'End') {
49
- searchTypeHandler(length);
50
- }
51
- }
52
- selectSearchType(e) {
53
- const target = e.target;
54
- this.selectedSearchType = target.value;
55
- }
56
- searchInChanged(e) {
57
- const target = e.target;
58
- this.dispatchEvent(new CustomEvent('searchInChanged', {
59
- detail: {
60
- searchIn: target.value,
61
- },
62
- }));
63
- }
64
- get searchTypesTemplate() {
65
- const searchTypes = [
66
- {
67
- label: 'metadata',
68
- value: '',
69
- isDefault: true,
70
- },
71
- {
72
- label: 'text contents',
73
- value: 'TXT',
74
- },
75
- {
76
- label: 'TV news captions',
77
- value: 'TV',
78
- },
79
- {
80
- label: 'radio transcripts',
81
- value: 'RADIO',
82
- },
83
- {
84
- label: 'archived web sites',
85
- value: 'WEB',
86
- },
87
- ].map(({ value, label, isDefault }) => {
88
- if (this.config.hiddenSearchOptions &&
89
- this.config.hiddenSearchOptions.includes(value)) {
90
- return html ``;
91
- }
92
- return html `
93
- <label @click="${this.selectSearchType}">
94
- <input
95
- form="nav-search"
96
- type="radio"
97
- name="sin"
98
- value="${value}"
99
- ?checked=${isDefault}
100
- ?disabled=${!this.openMenu}
101
- @change=${this.searchInChanged}
102
- />
103
- Search ${label}
104
- </label>
105
- `;
106
- });
107
- return searchTypes;
108
- }
109
- get menuClass() {
110
- return this.openMenu === 'search' ? 'open' : 'closed';
111
- }
112
- render() {
113
- if (this.hideSearch) {
114
- return html ``;
115
- }
116
- return html `
117
- <div class="menu-wrapper">
118
- <div
119
- class="search-menu-inner tx-slide ${this.menuClass}"
120
- aria-hidden="${!this.openMenu}"
121
- >
122
- ${this.searchTypesTemplate}
123
- <a
124
- class="advanced-search"
125
- href="${formatUrl('/advancedsearch.php', this.baseHost)}"
126
- @click=${this.trackClick}
127
- tabindex=${this.openMenu ? '0' : '-1'}
128
- data-event-click-tracking="${this.config
129
- .eventCategory}|NavAdvancedSearch"
130
- >Advanced Search</a
131
- >
132
- </div>
133
- </div>
134
- `;
135
- }
136
- };
137
- __decorate([
138
- property({ type: String })
139
- ], SearchMenu.prototype, "baseHost", void 0);
140
- __decorate([
141
- property({ type: Object })
142
- ], SearchMenu.prototype, "config", void 0);
143
- __decorate([
144
- property({ type: Boolean })
145
- ], SearchMenu.prototype, "hideSearch", void 0);
146
- __decorate([
147
- property({ type: String })
148
- ], SearchMenu.prototype, "openMenu", void 0);
149
- __decorate([
150
- property({ type: Boolean })
151
- ], SearchMenu.prototype, "searchMenuOpen", void 0);
152
- __decorate([
153
- property({ type: Boolean })
154
- ], SearchMenu.prototype, "searchMenuAnimate", void 0);
155
- __decorate([
156
- property({ type: String })
157
- ], SearchMenu.prototype, "selectedSearchType", void 0);
158
- SearchMenu = __decorate([
159
- customElement('search-menu')
160
- ], SearchMenu);
161
- export { SearchMenu };
162
- //# sourceMappingURL=search-menu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-menu.js","sourceRoot":"","sources":["../../src/search-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport TrackedElement from './tracked-element';\nimport searchMenuCSS from './styles/search-menu';\nimport formatUrl from './lib/format-url';\nimport { IATopNavConfig } from './models';\nimport { defaultTopNavConfig } from './data/menus';\n\n@customElement('search-menu')\nexport class SearchMenu extends TrackedElement {\n @property({ type: String }) baseHost = '';\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n @property({ type: Boolean }) hideSearch = false;\n @property({ type: String }) openMenu = '';\n @property({ type: Boolean }) searchMenuOpen = false;\n @property({ type: Boolean }) searchMenuAnimate = false;\n @property({ type: String }) selectedSearchType = '';\n\n static get styles() {\n return searchMenuCSS;\n }\n\n firstUpdated() {\n this.shadowRoot?.addEventListener('keydown', (e) =>\n this.handleKeyDownEvent(e as KeyboardEvent),\n );\n }\n\n disconnectedCallback() {\n // Clean up event listener when the element is removed\n this.shadowRoot?.removeEventListener('keydown', (e) =>\n this.handleKeyDownEvent(e as KeyboardEvent),\n );\n }\n\n private handleKeyDownEvent(e: KeyboardEvent) {\n if (!this.shadowRoot) return;\n\n const searchTypes = this.shadowRoot.querySelectorAll(\n '.search-menu-inner label input[type=radio]',\n ) as NodeListOf<HTMLInputElement>;\n\n const length = searchTypes.length - 1;\n if (!length) return;\n\n const searchTypeHandler = (index: number) => {\n e.preventDefault();\n const searchType = searchTypes[index];\n searchType.checked = true;\n searchType.dispatchEvent(new Event('change'));\n searchType.focus();\n };\n\n if (e.key === 'Home') {\n searchTypeHandler(0);\n } else if (e.key === 'End') {\n searchTypeHandler(length);\n }\n }\n\n selectSearchType(e: Event) {\n const target = e.target as HTMLInputElement;\n this.selectedSearchType = target.value;\n }\n\n searchInChanged(e: InputEvent) {\n const target = e.target as HTMLInputElement;\n this.dispatchEvent(\n new CustomEvent('searchInChanged', {\n detail: {\n searchIn: target.value,\n },\n }),\n );\n }\n\n get searchTypesTemplate() {\n const searchTypes = [\n {\n label: 'metadata',\n value: '',\n isDefault: true,\n },\n {\n label: 'text contents',\n value: 'TXT',\n },\n {\n label: 'TV news captions',\n value: 'TV',\n },\n {\n label: 'radio transcripts',\n value: 'RADIO',\n },\n {\n label: 'archived web sites',\n value: 'WEB',\n },\n ].map(({ value, label, isDefault }) => {\n if (\n this.config.hiddenSearchOptions &&\n this.config.hiddenSearchOptions.includes(value)\n ) {\n return html``;\n }\n return html`\n <label @click=\"${this.selectSearchType}\">\n <input\n form=\"nav-search\"\n type=\"radio\"\n name=\"sin\"\n value=\"${value}\"\n ?checked=${isDefault}\n ?disabled=${!this.openMenu}\n @change=${this.searchInChanged}\n />\n Search ${label}\n </label>\n `;\n });\n\n return searchTypes;\n }\n\n get menuClass() {\n return this.openMenu === 'search' ? 'open' : 'closed';\n }\n\n render() {\n if (this.hideSearch) {\n return html``;\n }\n\n return html`\n <div class=\"menu-wrapper\">\n <div\n class=\"search-menu-inner tx-slide ${this.menuClass}\"\n aria-hidden=\"${!this.openMenu}\"\n >\n ${this.searchTypesTemplate}\n <a\n class=\"advanced-search\"\n href=\"${formatUrl('/advancedsearch.php', this.baseHost)}\"\n @click=${this.trackClick}\n tabindex=${this.openMenu ? '0' : '-1'}\n data-event-click-tracking=\"${this.config\n .eventCategory}|NavAdvancedSearch\"\n >Advanced Search</a\n >\n </div>\n </div>\n `;\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- declare const _default: import("lit").CSSResult;
2
- export default _default;
@@ -1,136 +0,0 @@
1
- import { css } from 'lit';
2
- export default css `
3
- input[type='text'] {
4
- color: var(--grey13);
5
- }
6
-
7
- input:focus {
8
- outline: none;
9
- }
10
- button {
11
- background: none;
12
- color: inherit;
13
- border: none;
14
- font: inherit;
15
- cursor: pointer;
16
- }
17
- button:focus {
18
- outline: none;
19
- }
20
- .search {
21
- padding-top: 0;
22
- margin-right: 0.5rem;
23
- }
24
- .search svg {
25
- position: relative;
26
- fill: var(--activeSearchColor);
27
- }
28
- .search-activated {
29
- display: -webkit-box;
30
- display: -ms-flexbox;
31
- display: flex;
32
- position: absolute;
33
- top: 0;
34
- right: 4rem;
35
- bottom: 0;
36
- left: 4rem;
37
- z-index: 3;
38
- padding: 0.5rem 0.2rem;
39
- border-radius: 1rem 1rem 0 0;
40
- background: var(--searchActiveBg);
41
- }
42
- .search-inactive {
43
- display: none;
44
- }
45
- .search-activated .highlight,
46
- .search-activated .search {
47
- background: var(--searchActiveInputBg);
48
- border-radius: 0.5rem;
49
- }
50
- .search-activated .highlight {
51
- display: -webkit-box;
52
- display: -ms-flexbox;
53
- display: flex;
54
- width: 100%;
55
- margin: 0 0.5rem;
56
- }
57
- .search-activated .search {
58
- height: 100%;
59
- padding: 0;
60
- margin-right: 0;
61
- -ms-flex-item-align: center;
62
- -ms-grid-row-align: center;
63
- align-self: center;
64
- }
65
- .search-activated .search svg {
66
- height: 3rem;
67
- width: 3rem;
68
- }
69
- .search-activated .search-field {
70
- width: 100%;
71
- height: 100%;
72
- box-sizing: border-box;
73
- padding-left: 1rem;
74
- border-radius: 0.5rem;
75
- border: none;
76
- font-size: 1.6rem;
77
- text-align: center;
78
- }
79
- .search-activated .search-field:focus {
80
- outline: none;
81
- }
82
- @keyframes fade-in {
83
- 0% {
84
- opacity: 0;
85
- }
86
- 100% {
87
- opacity: 1;
88
- }
89
- }
90
- .fade-in {
91
- animation: fade-in 0.2s forwards;
92
- }
93
-
94
- @media (min-width: 890px) {
95
- .search svg {
96
- display: inline;
97
- width: 2.8rem;
98
- height: 2.8rem;
99
- vertical-align: -14px;
100
- }
101
- .search path {
102
- fill: var(--desktopSearchIconFill);
103
- }
104
-
105
- .search-inactive,
106
- .search-activated {
107
- display: block;
108
- position: static;
109
- padding: 1.1rem 0.2rem;
110
- background: transparent;
111
- }
112
-
113
- .search-activated .highlight {
114
- width: 13rem;
115
- height: 2.8rem;
116
- -webkit-box-orient: horizontal;
117
- -webkit-box-direction: reverse;
118
- -ms-flex-direction: row-reverse;
119
- flex-direction: row-reverse;
120
- }
121
-
122
- .search-activated .search-field {
123
- width: calc(100% - 28px);
124
- height: 100%;
125
- padding-left: 0;
126
- font-size: 1.4rem;
127
- text-align: left;
128
- }
129
-
130
- .search-activated .search svg {
131
- width: 2.8rem;
132
- height: 2.8rem;
133
- }
134
- }
135
- `;
136
- //# sourceMappingURL=nav-search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nav-search.js","sourceRoot":"","sources":["../../../src/styles/nav-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqIjB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport default css`\n input[type='text'] {\n color: var(--grey13);\n }\n\n input:focus {\n outline: none;\n }\n button {\n background: none;\n color: inherit;\n border: none;\n font: inherit;\n cursor: pointer;\n }\n button:focus {\n outline: none;\n }\n .search {\n padding-top: 0;\n margin-right: 0.5rem;\n }\n .search svg {\n position: relative;\n fill: var(--activeSearchColor);\n }\n .search-activated {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: 0;\n right: 4rem;\n bottom: 0;\n left: 4rem;\n z-index: 3;\n padding: 0.5rem 0.2rem;\n border-radius: 1rem 1rem 0 0;\n background: var(--searchActiveBg);\n }\n .search-inactive {\n display: none;\n }\n .search-activated .highlight,\n .search-activated .search {\n background: var(--searchActiveInputBg);\n border-radius: 0.5rem;\n }\n .search-activated .highlight {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n margin: 0 0.5rem;\n }\n .search-activated .search {\n height: 100%;\n padding: 0;\n margin-right: 0;\n -ms-flex-item-align: center;\n -ms-grid-row-align: center;\n align-self: center;\n }\n .search-activated .search svg {\n height: 3rem;\n width: 3rem;\n }\n .search-activated .search-field {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n padding-left: 1rem;\n border-radius: 0.5rem;\n border: none;\n font-size: 1.6rem;\n text-align: center;\n }\n .search-activated .search-field:focus {\n outline: none;\n }\n @keyframes fade-in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n .fade-in {\n animation: fade-in 0.2s forwards;\n }\n\n @media (min-width: 890px) {\n .search svg {\n display: inline;\n width: 2.8rem;\n height: 2.8rem;\n vertical-align: -14px;\n }\n .search path {\n fill: var(--desktopSearchIconFill);\n }\n\n .search-inactive,\n .search-activated {\n display: block;\n position: static;\n padding: 1.1rem 0.2rem;\n background: transparent;\n }\n\n .search-activated .highlight {\n width: 13rem;\n height: 2.8rem;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n -ms-flex-direction: row-reverse;\n flex-direction: row-reverse;\n }\n\n .search-activated .search-field {\n width: calc(100% - 28px);\n height: 100%;\n padding-left: 0;\n font-size: 1.4rem;\n text-align: left;\n }\n\n .search-activated .search svg {\n width: 2.8rem;\n height: 2.8rem;\n }\n }\n`;\n"]}
@@ -1,2 +0,0 @@
1
- declare const _default: import("lit").CSSResult;
2
- export default _default;
@@ -1,118 +0,0 @@
1
- import { css } from 'lit';
2
- export default css `
3
- .menu-wrapper {
4
- position: relative;
5
- }
6
-
7
- button:focus,
8
- input:focus {
9
- outline-color: var(--linkColor);
10
- outline-width: 0.16rem;
11
- outline-style: auto;
12
- outline-offset: 2px !important;
13
- }
14
- .search-menu-inner {
15
- position: absolute;
16
- right: 0;
17
- left: 0;
18
- z-index: 4;
19
- padding: 0 4.5rem;
20
- font-size: 1.6rem;
21
- background-color: var(--searchMenuBg);
22
- }
23
- .tx-slide {
24
- overflow: hidden;
25
- transition-property: top;
26
- transition-duration: 0.2s;
27
- transition-timing-function: ease;
28
- }
29
- .initial,
30
- .closed {
31
- top: var(--topOffset, -1500px);
32
- }
33
- .closed {
34
- transition-duration: 0.2s;
35
- }
36
-
37
- label,
38
- a {
39
- padding: 1rem;
40
- display: block;
41
- }
42
-
43
- .advanced-search {
44
- text-decoration: underline;
45
- color: inherit;
46
- line-height: normal;
47
- padding: 0.5rem;
48
- margin-top: 5px;
49
- }
50
-
51
- .advanced-search:hover {
52
- text-decoration: none;
53
- }
54
-
55
- @media (min-width: 890px) {
56
- .search-menu-inner {
57
- overflow: visible;
58
- right: 2rem;
59
- left: auto;
60
- z-index: 5;
61
- padding: 1rem 2rem;
62
- transition: opacity 0.2s ease-in-out;
63
- font-size: 1.4rem;
64
- color: var(--inverseTextColor);
65
- border-radius: 2px;
66
- background: var(--primaryTextColor);
67
- box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.15);
68
- }
69
-
70
- .search-menu-inner:after {
71
- position: absolute;
72
- right: 7px;
73
- top: -7px;
74
- width: 12px;
75
- height: 7px;
76
- box-sizing: border-box;
77
- color: #fff;
78
- content: '';
79
- border-bottom: 7px solid currentColor;
80
- border-left: 6px solid transparent;
81
- border-right: 6px solid transparent;
82
- }
83
-
84
- .advanced-search {
85
- text-decoration: none;
86
- color: var(--linkColor);
87
- }
88
-
89
- .advanced-search:hover {
90
- text-decoration: underline;
91
- }
92
-
93
- .initial,
94
- .closed {
95
- opacity: 0;
96
- transition-duration: 0.2s;
97
- }
98
-
99
- .open {
100
- opacity: 1;
101
- }
102
-
103
- label {
104
- padding: 0;
105
- font-weight: normal;
106
- margin: 0;
107
- }
108
-
109
- label + label {
110
- padding-top: 7px;
111
- }
112
-
113
- a {
114
- padding: 1rem 0 0 0;
115
- }
116
- }
117
- `;
118
- //# sourceMappingURL=search-menu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-menu.js","sourceRoot":"","sources":["../../../src/styles/search-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmHjB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport default css`\n .menu-wrapper {\n position: relative;\n }\n\n button:focus,\n input:focus {\n outline-color: var(--linkColor);\n outline-width: 0.16rem;\n outline-style: auto;\n outline-offset: 2px !important;\n }\n .search-menu-inner {\n position: absolute;\n right: 0;\n left: 0;\n z-index: 4;\n padding: 0 4.5rem;\n font-size: 1.6rem;\n background-color: var(--searchMenuBg);\n }\n .tx-slide {\n overflow: hidden;\n transition-property: top;\n transition-duration: 0.2s;\n transition-timing-function: ease;\n }\n .initial,\n .closed {\n top: var(--topOffset, -1500px);\n }\n .closed {\n transition-duration: 0.2s;\n }\n\n label,\n a {\n padding: 1rem;\n display: block;\n }\n\n .advanced-search {\n text-decoration: underline;\n color: inherit;\n line-height: normal;\n padding: 0.5rem;\n margin-top: 5px;\n }\n\n .advanced-search:hover {\n text-decoration: none;\n }\n\n @media (min-width: 890px) {\n .search-menu-inner {\n overflow: visible;\n right: 2rem;\n left: auto;\n z-index: 5;\n padding: 1rem 2rem;\n transition: opacity 0.2s ease-in-out;\n font-size: 1.4rem;\n color: var(--inverseTextColor);\n border-radius: 2px;\n background: var(--primaryTextColor);\n box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.15);\n }\n\n .search-menu-inner:after {\n position: absolute;\n right: 7px;\n top: -7px;\n width: 12px;\n height: 7px;\n box-sizing: border-box;\n color: #fff;\n content: '';\n border-bottom: 7px solid currentColor;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n }\n\n .advanced-search {\n text-decoration: none;\n color: var(--linkColor);\n }\n\n .advanced-search:hover {\n text-decoration: underline;\n }\n\n .initial,\n .closed {\n opacity: 0;\n transition-duration: 0.2s;\n }\n\n .open {\n opacity: 1;\n }\n\n label {\n padding: 0;\n font-weight: normal;\n margin: 0;\n }\n\n label + label {\n padding-top: 7px;\n }\n\n a {\n padding: 1rem 0 0 0;\n }\n }\n`;\n"]}
@@ -1 +0,0 @@
1
- import '../src/nav-search';
@@ -1,47 +0,0 @@
1
- import { html, fixture, expect } from '@open-wc/testing';
2
- import sinon from 'sinon';
3
- import '../src/nav-search';
4
- const component = html `<nav-search></nav-search>`;
5
- describe('<nav-search>', () => {
6
- it('defaults to closed', async () => {
7
- const el = await fixture(component);
8
- expect(el.open).to.be.false;
9
- });
10
- it('does not allow search form to submit if query empty', async () => {
11
- const el = await fixture(component);
12
- // const result = el.search({
13
- // preventDefault: () => {},
14
- // });
15
- // expect(result).to.be.false;
16
- });
17
- it('redirects to the TV details page when search inside is TV', async () => {
18
- const query = 'bananas';
19
- const submitEvent = {
20
- type: 'submit',
21
- preventDefault: () => { },
22
- };
23
- const locationHandler = sinon.fake();
24
- const el = await fixture(html `<nav-search .locationHandler=${locationHandler}></nav-search>`);
25
- el.searchIn = 'TV';
26
- await el.updateComplete;
27
- // el.shadowRoot.querySelector('[name=query]').value = query;
28
- // el.search(submitEvent);
29
- // expect(locationHandler.callCount).to.equal(1);
30
- // expect(locationHandler.firstArg).to.contain(`/details/tv?q=${query}`);
31
- });
32
- it('prefills the search query when present in config', async () => {
33
- var _a;
34
- const el = await fixture(html `<nav-search searchQuery="bananas"></nav-search>`);
35
- const queryInput = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('[name="query"]');
36
- expect(queryInput.value).to.equal('bananas');
37
- });
38
- it('conditionally renders `sin` input based on `searchIn` truthiness', async () => {
39
- var _a, _b;
40
- const el = await fixture(component);
41
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('[name="sin"]')).to.be.null;
42
- el.searchIn = 'TV';
43
- await el.updateComplete;
44
- expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('[name="sin"]')).not.to.be.null;
45
- });
46
- });
47
- //# sourceMappingURL=nav-search.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nav-search.test.js","sourceRoot":"","sources":["../../test/nav-search.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,mBAAmB,CAAC;AAG3B,MAAM,SAAS,GAAG,IAAI,CAAA,2BAA2B,CAAC;AAElD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAY,SAAS,CAAC,CAAC;QAE/C,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAY,SAAS,CAAC,CAAC;QAE/C,6BAA6B;QAC7B,8BAA8B;QAC9B,MAAM;QAEN,8BAA8B;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,QAAQ;YACd,cAAc,EAAE,GAAG,EAAE,GAAE,CAAC;SACzB,CAAC;QACF,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA,gCAAgC,eAAe,gBAAgB,CACpE,CAAC;QAEF,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;QAEnB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,6DAA6D;QAC7D,0BAA0B;QAE1B,iDAAiD;QACjD,yEAAyE;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;;QAChE,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA,iDAAiD,CACtD,CAAC;QAEF,MAAM,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAC7C,gBAAgB,CACG,CAAC;QAEtB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;;QAChF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAY,SAAS,CAAC,CAAC;QAE/C,MAAM,CAAC,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAEhE,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;QACnB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\nimport sinon from 'sinon';\n\nimport '../src/nav-search';\nimport { NavSearch } from '../src/nav-search';\n\nconst component = html`<nav-search></nav-search>`;\n\ndescribe('<nav-search>', () => {\n it('defaults to closed', async () => {\n const el = await fixture<NavSearch>(component);\n\n expect(el.open).to.be.false;\n });\n\n it('does not allow search form to submit if query empty', async () => {\n const el = await fixture<NavSearch>(component);\n\n // const result = el.search({\n // preventDefault: () => {},\n // });\n\n // expect(result).to.be.false;\n });\n\n it('redirects to the TV details page when search inside is TV', async () => {\n const query = 'bananas';\n const submitEvent = {\n type: 'submit',\n preventDefault: () => {},\n };\n const locationHandler = sinon.fake();\n const el = await fixture<NavSearch>(\n html`<nav-search .locationHandler=${locationHandler}></nav-search>`,\n );\n\n el.searchIn = 'TV';\n\n await el.updateComplete;\n\n // el.shadowRoot.querySelector('[name=query]').value = query;\n // el.search(submitEvent);\n\n // expect(locationHandler.callCount).to.equal(1);\n // expect(locationHandler.firstArg).to.contain(`/details/tv?q=${query}`);\n });\n\n it('prefills the search query when present in config', async () => {\n const el = await fixture<NavSearch>(\n html`<nav-search searchQuery=\"bananas\"></nav-search>`,\n );\n\n const queryInput = el.shadowRoot?.querySelector(\n '[name=\"query\"]',\n ) as HTMLInputElement;\n\n expect(queryInput.value).to.equal('bananas');\n });\n\n it('conditionally renders `sin` input based on `searchIn` truthiness', async () => {\n const el = await fixture<NavSearch>(component);\n\n expect(el.shadowRoot?.querySelector('[name=\"sin\"]')).to.be.null;\n\n el.searchIn = 'TV';\n await el.updateComplete;\n\n expect(el.shadowRoot?.querySelector('[name=\"sin\"]')).not.to.be.null;\n });\n});\n"]}
@@ -1 +0,0 @@
1
- import '../src/search-menu';
@@ -1,42 +0,0 @@
1
- import { html, fixture, expect } from '@open-wc/testing';
2
- import '../src/search-menu';
3
- const component = html `<search-menu></search-menu>`;
4
- describe('<search-menu>', () => {
5
- it('sets default properties', async () => {
6
- const el = await fixture(component);
7
- expect(el.searchMenuOpen).to.be.false;
8
- expect(el.searchMenuAnimate).to.be.false;
9
- expect(el.selectedSearchType).to.equal('');
10
- });
11
- it('sets selected search type', async () => {
12
- const el = await fixture(component);
13
- const value = 'text';
14
- const inputEvent = new InputEvent('input');
15
- Object.defineProperty(inputEvent, 'target', {
16
- value: {
17
- value,
18
- },
19
- writable: false,
20
- });
21
- el.selectSearchType(inputEvent);
22
- expect(el.selectedSearchType).to.equal(value);
23
- });
24
- it('renders with closed class if done animating', async () => {
25
- var _a, _b;
26
- const el = await fixture(component);
27
- el.searchMenuAnimate = true;
28
- await el.updateComplete;
29
- expect((_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.search-menu-inner')) === null || _b === void 0 ? void 0 : _b.classList.contains('closed')).to.be.true;
30
- });
31
- it('omits rendering of an option when hiddenSearchOptions has a value', async () => {
32
- const el = await fixture(component);
33
- const hiddenSearchOptions = ['WEB', 'RADIO'];
34
- el.config = { hiddenSearchOptions };
35
- await el.updateComplete;
36
- hiddenSearchOptions.forEach((value) => {
37
- var _a;
38
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`[value=${value}]`)).to.equal(null);
39
- });
40
- });
41
- });
42
- //# sourceMappingURL=search-menu.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-menu.test.js","sourceRoot":"","sources":["../../test/search-menu.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,oBAAoB,CAAC;AAG5B,MAAM,SAAS,GAAG,IAAI,CAAA,6BAA6B,CAAC;AAEpD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAa,SAAS,CAAC,CAAC;QAEhD,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACtC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAa,SAAS,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC;QAErB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE;YAC1C,KAAK,EAAE;gBACL,KAAK;aACN;YACD,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEhC,MAAM,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;;QAC3D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAa,SAAS,CAAC,CAAC;QAEhD,EAAE,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC5B,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CACJ,MAAA,MAAA,EAAE,CAAC,UAAU,0CACT,aAAa,CAAC,oBAAoB,CAAC,0CACnC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACjC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAa,SAAS,CAAC,CAAC;QAChD,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE7C,EAAE,CAAC,MAAM,GAAG,EAAE,mBAAmB,EAAE,CAAC;QACpC,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,mBAAmB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;;YACpC,MAAM,CAAC,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\n\nimport '../src/search-menu';\nimport { SearchMenu } from '../src/search-menu';\n\nconst component = html`<search-menu></search-menu>`;\n\ndescribe('<search-menu>', () => {\n it('sets default properties', async () => {\n const el = await fixture<SearchMenu>(component);\n\n expect(el.searchMenuOpen).to.be.false;\n expect(el.searchMenuAnimate).to.be.false;\n expect(el.selectedSearchType).to.equal('');\n });\n\n it('sets selected search type', async () => {\n const el = await fixture<SearchMenu>(component);\n const value = 'text';\n\n const inputEvent = new InputEvent('input');\n Object.defineProperty(inputEvent, 'target', {\n value: {\n value,\n },\n writable: false,\n });\n\n el.selectSearchType(inputEvent);\n\n expect(el.selectedSearchType).to.equal(value);\n });\n\n it('renders with closed class if done animating', async () => {\n const el = await fixture<SearchMenu>(component);\n\n el.searchMenuAnimate = true;\n await el.updateComplete;\n\n expect(\n el.shadowRoot\n ?.querySelector('.search-menu-inner')\n ?.classList.contains('closed'),\n ).to.be.true;\n });\n\n it('omits rendering of an option when hiddenSearchOptions has a value', async () => {\n const el = await fixture<SearchMenu>(component);\n const hiddenSearchOptions = ['WEB', 'RADIO'];\n\n el.config = { hiddenSearchOptions };\n await el.updateComplete;\n\n hiddenSearchOptions.forEach((value) => {\n expect(el.shadowRoot?.querySelector(`[value=${value}]`)).to.equal(null);\n });\n });\n});\n"]}
@@ -1,5 +0,0 @@
1
- /* istanbul ignore file */
2
-
3
- export default function (url: string) {
4
- window.location.href = url;
5
- }