@internetarchive/ia-topnav 1.3.10-webdev-7394.0 โ†’ 1.3.10-webdev-7394.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.
package/demo/app-root.ts CHANGED
@@ -83,7 +83,7 @@ export class AppRoot extends LitElement {
83
83
  }}
84
84
  >
85
85
  Enable local links
86
- </button>
86
+ </button>
87
87
  </fieldset>
88
88
 
89
89
  <h2>Wayback Count</h2>
@@ -77,7 +77,7 @@ let AppRoot = class AppRoot extends LitElement {
77
77
  }}
78
78
  >
79
79
  Enable local links
80
- </button>
80
+ </button>
81
81
  </fieldset>
82
82
 
83
83
  <h2>Wayback Count</h2>
@@ -1 +1 @@
1
- {"version":3,"file":"app-root.js","sourceRoot":"","sources":["../../demo/app-root.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,kBAAkB,CAAC;AAInB,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,UAAU;IAIrC,MAAM;QACJ,OAAO,IAAI,CAAA;;;QAGP,IAAI,CAAC,QAAQ;KAChB,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAA;;;;;;;qBAOM,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;QACrC,CAAC;;;;;;;;qBAQQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,6BAA6B,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;QACjC,CAAC;;;;;;;;qBAQQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU;gBACpB,uDAAuD,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;QACjC,CAAC;;;;;;;;;qBASQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;QAC9B,CAAC;;;;;;;;;qBASQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;QACjC,CAAC;;;;;qBAKQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAChC,CAAC;;;;;;;;;qBASQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,iBAAiB,CAAC;QACvD,CAAC;;;;;;qBAMQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,aAAa,CAAC;QACnD,CAAC;;;;;;;;;qBASQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAChC,CAAC;;;;;qBAKQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;QACjC,CAAC;;;;;;KAMR,CAAC;IACJ,CAAC;;AAEM,cAAM,GAAG,GAAG,CAAA;;;;;;;;;GASlB,AATY,CASX;AAjIM;IADP,KAAK,CAAC,WAAW,CAAC;uCACK;AAFb,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAoInB;;AAED,WAAW;AACX,mBAAmB;AAEnB,aAAa;AACb,sKAAsK;AACtK,kCAAkC;AAClC,cAAc;AACd,YAAY;AACZ,YAAY;AACZ,uLAAuL;AACvL,qDAAqD;AACrD,YAAY;AACZ,YAAY;AACZ,YAAY;AACZ,iNAAiN;AACjN,+EAA+E;AAC/E,cAAc;AACd,YAAY;AACZ,WAAW;AACX,2FAA2F;AAC3F,gCAAgC;AAChC,cAAc;AAEd,YAAY;AAEZ,8FAA8F;AAC9F,6DAA6D;AAC7D,gBAAgB;AAChB,cAAc;AACd,4FAA4F;AAC5F,kEAAkE;AAClE,YAAY;AAEZ,YAAY;AACZ,oHAAoH;AACpH,4BAA4B;AAC5B,kBAAkB;AAElB,gBAAgB;AAChB,iGAAiG;AACjG,qDAAqD;AACrD,sBAAsB;AACtB,qGAAqG;AACrG,yDAAyD;AACzD,0BAA0B;AAC1B,0BAA0B","sourcesContent":["import { html, css, LitElement, TemplateResult } from 'lit';\nimport { customElement, query } from 'lit/decorators.js';\nimport '../src/ia-topnav';\nimport type TopNav from '../src/ia-topnav';\n\n@customElement('app-root')\nexport class AppRoot extends LitElement {\n @query('ia-topnav')\n private topnav!: TopNav;\n\n render() {\n return html`\n <ia-topnav> </ia-topnav>\n\n ${this.devTools}\n `;\n }\n\n private get devTools(): TemplateResult {\n return html`\n <div id=\"dev-tools\">\n <h1>Dev Tools</h1>\n\n <h2>Username</h2>\n <fieldset>\n <button\n @click=${() => {\n this.topnav.screenName = 'brewster';\n this.topnav.username = '@brewster';\n }}\n >\n Switch username to brewster\n </button>\n\n <br />\n\n <button\n @click=${() => {\n this.topnav.screenName = 'a๐Ÿ˜Šb๐Ÿ˜Šc๐Ÿ˜Šd๐Ÿ˜Še๐Ÿ˜Šf๐Ÿ˜Šg๐Ÿ˜Šh๐Ÿ˜Ši๐Ÿ˜Š';\n this.topnav.username = '@test';\n }}\n >\n Switch username to a๐Ÿ˜Šb๐Ÿ˜Šc๐Ÿ˜Šd๐Ÿ˜Še๐Ÿ˜Šf๐Ÿ˜Šg๐Ÿ˜Šh๐Ÿ˜Ši๐Ÿ˜Š\n </button>\n\n <br />\n\n <button\n @click=${() => {\n this.topnav.screenName =\n 'ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ';\n this.topnav.username = '@test';\n }}\n >\n Switch username to ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ\n ุงู„ุนุฌูˆุฒ\n </button>\n\n <br />\n\n <button\n @click=${() => {\n this.topnav.username = '';\n this.topnav.screenName = '';\n }}\n >\n Switch to logged out\n </button>\n </fieldset>\n\n <h2>Local Links</h2>\n <fieldset>\n <button\n @click=${() => {\n this.topnav.localLinks = false;\n }}\n >\n Disable local links\n </button>\n <button\n @click=${() => {\n this.topnav.localLinks = true;\n }}\n >\n Enable local links\n </button>\n </fieldset>\n\n <h2>Wayback Count</h2>\n <fieldset>\n <button\n @click=${() => {\n this.topnav.waybackPagesArchived = 'many, MAAAANNNY';\n }}\n >\n Change WB pages count\n </button>\n\n <button\n @click=${() => {\n this.topnav.waybackPagesArchived = '740 billion';\n }}\n >\n Reset WB pages count\n </button>\n </fieldset>\n\n <h2>Search</h2>\n <fieldset>\n <button\n @click=${() => {\n this.topnav.hideSearch = true;\n }}\n >\n Hide Top Row Search button, like on mobile\n </button>\n <button\n @click=${() => {\n this.topnav.hideSearch = false;\n }}\n >\n Show Top Row Search button, like on mobile\n </button>\n </fieldset>\n </div>\n `;\n }\n\n static styles = css`\n :host {\n display: block;\n font-family: sans-serif;\n }\n\n #dev-tools {\n margin: 1rem;\n }\n `;\n}\n\n// <center>\n// <h1>demo </h1>\n\n// < button\n// onclick = \"document.querySelector('ia-topnav').setAttribute('screenname', 'brewster'); document.querySelector('ia-topnav').setAttribute('username', '@brewster')\" >\n// switch username to brewster\n// </button>\n// < br />\n// <button\n// onclick=\"document.querySelector('ia-topnav').setAttribute('screenname', 'a๐Ÿ˜Šb๐Ÿ˜Šc๐Ÿ˜Šd๐Ÿ˜Še๐Ÿ˜Šf๐Ÿ˜Šg๐Ÿ˜Šh๐Ÿ˜Ši๐Ÿ˜Š'); document.querySelector('ia-topnav').setAttribute('username', '@test')\" >\n// switch username to a๐Ÿ˜Šb๐Ÿ˜Šc๐Ÿ˜Šd๐Ÿ˜Še๐Ÿ˜Šf๐Ÿ˜Šg๐Ÿ˜Šh๐Ÿ˜Ši๐Ÿ˜Š\n// </button>\n// < br />\n// <button\n// onclick=\"document.querySelector('ia-topnav').setAttribute('screenname', 'ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ'); document.querySelector('ia-topnav').setAttribute('username', '@test')\" >\n// switch username to ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ\n// </button>\n// < br />\n// <br />\n// < button onclick = \"document.querySelector('ia-topnav').removeAttribute('username')\" >\n// switch to un - logged -in\n// </button>\n\n// < hr />\n\n// <button onclick=\"document.querySelector('ia-topnav').setAttribute('localLinks', false)\" >\n// switch localLinks false(change to https://archive.org)\n// </button>\n// < br />\n// <button onclick=\"document.querySelector('ia-topnav').removeAttribute('localLinks')\" >\n// switch to localLinks(default, change links to start with /)\n// </button>\n\n// < hr />\n// <button onclick=\"document.querySelector('ia-topnav').setAttribute('waybackPagesArchived', 'many, MAAAANNNY')\" >\n// change WB pages count\n// </button>\n\n// < hr />\n// <button onclick=\"document.querySelector('ia-topnav').setAttribute('hideSearch', true)\" >\n// HIDE Top Row Search button, like on mobile\n// </button>\n// < button onclick = \"document.querySelector('ia-topnav').removeAttribute('hideSearch')\" >\n// SHOW Top Row Search button, like on mobile\n// </button>\n// </center>\n"]}
1
+ {"version":3,"file":"app-root.js","sourceRoot":"","sources":["../../demo/app-root.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,kBAAkB,CAAC;AAInB,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,UAAU;IAIrC,MAAM;QACJ,OAAO,IAAI,CAAA;;;QAGP,IAAI,CAAC,QAAQ;KAChB,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAA;;;;;;;qBAOM,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;QACrC,CAAC;;;;;;;;qBAQQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,6BAA6B,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;QACjC,CAAC;;;;;;;;qBAQQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU;gBACpB,uDAAuD,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;QACjC,CAAC;;;;;;;;;qBASQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;QAC9B,CAAC;;;;;;;;;qBASQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;QACjC,CAAC;;;;;qBAKQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAChC,CAAC;;;;;;;;;qBASQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,iBAAiB,CAAC;QACvD,CAAC;;;;;;qBAMQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,aAAa,CAAC;QACnD,CAAC;;;;;;;;;qBASQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAChC,CAAC;;;;;qBAKQ,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;QACjC,CAAC;;;;;;KAMR,CAAC;IACJ,CAAC;;AAEM,cAAM,GAAG,GAAG,CAAA;;;;;;;;;GASlB,AATY,CASX;AAjIM;IADP,KAAK,CAAC,WAAW,CAAC;uCACK;AAFb,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAoInB;;AAED,WAAW;AACX,mBAAmB;AAEnB,aAAa;AACb,sKAAsK;AACtK,kCAAkC;AAClC,cAAc;AACd,YAAY;AACZ,YAAY;AACZ,uLAAuL;AACvL,qDAAqD;AACrD,YAAY;AACZ,YAAY;AACZ,YAAY;AACZ,iNAAiN;AACjN,+EAA+E;AAC/E,cAAc;AACd,YAAY;AACZ,WAAW;AACX,2FAA2F;AAC3F,gCAAgC;AAChC,cAAc;AAEd,YAAY;AAEZ,8FAA8F;AAC9F,6DAA6D;AAC7D,gBAAgB;AAChB,cAAc;AACd,4FAA4F;AAC5F,kEAAkE;AAClE,YAAY;AAEZ,YAAY;AACZ,oHAAoH;AACpH,4BAA4B;AAC5B,kBAAkB;AAElB,gBAAgB;AAChB,iGAAiG;AACjG,qDAAqD;AACrD,sBAAsB;AACtB,qGAAqG;AACrG,yDAAyD;AACzD,0BAA0B;AAC1B,0BAA0B","sourcesContent":["import { html, css, LitElement, TemplateResult } from 'lit';\nimport { customElement, query } from 'lit/decorators.js';\nimport '../src/ia-topnav';\nimport type TopNav from '../src/ia-topnav';\n\n@customElement('app-root')\nexport class AppRoot extends LitElement {\n @query('ia-topnav')\n private topnav!: TopNav;\n\n render() {\n return html`\n <ia-topnav> </ia-topnav>\n\n ${this.devTools}\n `;\n }\n\n private get devTools(): TemplateResult {\n return html`\n <div id=\"dev-tools\">\n <h1>Dev Tools</h1>\n\n <h2>Username</h2>\n <fieldset>\n <button\n @click=${() => {\n this.topnav.screenName = 'brewster';\n this.topnav.username = '@brewster';\n }}\n >\n Switch username to brewster\n </button>\n\n <br />\n\n <button\n @click=${() => {\n this.topnav.screenName = 'a๐Ÿ˜Šb๐Ÿ˜Šc๐Ÿ˜Šd๐Ÿ˜Še๐Ÿ˜Šf๐Ÿ˜Šg๐Ÿ˜Šh๐Ÿ˜Ši๐Ÿ˜Š';\n this.topnav.username = '@test';\n }}\n >\n Switch username to a๐Ÿ˜Šb๐Ÿ˜Šc๐Ÿ˜Šd๐Ÿ˜Še๐Ÿ˜Šf๐Ÿ˜Šg๐Ÿ˜Šh๐Ÿ˜Ši๐Ÿ˜Š\n </button>\n\n <br />\n\n <button\n @click=${() => {\n this.topnav.screenName =\n 'ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ';\n this.topnav.username = '@test';\n }}\n >\n Switch username to ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ\n ุงู„ุนุฌูˆุฒ\n </button>\n\n <br />\n\n <button\n @click=${() => {\n this.topnav.username = '';\n this.topnav.screenName = '';\n }}\n >\n Switch to logged out\n </button>\n </fieldset>\n\n <h2>Local Links</h2>\n <fieldset>\n <button\n @click=${() => {\n this.topnav.localLinks = false;\n }}\n >\n Disable local links\n </button>\n <button\n @click=${() => {\n this.topnav.localLinks = true;\n }}\n >\n Enable local links\n </button>\n </fieldset>\n\n <h2>Wayback Count</h2>\n <fieldset>\n <button\n @click=${() => {\n this.topnav.waybackPagesArchived = 'many, MAAAANNNY';\n }}\n >\n Change WB pages count\n </button>\n\n <button\n @click=${() => {\n this.topnav.waybackPagesArchived = '740 billion';\n }}\n >\n Reset WB pages count\n </button>\n </fieldset>\n\n <h2>Search</h2>\n <fieldset>\n <button\n @click=${() => {\n this.topnav.hideSearch = true;\n }}\n >\n Hide Top Row Search button, like on mobile\n </button>\n <button\n @click=${() => {\n this.topnav.hideSearch = false;\n }}\n >\n Show Top Row Search button, like on mobile\n </button>\n </fieldset>\n </div>\n `;\n }\n\n static styles = css`\n :host {\n display: block;\n font-family: sans-serif;\n }\n\n #dev-tools {\n margin: 1rem;\n }\n `;\n}\n\n// <center>\n// <h1>demo </h1>\n\n// < button\n// onclick = \"document.querySelector('ia-topnav').setAttribute('screenname', 'brewster'); document.querySelector('ia-topnav').setAttribute('username', '@brewster')\" >\n// switch username to brewster\n// </button>\n// < br />\n// <button\n// onclick=\"document.querySelector('ia-topnav').setAttribute('screenname', 'a๐Ÿ˜Šb๐Ÿ˜Šc๐Ÿ˜Šd๐Ÿ˜Še๐Ÿ˜Šf๐Ÿ˜Šg๐Ÿ˜Šh๐Ÿ˜Ši๐Ÿ˜Š'); document.querySelector('ia-topnav').setAttribute('username', '@test')\" >\n// switch username to a๐Ÿ˜Šb๐Ÿ˜Šc๐Ÿ˜Šd๐Ÿ˜Še๐Ÿ˜Šf๐Ÿ˜Šg๐Ÿ˜Šh๐Ÿ˜Ši๐Ÿ˜Š\n// </button>\n// < br />\n// <button\n// onclick=\"document.querySelector('ia-topnav').setAttribute('screenname', 'ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ'); document.querySelector('ia-topnav').setAttribute('username', '@test')\" >\n// switch username to ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุงู„ุฏูƒุชูˆุฑ ู…ุญู…ุฏ ุงู„ุนุฌูˆุฒ\n// </button>\n// < br />\n// <br />\n// < button onclick = \"document.querySelector('ia-topnav').removeAttribute('username')\" >\n// switch to un - logged -in\n// </button>\n\n// < hr />\n\n// <button onclick=\"document.querySelector('ia-topnav').setAttribute('localLinks', false)\" >\n// switch localLinks false(change to https://archive.org)\n// </button>\n// < br />\n// <button onclick=\"document.querySelector('ia-topnav').removeAttribute('localLinks')\" >\n// switch to localLinks(default, change links to start with /)\n// </button>\n\n// < hr />\n// <button onclick=\"document.querySelector('ia-topnav').setAttribute('waybackPagesArchived', 'many, MAAAANNNY')\" >\n// change WB pages count\n// </button>\n\n// < hr />\n// <button onclick=\"document.querySelector('ia-topnav').setAttribute('hideSearch', true)\" >\n// HIDE Top Row Search button, like on mobile\n// </button>\n// < button onclick = \"document.querySelector('ia-topnav').removeAttribute('hideSearch')\" >\n// SHOW Top Row Search button, like on mobile\n// </button>\n// </center>\n"]}
@@ -7,6 +7,7 @@ import formatUrl from './lib/formatUrl';
7
7
  import { makeBooleanString } from './lib/makeBooleanString';
8
8
  import dropdownMenuCSS from './styles/dropdown-menu';
9
9
  import TrackedElement from './tracked-element';
10
+ import { ifDefined } from 'lit/directives/if-defined.js';
10
11
  export default class DropdownMenu extends TrackedElement {
11
12
  constructor() {
12
13
  super(...arguments);
@@ -51,8 +52,8 @@ export default class DropdownMenu extends TrackedElement {
51
52
  var _a, _b, _c;
52
53
  const calloutText = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.callouts) === null || _b === void 0 ? void 0 : _b[link.title];
53
54
  return html `<a
54
- .href="${formatUrl(link.url, this.baseHost)}"
55
- .class="${link.class}"
55
+ href="${formatUrl(link.url, this.baseHost)}"
56
+ class=${ifDefined(link.class)}
56
57
  tabindex="${this.open ? '' : '-1'}"
57
58
  @click=${this.trackClick}
58
59
  data-event-click-tracking="${(_c = this.config) === null || _c === void 0 ? void 0 : _c.eventCategory}|Nav${link.analyticsEvent}"
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-menu.js","sourceRoot":"","sources":["../../src/dropdown-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResult, html, nothing, TemplateResult } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport icons from './assets/img/icons';\nimport { defaultTopNavConfig } from './data/menus';\nimport formatUrl from './lib/formatUrl';\nimport { makeBooleanString } from './lib/makeBooleanString';\nimport { IATopNavConfig, IATopNavLink } from './models';\nimport dropdownMenuCSS from './styles/dropdown-menu';\nimport TrackedElement from './tracked-element';\n\nexport default class DropdownMenu extends TrackedElement {\n @property({ type: String }) baseHost = '';\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n @property({ type: Boolean }) hideSearch = false;\n @property({ type: Array }) menuItems: IATopNavLink[] | IATopNavLink[][] = [];\n @property({ type: Boolean }) animated = false;\n @property({ type: Boolean }) open = false;\n\n static get styles(): CSSResult[] {\n return [dropdownMenuCSS];\n }\n\n get dropdownItems() {\n if (!this.menuItems) return nothing;\n\n if (!Array.isArray(this.menuItems[0])) {\n const submenu = this.menuItems as IATopNavLink[];\n return this.dropdownSection(submenu);\n }\n return this.menuItems.map((submenu, i) => {\n const joiner = i ? DropdownMenu.dropdownDivider : html``;\n if (!Array.isArray(submenu)) {\n return;\n }\n return [joiner, ...this.dropdownSection(submenu)];\n });\n }\n\n static get dropdownDivider() {\n return html`<li role=\"presentation\" class=\"divider\"></li>`;\n }\n\n private dropdownSection(submenu: IATopNavLink[]): TemplateResult[] {\n return submenu.map(\n (item) => html`\n <li>\n ${item.url\n ? this.dropdownLink(item)\n : DropdownMenu.dropdownText(item)}\n </li>\n `,\n );\n }\n\n dropdownLink(link: IATopNavLink): TemplateResult {\n const calloutText = this.config?.callouts?.[link.title];\n return html`<a\n .href=\"${formatUrl(link.url, this.baseHost)}\"\n .class=\"${link.class}\"\n tabindex=\"${this.open ? '' : '-1'}\"\n @click=${this.trackClick}\n data-event-click-tracking=\"${this.config\n ?.eventCategory}|Nav${link.analyticsEvent}\"\n aria-label=${calloutText ? `New feature: ${link.title}` : nothing}\n >\n ${link.class === 'mobile-upload' ? icons.uploadUnpadded : nothing}\n ${link.title}\n ${calloutText\n ? html`<span class=\"callout\" aria-hidden=\"true\">${calloutText}</span>`\n : nothing}\n </a>`;\n }\n\n static dropdownText(item: IATopNavLink) {\n return html`<span class=\"info-item\">${item.title}</span>`;\n }\n\n get menuClass() {\n const hiddenClass = this.hideSearch ? ' search-hidden' : '';\n if (this.open) {\n return `open${hiddenClass}`;\n }\n if (this.animated) {\n return `closed${hiddenClass}`;\n }\n return `initial${hiddenClass}`;\n }\n\n render() {\n return html`\n <div class=\"nav-container\">\n <nav\n class=\"${this.menuClass}\"\n aria-hidden=\"${makeBooleanString(!this.open)}\"\n aria-expanded=\"${makeBooleanString(this.open)}\"\n >\n <ul>\n ${this.dropdownItems}\n </ul>\n </nav>\n </div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"dropdown-menu.js","sourceRoot":"","sources":["../../src/dropdown-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResult, html, nothing, TemplateResult } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport icons from './assets/img/icons';\nimport { defaultTopNavConfig } from './data/menus';\nimport formatUrl from './lib/formatUrl';\nimport { makeBooleanString } from './lib/makeBooleanString';\nimport { IATopNavConfig, IATopNavLink } from './models';\nimport dropdownMenuCSS from './styles/dropdown-menu';\nimport TrackedElement from './tracked-element';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nexport default class DropdownMenu extends TrackedElement {\n @property({ type: String }) baseHost = '';\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n @property({ type: Boolean }) hideSearch = false;\n @property({ type: Array }) menuItems: IATopNavLink[] | IATopNavLink[][] = [];\n @property({ type: Boolean }) animated = false;\n @property({ type: Boolean }) open = false;\n\n static get styles(): CSSResult[] {\n return [dropdownMenuCSS];\n }\n\n get dropdownItems() {\n if (!this.menuItems) return nothing;\n\n if (!Array.isArray(this.menuItems[0])) {\n const submenu = this.menuItems as IATopNavLink[];\n return this.dropdownSection(submenu);\n }\n return this.menuItems.map((submenu, i) => {\n const joiner = i ? DropdownMenu.dropdownDivider : html``;\n if (!Array.isArray(submenu)) {\n return;\n }\n return [joiner, ...this.dropdownSection(submenu)];\n });\n }\n\n static get dropdownDivider() {\n return html`<li role=\"presentation\" class=\"divider\"></li>`;\n }\n\n private dropdownSection(submenu: IATopNavLink[]): TemplateResult[] {\n return submenu.map(\n (item) => html`\n <li>\n ${item.url\n ? this.dropdownLink(item)\n : DropdownMenu.dropdownText(item)}\n </li>\n `,\n );\n }\n\n dropdownLink(link: IATopNavLink): TemplateResult {\n const calloutText = this.config?.callouts?.[link.title];\n return html`<a\n href=\"${formatUrl(link.url, this.baseHost)}\"\n class=${ifDefined(link.class)}\n tabindex=\"${this.open ? '' : '-1'}\"\n @click=${this.trackClick}\n data-event-click-tracking=\"${this.config\n ?.eventCategory}|Nav${link.analyticsEvent}\"\n aria-label=${calloutText ? `New feature: ${link.title}` : nothing}\n >\n ${link.class === 'mobile-upload' ? icons.uploadUnpadded : nothing}\n ${link.title}\n ${calloutText\n ? html`<span class=\"callout\" aria-hidden=\"true\">${calloutText}</span>`\n : nothing}\n </a>`;\n }\n\n static dropdownText(item: IATopNavLink) {\n return html`<span class=\"info-item\">${item.title}</span>`;\n }\n\n get menuClass() {\n const hiddenClass = this.hideSearch ? ' search-hidden' : '';\n if (this.open) {\n return `open${hiddenClass}`;\n }\n if (this.animated) {\n return `closed${hiddenClass}`;\n }\n return `initial${hiddenClass}`;\n }\n\n render() {\n return html`\n <div class=\"nav-container\">\n <nav\n class=\"${this.menuClass}\"\n aria-hidden=\"${makeBooleanString(!this.open)}\"\n aria-expanded=\"${makeBooleanString(this.open)}\"\n >\n <ul>\n ${this.dropdownItems}\n </ul>\n </nav>\n </div>\n `;\n }\n}\n"]}
@@ -9,7 +9,7 @@ export declare class NavSearch extends TrackedElement {
9
9
  openMenu: string;
10
10
  searchIn: string;
11
11
  searchQuery: string;
12
- queryInput: HTMLInputElement | undefined;
12
+ private queryInput?;
13
13
  static get styles(): import("lit").CSSResult;
14
14
  search(e: CustomEvent): boolean;
15
15
  toggleSearchMenu(): void;
@@ -11,6 +11,7 @@ let NavSearch = class NavSearch extends TrackedElement {
11
11
  super(...arguments);
12
12
  this.baseHost = '';
13
13
  this.config = defaultTopNavConfig;
14
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
14
15
  this.locationHandler = (url) => { };
15
16
  this.open = false;
16
17
  this.openMenu = '';
@@ -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/formatUrl';\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 @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]') queryInput: HTMLInputElement | undefined;\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":";AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,MAAM,oBAAoB,CAAC;AACvC,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAI5C,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,cAAc;IAAtC;;QACuB,aAAQ,GAAG,EAAE,CAAC;QACd,WAAM,GAAmB,mBAAmB,CAAC;QACzE,6DAA6D;QACjC,oBAAe,GAAG,CAAC,GAAW,EAAE,EAAE,GAAE,CAAC,CAAC;QACrC,SAAI,GAAG,KAAK,CAAC;QACd,aAAQ,GAAG,EAAE,CAAC;QACd,aAAQ,GAAG,EAAE,CAAC;QACd,gBAAW,GAAG,EAAE,CAAC;IA8F/C,CAAC;IA1FC,MAAM,KAAK,MAAM;QACf,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,CAAc;;QACnB,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,CAAC;QAErC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,2DAA2D;QAC3D,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,eAAe,CAClB,SAAS,CAAC,iBAAiB,KAAK,EAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,CACxE,CAAC;YACF,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,aAAa,EAAE;YAC7B,MAAM,EAAE;gBACN,QAAQ,EAAE,QAAQ;aACnB;YACD,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;SACd,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,QAAQ;YAClB,CAAC,CAAC,IAAI,CAAA,0CAA0C,IAAI,CAAC,QAAQ,MAAM;YACnE,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM;;QACJ,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAE/D,OAAO,IAAI,CAAA;6CAC8B,eAAe;;;;oBAIxC,SAAS,CACjB,IAAI,CAAC,cAAmC,EACxC,IAAI,CAAC,QAAQ,CACd;;oBAES,IAAI,CAAC,MAAM;wCACS,MAAA,IAAI,CAAC,MAAM,0CACrC,aAAa;;;;;;;;oBAQP,IAAI,CAAC,WAAW,IAAI,EAAE;qBACrB,IAAI,CAAC,gBAAgB;;YAE9B,IAAI,CAAC,iBAAiB;;;;;yCAKO,MAAA,IAAI,CAAC,MAAM,0CACpC,aAAa;;cAEf,KAAK,CAAC,MAAM;;;;KAIrB,CAAC;IACJ,CAAC;CACF,CAAA;AArG6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CAAe;AACd;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yCAA8C;AAE7C;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDAAuC;AACrC;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;uCAAc;AACd;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CAAe;AACd;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CAAe;AACd;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CAAkB;AAEd;IAA9B,KAAK,CAAC,cAAc,CAAC;6CAAuC;AAVlD,SAAS;IADrB,aAAa,CAAC,YAAY,CAAC;GACf,SAAS,CAsGrB","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/formatUrl';\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"]}
@@ -5,7 +5,7 @@ const component = html `<dropdown-menu></dropdown-menu>`;
5
5
  describe('<dropdown-menu>', () => {
6
6
  it('sets default properties', async () => {
7
7
  const el = await fixture(component);
8
- expect(el.animate).to.be.false;
8
+ expect(el.animated).to.be.false;
9
9
  expect(el.open).to.be.false;
10
10
  expect(el.menuItems.length).to.equal(0);
11
11
  });
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-menu.test.js","sourceRoot":"","sources":["../../test/dropdown-menu.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;AAErD,MAAM,SAAS,GAAG,IAAI,CAAA,iCAAiC,CAAC;AAExD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAe,SAAS,CAAC,CAAC;QAElD,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;;QAChE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAe,SAAS,CAAC,CAAC;QAElD,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;QACnB,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\n\nimport DropdownMenu from '../src/dropdown-menu';\n\ncustomElements.define('dropdown-menu', DropdownMenu);\n\nconst component = html`<dropdown-menu></dropdown-menu>`;\n\ndescribe('<dropdown-menu>', () => {\n it('sets default properties', async () => {\n const el = await fixture<DropdownMenu>(component);\n\n expect(el.animate).to.be.false;\n expect(el.open).to.be.false;\n expect(el.menuItems.length).to.equal(0);\n });\n\n it('renders a closed class if component is animating', async () => {\n const el = await fixture<DropdownMenu>(component);\n\n el.animated = true;\n await el.updateComplete;\n expect(el.shadowRoot?.querySelector('.closed')).to.not.be.undefined;\n });\n});\n"]}
1
+ {"version":3,"file":"dropdown-menu.test.js","sourceRoot":"","sources":["../../test/dropdown-menu.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;AAErD,MAAM,SAAS,GAAG,IAAI,CAAA,iCAAiC,CAAC;AAExD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAe,SAAS,CAAC,CAAC;QAClD,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAChC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;;QAChE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAe,SAAS,CAAC,CAAC;QAClD,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;QACnB,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\n\nimport DropdownMenu from '../src/dropdown-menu';\n\ncustomElements.define('dropdown-menu', DropdownMenu);\n\nconst component = html`<dropdown-menu></dropdown-menu>`;\n\ndescribe('<dropdown-menu>', () => {\n it('sets default properties', async () => {\n const el = await fixture<DropdownMenu>(component);\n expect(el.animated).to.be.false;\n expect(el.open).to.be.false;\n expect(el.menuItems.length).to.equal(0);\n });\n\n it('renders a closed class if component is animating', async () => {\n const el = await fixture<DropdownMenu>(component);\n el.animated = true;\n await el.updateComplete;\n expect(el.shadowRoot?.querySelector('.closed')).to.not.be.undefined;\n });\n});\n"]}
@@ -31,16 +31,6 @@ describe('<primary-nav>', () => {
31
31
  expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.search-trigger')).to.equal(null);
32
32
  expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('nav-search')).to.equal(null);
33
33
  });
34
- it('truncates a long screenname', async () => {
35
- var _a;
36
- const el = await fixture(component({
37
- baseHost: 'archive.org',
38
- username: 'boop',
39
- screenName: 'somesuperlongscreenname',
40
- }));
41
- const usernameSpan = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.screen-name');
42
- expect(usernameSpan.innerText).to.equal('somesuperโ€ฆ');
43
- });
44
34
  it('opens a slot with `secondIdentitySlotMode`', async () => {
45
35
  var _a, _b;
46
36
  const el = await fixture(component({
@@ -1 +1 @@
1
- {"version":3,"file":"primary-nav.test.js","sourceRoot":"","sources":["../../test/primary-nav.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n fixture,\n expect,\n fixtureCleanup,\n elementUpdated,\n} from '@open-wc/testing';\n\nimport '../src/primary-nav';\nimport { IATopNavConfig, IATopNavSecondIdentitySlotMode } from '../src/models';\nimport { PrimaryNav } from '../src/primary-nav';\n\nconst component = ({\n baseHost = 'archive.org',\n username = '',\n screenName = '',\n hideSearch = false,\n config = {},\n secondIdentitySlotMode = 'allow',\n}: {\n baseHost?: string;\n username?: string;\n screenName?: string;\n hideSearch?: boolean;\n config?: IATopNavConfig;\n secondIdentitySlotMode?: IATopNavSecondIdentitySlotMode;\n}) =>\n html` <primary-nav\n .baseHost=${baseHost}\n .username=${username}\n .screenName=${screenName}\n ?hideSearch=${hideSearch}\n .config=${config}\n .secondIdentitySlotMode=${secondIdentitySlotMode}\n ></primary-nav>`;\n\nafterEach(() => {\n fixtureCleanup();\n});\n\ndescribe('<primary-nav>', () => {\n it('renders the login link when no username present', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: '',\n }),\n );\n\n expect(el.shadowRoot?.querySelector('login-button')).to.not.be.undefined;\n });\n\n it('does not render search menu toggle and search form if hideSearch true', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: 'shaneriley',\n screenName: 'shaneriley',\n hideSearch: true,\n }),\n );\n\n expect(el.shadowRoot?.querySelector('.search-trigger')).to.equal(null);\n expect(el.shadowRoot?.querySelector('nav-search')).to.equal(null);\n });\n\n it('truncates a long screenname', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: 'boop',\n screenName: 'somesuperlongscreenname',\n }),\n );\n\n const usernameSpan = el.shadowRoot?.querySelector(\n '.screen-name',\n ) as HTMLSpanElement;\n\n expect(usernameSpan.innerText).to.equal('somesuperโ€ฆ');\n });\n\n it('opens a slot with `secondIdentitySlotMode`', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: 'boop',\n screenName: 'somesuperlongscreenname',\n secondIdentitySlotMode: 'allow',\n }),\n );\n\n const brandingBlock = el.shadowRoot?.querySelector('div.branding');\n expect(brandingBlock?.getAttribute('class')).to.contain(\n 'branding second-logo',\n );\n\n const slot = brandingBlock?.querySelector('slot');\n expect(slot).to.exist;\n expect(slot?.getAttribute('name')).to.equal('opt-sec-logo');\n\n el.secondIdentitySlotMode = '';\n await elementUpdated(el);\n const noSlotBrandingBlock = el.shadowRoot?.querySelector('div.branding');\n expect(noSlotBrandingBlock?.getAttribute('class')).to.contain('branding');\n\n const noSlot = noSlotBrandingBlock?.querySelector('slot');\n expect(noSlot).to.not.exist;\n });\n});\n"]}
1
+ {"version":3,"file":"primary-nav.test.js","sourceRoot":"","sources":["../../test/primary-nav.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n fixture,\n expect,\n fixtureCleanup,\n elementUpdated,\n} from '@open-wc/testing';\n\nimport '../src/primary-nav';\nimport { IATopNavConfig, IATopNavSecondIdentitySlotMode } from '../src/models';\nimport { PrimaryNav } from '../src/primary-nav';\n\nconst component = ({\n baseHost = 'archive.org',\n username = '',\n screenName = '',\n hideSearch = false,\n config = {},\n secondIdentitySlotMode = 'allow',\n}: {\n baseHost?: string;\n username?: string;\n screenName?: string;\n hideSearch?: boolean;\n config?: IATopNavConfig;\n secondIdentitySlotMode?: IATopNavSecondIdentitySlotMode;\n}) =>\n html` <primary-nav\n .baseHost=${baseHost}\n .username=${username}\n .screenName=${screenName}\n ?hideSearch=${hideSearch}\n .config=${config}\n .secondIdentitySlotMode=${secondIdentitySlotMode}\n ></primary-nav>`;\n\nafterEach(() => {\n fixtureCleanup();\n});\n\ndescribe('<primary-nav>', () => {\n it('renders the login link when no username present', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: '',\n }),\n );\n\n expect(el.shadowRoot?.querySelector('login-button')).to.not.be.undefined;\n });\n\n it('does not render search menu toggle and search form if hideSearch true', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: 'shaneriley',\n screenName: 'shaneriley',\n hideSearch: true,\n }),\n );\n\n expect(el.shadowRoot?.querySelector('.search-trigger')).to.equal(null);\n expect(el.shadowRoot?.querySelector('nav-search')).to.equal(null);\n });\n\n it('opens a slot with `secondIdentitySlotMode`', async () => {\n const el = await fixture<PrimaryNav>(\n component({\n baseHost: 'archive.org',\n username: 'boop',\n screenName: 'somesuperlongscreenname',\n secondIdentitySlotMode: 'allow',\n }),\n );\n\n const brandingBlock = el.shadowRoot?.querySelector('div.branding');\n expect(brandingBlock?.getAttribute('class')).to.contain(\n 'branding second-logo',\n );\n\n const slot = brandingBlock?.querySelector('slot');\n expect(slot).to.exist;\n expect(slot?.getAttribute('name')).to.equal('opt-sec-logo');\n\n el.secondIdentitySlotMode = '';\n await elementUpdated(el);\n const noSlotBrandingBlock = el.shadowRoot?.querySelector('div.branding');\n expect(noSlotBrandingBlock?.getAttribute('class')).to.contain('branding');\n\n const noSlot = noSlotBrandingBlock?.querySelector('slot');\n expect(noSlot).to.not.exist;\n });\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/ia-topnav",
3
- "version": "1.3.10-webdev-7394.0",
3
+ "version": "1.3.10-webdev-7394.1",
4
4
  "description": "Top nav for Internet Archive",
5
5
  "license": "AGPL-3.0-only",
6
6
  "main": "dist/index.js",
@@ -8,6 +8,7 @@ import { makeBooleanString } from './lib/makeBooleanString';
8
8
  import { IATopNavConfig, IATopNavLink } from './models';
9
9
  import dropdownMenuCSS from './styles/dropdown-menu';
10
10
  import TrackedElement from './tracked-element';
11
+ import { ifDefined } from 'lit/directives/if-defined.js';
11
12
 
12
13
  export default class DropdownMenu extends TrackedElement {
13
14
  @property({ type: String }) baseHost = '';
@@ -56,8 +57,8 @@ export default class DropdownMenu extends TrackedElement {
56
57
  dropdownLink(link: IATopNavLink): TemplateResult {
57
58
  const calloutText = this.config?.callouts?.[link.title];
58
59
  return html`<a
59
- .href="${formatUrl(link.url, this.baseHost)}"
60
- .class="${link.class}"
60
+ href="${formatUrl(link.url, this.baseHost)}"
61
+ class=${ifDefined(link.class)}
61
62
  tabindex="${this.open ? '' : '-1'}"
62
63
  @click=${this.trackClick}
63
64
  data-event-click-tracking="${this.config
package/src/nav-search.ts CHANGED
@@ -12,13 +12,14 @@ import { IATopNavConfig } from './models';
12
12
  export class NavSearch extends TrackedElement {
13
13
  @property({ type: String }) baseHost = '';
14
14
  @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;
15
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
16
  @property({ type: Object }) locationHandler = (url: string) => {};
16
17
  @property({ type: Boolean }) open = false;
17
18
  @property({ type: String }) openMenu = '';
18
19
  @property({ type: String }) searchIn = '';
19
20
  @property({ type: String }) searchQuery = '';
20
21
 
21
- @query('[name=query]') queryInput: HTMLInputElement | undefined;
22
+ @query('[name=query]') private queryInput?: HTMLInputElement;
22
23
 
23
24
  static get styles() {
24
25
  return navSearchCSS;
@@ -9,15 +9,13 @@ const component = html`<dropdown-menu></dropdown-menu>`;
9
9
  describe('<dropdown-menu>', () => {
10
10
  it('sets default properties', async () => {
11
11
  const el = await fixture<DropdownMenu>(component);
12
-
13
- expect(el.animate).to.be.false;
12
+ expect(el.animated).to.be.false;
14
13
  expect(el.open).to.be.false;
15
14
  expect(el.menuItems.length).to.equal(0);
16
15
  });
17
16
 
18
17
  it('renders a closed class if component is animating', async () => {
19
18
  const el = await fixture<DropdownMenu>(component);
20
-
21
19
  el.animated = true;
22
20
  await el.updateComplete;
23
21
  expect(el.shadowRoot?.querySelector('.closed')).to.not.be.undefined;
@@ -64,22 +64,6 @@ describe('<primary-nav>', () => {
64
64
  expect(el.shadowRoot?.querySelector('nav-search')).to.equal(null);
65
65
  });
66
66
 
67
- it('truncates a long screenname', async () => {
68
- const el = await fixture<PrimaryNav>(
69
- component({
70
- baseHost: 'archive.org',
71
- username: 'boop',
72
- screenName: 'somesuperlongscreenname',
73
- }),
74
- );
75
-
76
- const usernameSpan = el.shadowRoot?.querySelector(
77
- '.screen-name',
78
- ) as HTMLSpanElement;
79
-
80
- expect(usernameSpan.innerText).to.equal('somesuperโ€ฆ');
81
- });
82
-
83
67
  it('opens a slot with `secondIdentitySlotMode`', async () => {
84
68
  const el = await fixture<PrimaryNav>(
85
69
  component({
@@ -1 +0,0 @@
1
- import '../../../src/assets/img/icon-user';
@@ -1,12 +0,0 @@
1
- import { html, fixture } from '@open-wc/testing';
2
- import '../../../src/assets/img/icon-user';
3
- describe('<user-image>', () => {
4
- it('toggles active class when property toggled', async () => {
5
- const icon = await fixture(html `<user-image></user-image>`);
6
- // icon.active = true;
7
- // await icon.updateComplete;
8
- // const styleElement = icon.shadowRoot.querySelector('svg > path');
9
- // expect(styleElement.classList.contains('active')).to.be.true;
10
- });
11
- });
12
- //# sourceMappingURL=user.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"user.test.js","sourceRoot":"","sources":["../../../../test/assets/img/user.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAU,MAAM,kBAAkB,CAAC;AACzD,OAAO,mCAAmC,CAAC;AAE3C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAA,2BAA2B,CAAC,CAAC;QAE5D,sBAAsB;QACtB,6BAA6B;QAE7B,oEAAoE;QAEpE,gEAAgE;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\nimport '../../../src/assets/img/icon-user';\n\ndescribe('<user-image>', () => {\n it('toggles active class when property toggled', async () => {\n const icon = await fixture(html`<user-image></user-image>`);\n\n // icon.active = true;\n // await icon.updateComplete;\n\n // const styleElement = icon.shadowRoot.querySelector('svg > path');\n\n // expect(styleElement.classList.contains('active')).to.be.true;\n });\n});\n"]}
@@ -1,15 +0,0 @@
1
- import { html, fixture, expect } from '@open-wc/testing';
2
- import '../../../src/assets/img/icon-user';
3
-
4
- describe('<user-image>', () => {
5
- it('toggles active class when property toggled', async () => {
6
- const icon = await fixture(html`<user-image></user-image>`);
7
-
8
- // icon.active = true;
9
- // await icon.updateComplete;
10
-
11
- // const styleElement = icon.shadowRoot.querySelector('svg > path');
12
-
13
- // expect(styleElement.classList.contains('active')).to.be.true;
14
- });
15
- });