@internetarchive/ia-topnav 1.3.19-webdev-7930.3 → 1.3.20-alpha1

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.
@@ -5,7 +5,7 @@ export declare class DesktopSubnav extends TrackedElement {
5
5
  baseHost: string;
6
6
  menuItems: IATopNavLink[];
7
7
  static get styles(): import("lit").CSSResult;
8
- get listItems(): typeof nothing | TemplateResult<1>[];
8
+ get listItems(): TemplateResult<1>[] | typeof nothing;
9
9
  static iconFor(title: string): TemplateResult;
10
10
  render(): TemplateResult<1>;
11
11
  }
@@ -15,6 +15,6 @@ export declare class MediaMenu extends LitElement {
15
15
  updated(props: PropertyValues): void;
16
16
  get mediaMenuOptionsTemplate(): import("lit").TemplateResult<1>[];
17
17
  get menuOpened(): boolean;
18
- get menuClass(): "closed" | "open";
18
+ get menuClass(): "open" | "closed";
19
19
  render(): import("lit").TemplateResult<1>;
20
20
  }
@@ -10,7 +10,7 @@ export declare class NavSearch extends TrackedElement {
10
10
  searchIn: string;
11
11
  searchQuery: string;
12
12
  private queryInput?;
13
- static get styles(): import("lit").CSSResult;
13
+ static get styles(): import("lit").CSSResult[];
14
14
  search(e: CustomEvent): boolean;
15
15
  toggleSearchMenu(): void;
16
16
  get searchInsideInput(): import("lit").TemplateResult<1> | typeof nothing;
@@ -6,6 +6,7 @@ import icons from './assets/img/icons';
6
6
  import formatUrl from './lib/format-url';
7
7
  import { customElement, property, query } from 'lit/decorators.js';
8
8
  import { defaultTopNavConfig } from './data/menus';
9
+ import { iaSronlyStyles } from '@internetarchive/ia-styles';
9
10
  let NavSearch = class NavSearch extends TrackedElement {
10
11
  constructor() {
11
12
  super(...arguments);
@@ -19,7 +20,7 @@ let NavSearch = class NavSearch extends TrackedElement {
19
20
  this.searchQuery = '';
20
21
  }
21
22
  static get styles() {
22
- return navSearchCSS;
23
+ return [navSearchCSS, iaSronlyStyles];
23
24
  }
24
25
  search(e) {
25
26
  var _a;
@@ -70,9 +71,11 @@ let NavSearch = class NavSearch extends TrackedElement {
70
71
  @submit=${this.search}
71
72
  data-event-submit-tracking="${(_a = this.config) === null || _a === void 0 ? void 0 : _a.eventCategory}|NavSearchSubmit"
72
73
  >
74
+ <label for="query" class="sr-only">Search the Archive</label>
73
75
  <input
74
76
  type="text"
75
77
  name="query"
78
+ id="query"
76
79
  class="search-field"
77
80
  placeholder="Search"
78
81
  autocomplete="off"
@@ -1 +1 @@
1
- {"version":3,"file":"nav-search.js","sourceRoot":"","sources":["../../src/nav-search.ts"],"names":[],"mappings":"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","sourcesContent":["import { nothing, html } from 'lit';\n\nimport TrackedElement from './tracked-element';\nimport navSearchCSS from './styles/nav-search';\nimport icons from './assets/img/icons';\nimport formatUrl from './lib/format-url';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { defaultTopNavConfig } from './data/menus';\nimport { IATopNavConfig } from './models';\n\n@customElement('nav-search')\nexport class NavSearch extends TrackedElement {\n @property({ type: String }) baseHost = '';\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n @property({ type: Object }) locationHandler = (url: string) => {};\n @property({ type: Boolean }) open = false;\n @property({ type: String }) openMenu = '';\n @property({ type: String }) searchIn = '';\n @property({ type: String }) searchQuery = '';\n\n @query('[name=query]') private queryInput?: HTMLInputElement;\n\n static get styles() {\n return navSearchCSS;\n }\n\n search(e: CustomEvent) {\n const query = this.queryInput?.value;\n\n if (!query) {\n e.preventDefault();\n return false;\n }\n\n // TV search points to a detail page with a q param instead\n if (this.searchIn === 'TV') {\n this.locationHandler(\n formatUrl(`/details/tv?q=${query}` as string & Location, this.baseHost),\n );\n e.preventDefault();\n return false;\n }\n\n this.trackSubmit(e);\n return true;\n }\n\n toggleSearchMenu() {\n if (this.openMenu === 'search') {\n return;\n }\n this.dispatchEvent(\n new CustomEvent('menuToggled', {\n detail: {\n menuName: 'search',\n },\n composed: true,\n bubbles: true,\n }),\n );\n }\n\n get searchInsideInput() {\n return this.searchIn\n ? html`<input type=\"hidden\" name=\"sin\" value=\"${this.searchIn}\" />`\n : nothing;\n }\n\n get searchEndpoint() {\n return '/search';\n }\n\n render() {\n const searchMenuClass = this.open ? 'flex' : 'search-inactive';\n\n return html`\n <div class=\"search-activated fade-in ${searchMenuClass}\">\n <form\n id=\"nav-search\"\n class=\"highlight\"\n .action=${formatUrl(\n this.searchEndpoint as string & Location,\n this.baseHost,\n )}\n method=\"get\"\n @submit=${this.search}\n data-event-submit-tracking=\"${this.config\n ?.eventCategory}|NavSearchSubmit\"\n >\n <input\n type=\"text\"\n name=\"query\"\n class=\"search-field\"\n placeholder=\"Search\"\n autocomplete=\"off\"\n value=${this.searchQuery || ''}\n @focus=${this.toggleSearchMenu}\n />\n ${this.searchInsideInput}\n <button\n type=\"submit\"\n class=\"search\"\n tabindex=\"-1\"\n data-event-click-tracking=\"${this.config\n ?.eventCategory}|NavSearchClose\"\n >\n ${icons.search}\n </button>\n </form>\n </div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"nav-search.js","sourceRoot":"","sources":["../../src/nav-search.ts"],"names":[],"mappings":"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","sourcesContent":["import { nothing, html } from 'lit';\n\nimport TrackedElement from './tracked-element';\nimport navSearchCSS from './styles/nav-search';\nimport icons from './assets/img/icons';\nimport formatUrl from './lib/format-url';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { defaultTopNavConfig } from './data/menus';\nimport { IATopNavConfig } from './models';\nimport { iaSronlyStyles } from '@internetarchive/ia-styles';\n\n@customElement('nav-search')\nexport class NavSearch extends TrackedElement {\n @property({ type: String }) baseHost = '';\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n @property({ type: Object }) locationHandler = (url: string) => {};\n @property({ type: Boolean }) open = false;\n @property({ type: String }) openMenu = '';\n @property({ type: String }) searchIn = '';\n @property({ type: String }) searchQuery = '';\n\n @query('[name=query]') private queryInput?: HTMLInputElement;\n\n static get styles() {\n return [navSearchCSS, iaSronlyStyles];\n }\n\n search(e: CustomEvent) {\n const query = this.queryInput?.value;\n\n if (!query) {\n e.preventDefault();\n return false;\n }\n\n // TV search points to a detail page with a q param instead\n if (this.searchIn === 'TV') {\n this.locationHandler(\n formatUrl(`/details/tv?q=${query}` as string & Location, this.baseHost),\n );\n e.preventDefault();\n return false;\n }\n\n this.trackSubmit(e);\n return true;\n }\n\n toggleSearchMenu() {\n if (this.openMenu === 'search') {\n return;\n }\n this.dispatchEvent(\n new CustomEvent('menuToggled', {\n detail: {\n menuName: 'search',\n },\n composed: true,\n bubbles: true,\n }),\n );\n }\n\n get searchInsideInput() {\n return this.searchIn\n ? html`<input type=\"hidden\" name=\"sin\" value=\"${this.searchIn}\" />`\n : nothing;\n }\n\n get searchEndpoint() {\n return '/search';\n }\n\n render() {\n const searchMenuClass = this.open ? 'flex' : 'search-inactive';\n\n return html`\n <div class=\"search-activated fade-in ${searchMenuClass}\">\n <form\n id=\"nav-search\"\n class=\"highlight\"\n .action=${formatUrl(\n this.searchEndpoint as string & Location,\n this.baseHost,\n )}\n method=\"get\"\n @submit=${this.search}\n data-event-submit-tracking=\"${this.config\n ?.eventCategory}|NavSearchSubmit\"\n >\n <label for=\"query\" class=\"sr-only\">Search the Archive</label>\n <input\n type=\"text\"\n name=\"query\"\n id=\"query\"\n class=\"search-field\"\n placeholder=\"Search\"\n autocomplete=\"off\"\n value=${this.searchQuery || ''}\n @focus=${this.toggleSearchMenu}\n />\n ${this.searchInsideInput}\n <button\n type=\"submit\"\n class=\"search\"\n tabindex=\"-1\"\n data-event-click-tracking=\"${this.config\n ?.eventCategory}|NavSearchClose\"\n >\n ${icons.search}\n </button>\n </form>\n </div>\n `;\n }\n}\n"]}
@@ -3,7 +3,7 @@ import { IATopNavConfig } from './models';
3
3
  export declare class SavePageForm extends TrackedElement {
4
4
  config: IATopNavConfig;
5
5
  inputValid: boolean;
6
- static get styles(): import("lit").CSSResult;
6
+ static get styles(): import("lit").CSSResult[];
7
7
  private validateURL;
8
8
  get errorClass(): string;
9
9
  render(): import("lit").TemplateResult<1>;
@@ -4,6 +4,7 @@ import TrackedElement from './tracked-element';
4
4
  import savePageFormCSS from './styles/save-page-form';
5
5
  import { customElement, property, state } from 'lit/decorators.js';
6
6
  import { defaultTopNavConfig } from './data/menus';
7
+ import { iaSronlyStyles } from '@internetarchive/ia-styles';
7
8
  let SavePageForm = class SavePageForm extends TrackedElement {
8
9
  constructor() {
9
10
  super(...arguments);
@@ -11,7 +12,7 @@ let SavePageForm = class SavePageForm extends TrackedElement {
11
12
  this.inputValid = true;
12
13
  }
13
14
  static get styles() {
14
- return savePageFormCSS;
15
+ return [savePageFormCSS, iaSronlyStyles];
15
16
  }
16
17
  validateURL(e) {
17
18
  const target = e.target;
@@ -42,7 +43,13 @@ let SavePageForm = class SavePageForm extends TrackedElement {
42
43
  the future.
43
44
  </p>
44
45
  <div>
45
- <input type="text" name="url_preload" placeholder="https://" />
46
+ <label for="url_preload" class="sr-only">Enter a URL to save</label>
47
+ <input
48
+ type="text"
49
+ name="url_preload"
50
+ id="url_preload"
51
+ placeholder="https://"
52
+ />
46
53
  <input type="submit" value="Save" />
47
54
  </div>
48
55
  <p class=${this.errorClass}>Please enter a valid web address</p>
@@ -1 +1 @@
1
- {"version":3,"file":"save-page-form.js","sourceRoot":"","sources":["../../src/save-page-form.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,eAAe,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAG5C,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,cAAc;IAAzC;;QACuB,WAAM,GAAmB,mBAAmB,CAAC;QAEhE,eAAU,GAAG,IAAI,CAAC;IA+C7B,CAAC;IA7CC,MAAM,KAAK,MAAM;QACf,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,WAAW,CAAC,CAAc;QAChC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAyB,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CACnC,sBAAsB,CACH,CAAC;QACtB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACrD,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;sCAIuB,IAAI,CAAC,MAAM,CAAC,aAAa;kBAC7C,IAAI,CAAC,WAAW;;;;;;;;;;;mBAWf,IAAI,CAAC,UAAU;;KAE7B,CAAC;IACJ,CAAC;CACF,CAAA;AAjD6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CAA8C;AAEhE;IAAR,KAAK,EAAE;gDAAmB;AAHhB,YAAY;IADxB,aAAa,CAAC,gBAAgB,CAAC;GACnB,YAAY,CAkDxB","sourcesContent":["import { html } from 'lit';\nimport TrackedElement from './tracked-element';\nimport savePageFormCSS from './styles/save-page-form';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { IATopNavConfig } from './models';\nimport { defaultTopNavConfig } from './data/menus';\n\n@customElement('save-page-form')\nexport class SavePageForm extends TrackedElement {\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n\n @state() inputValid = true;\n\n static get styles() {\n return savePageFormCSS;\n }\n\n private validateURL(e: SubmitEvent) {\n const target = e.target as HTMLFormElement;\n const urlInput = target.querySelector(\n '[name=\"url_preload\"]',\n ) as HTMLInputElement;\n const valid = /\\..{2,}$/.test(urlInput.value);\n\n if (!valid) {\n e.preventDefault();\n this.inputValid = false;\n return;\n }\n this.inputValid = true;\n this.trackSubmit(e);\n }\n\n get errorClass() {\n return `error${this.inputValid ? '' : ' visible'}`;\n }\n\n render() {\n return html`\n <form\n action=\"//web.archive.org/save\"\n method=\"post\"\n data-event-submit-tracking=\"${this.config.eventCategory}|SavePageSubmit\"\n @submit=${this.validateURL}\n >\n <h3>Save Page Now</h3>\n <p>\n Capture a web page as it appears now for use as a trusted citation in\n the future.\n </p>\n <div>\n <input type=\"text\" name=\"url_preload\" placeholder=\"https://\" />\n <input type=\"submit\" value=\"Save\" />\n </div>\n <p class=${this.errorClass}>Please enter a valid web address</p>\n </form>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"save-page-form.js","sourceRoot":"","sources":["../../src/save-page-form.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,eAAe,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGrD,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,cAAc;IAAzC;;QACuB,WAAM,GAAmB,mBAAmB,CAAC;QAEhE,eAAU,GAAG,IAAI,CAAC;IAqD7B,CAAC;IAnDC,MAAM,KAAK,MAAM;QACf,OAAO,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IAC3C,CAAC;IAEO,WAAW,CAAC,CAAc;QAChC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAyB,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CACnC,sBAAsB,CACH,CAAC;QACtB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACrD,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;sCAIuB,IAAI,CAAC,MAAM,CAAC,aAAa;kBAC7C,IAAI,CAAC,WAAW;;;;;;;;;;;;;;;;;mBAiBf,IAAI,CAAC,UAAU;;KAE7B,CAAC;IACJ,CAAC;CACF,CAAA;AAvD6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CAA8C;AAEhE;IAAR,KAAK,EAAE;gDAAmB;AAHhB,YAAY;IADxB,aAAa,CAAC,gBAAgB,CAAC;GACnB,YAAY,CAwDxB","sourcesContent":["import { html } from 'lit';\nimport TrackedElement from './tracked-element';\nimport savePageFormCSS from './styles/save-page-form';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { IATopNavConfig } from './models';\nimport { defaultTopNavConfig } from './data/menus';\nimport { iaSronlyStyles } from '@internetarchive/ia-styles';\n\n@customElement('save-page-form')\nexport class SavePageForm extends TrackedElement {\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n\n @state() inputValid = true;\n\n static get styles() {\n return [savePageFormCSS, iaSronlyStyles];\n }\n\n private validateURL(e: SubmitEvent) {\n const target = e.target as HTMLFormElement;\n const urlInput = target.querySelector(\n '[name=\"url_preload\"]',\n ) as HTMLInputElement;\n const valid = /\\..{2,}$/.test(urlInput.value);\n\n if (!valid) {\n e.preventDefault();\n this.inputValid = false;\n return;\n }\n this.inputValid = true;\n this.trackSubmit(e);\n }\n\n get errorClass() {\n return `error${this.inputValid ? '' : ' visible'}`;\n }\n\n render() {\n return html`\n <form\n action=\"//web.archive.org/save\"\n method=\"post\"\n data-event-submit-tracking=\"${this.config.eventCategory}|SavePageSubmit\"\n @submit=${this.validateURL}\n >\n <h3>Save Page Now</h3>\n <p>\n Capture a web page as it appears now for use as a trusted citation in\n the future.\n </p>\n <div>\n <label for=\"url_preload\" class=\"sr-only\">Enter a URL to save</label>\n <input\n type=\"text\"\n name=\"url_preload\"\n id=\"url_preload\"\n placeholder=\"https://\"\n />\n <input type=\"submit\" value=\"Save\" />\n </div>\n <p class=${this.errorClass}>Please enter a valid web address</p>\n </form>\n `;\n }\n}\n"]}
@@ -15,6 +15,6 @@ export declare class SearchMenu extends TrackedElement {
15
15
  selectSearchType(e: Event): void;
16
16
  searchInChanged(e: InputEvent): void;
17
17
  get searchTypesTemplate(): import("lit").TemplateResult<1>[];
18
- get menuClass(): "closed" | "open";
18
+ get menuClass(): "open" | "closed";
19
19
  render(): import("lit").TemplateResult<1>;
20
20
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/ia-topnav",
3
- "version": "1.3.19-webdev-7930.3",
3
+ "version": "1.3.20-alpha1",
4
4
  "description": "Top nav for Internet Archive",
5
5
  "license": "AGPL-3.0-only",
6
6
  "main": "dist/index.js",
@@ -25,7 +25,8 @@
25
25
  "ghpages:generate": "gh-pages -t -d ghpages -m \"Build for $(git log --pretty=format:\"%h %an %ai %s\" -n1) [skip ci]\""
26
26
  },
27
27
  "dependencies": {
28
- "@internetarchive/ia-wayback-search": "^1.0.3",
28
+ "@internetarchive/ia-styles": "^1.0.0",
29
+ "@internetarchive/ia-wayback-search": "^1.0.4",
29
30
  "lit": "^2.8.0"
30
31
  },
31
32
  "devDependencies": {
package/src/nav-search.ts CHANGED
@@ -7,6 +7,7 @@ import formatUrl from './lib/format-url';
7
7
  import { customElement, property, query } from 'lit/decorators.js';
8
8
  import { defaultTopNavConfig } from './data/menus';
9
9
  import { IATopNavConfig } from './models';
10
+ import { iaSronlyStyles } from '@internetarchive/ia-styles';
10
11
 
11
12
  @customElement('nav-search')
12
13
  export class NavSearch extends TrackedElement {
@@ -22,7 +23,7 @@ export class NavSearch extends TrackedElement {
22
23
  @query('[name=query]') private queryInput?: HTMLInputElement;
23
24
 
24
25
  static get styles() {
25
- return navSearchCSS;
26
+ return [navSearchCSS, iaSronlyStyles];
26
27
  }
27
28
 
28
29
  search(e: CustomEvent) {
@@ -88,9 +89,11 @@ export class NavSearch extends TrackedElement {
88
89
  data-event-submit-tracking="${this.config
89
90
  ?.eventCategory}|NavSearchSubmit"
90
91
  >
92
+ <label for="query" class="sr-only">Search the Archive</label>
91
93
  <input
92
94
  type="text"
93
95
  name="query"
96
+ id="query"
94
97
  class="search-field"
95
98
  placeholder="Search"
96
99
  autocomplete="off"
@@ -4,6 +4,7 @@ import savePageFormCSS from './styles/save-page-form';
4
4
  import { customElement, property, state } from 'lit/decorators.js';
5
5
  import { IATopNavConfig } from './models';
6
6
  import { defaultTopNavConfig } from './data/menus';
7
+ import { iaSronlyStyles } from '@internetarchive/ia-styles';
7
8
 
8
9
  @customElement('save-page-form')
9
10
  export class SavePageForm extends TrackedElement {
@@ -12,7 +13,7 @@ export class SavePageForm extends TrackedElement {
12
13
  @state() inputValid = true;
13
14
 
14
15
  static get styles() {
15
- return savePageFormCSS;
16
+ return [savePageFormCSS, iaSronlyStyles];
16
17
  }
17
18
 
18
19
  private validateURL(e: SubmitEvent) {
@@ -49,7 +50,13 @@ export class SavePageForm extends TrackedElement {
49
50
  the future.
50
51
  </p>
51
52
  <div>
52
- <input type="text" name="url_preload" placeholder="https://" />
53
+ <label for="url_preload" class="sr-only">Enter a URL to save</label>
54
+ <input
55
+ type="text"
56
+ name="url_preload"
57
+ id="url_preload"
58
+ placeholder="https://"
59
+ />
53
60
  <input type="submit" value="Save" />
54
61
  </div>
55
62
  <p class=${this.errorClass}>Please enter a valid web address</p>
package/tsconfig.json CHANGED
@@ -15,6 +15,7 @@
15
15
  "inlineSources": true,
16
16
  "rootDir": "./",
17
17
  "declaration": true,
18
+ "skipLibCheck": true,
18
19
  "plugins": [
19
20
  {
20
21
  "name": "ts-lit-plugin"