@operato/input 10.29.38 → 10.29.39

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.
@@ -1,5 +1,8 @@
1
1
  import { LitElement } from 'lit';
2
2
  export declare class LocalePicker extends LitElement {
3
+ private stopAddress?;
4
+ connectedCallback(): void;
5
+ disconnectedCallback(): void;
3
6
  render(): import("lit-html").TemplateResult<1>;
4
- localeChanged(event: Event): void;
7
+ localeChanged(event: Event): Promise<void>;
5
8
  }
@@ -1,4 +1,5 @@
1
1
  import { __decorate } from "tslib";
2
+ import { addressController, writeAddress } from '@operato/utils/address.js';
2
3
  import { html, LitElement } from 'lit';
3
4
  import { customElement } from 'lit/decorators.js';
4
5
  import { localized } from '@lit/localize';
@@ -16,6 +17,14 @@ const localeNames = {
16
17
  // the active locale (the result of getLocale()) when the locale changes via a
17
18
  // history navigation.
18
19
  let LocalePicker = class LocalePicker extends LitElement {
20
+ connectedCallback() {
21
+ super.connectedCallback();
22
+ this.stopAddress = addressController().subscribe(() => void setLocaleFromUrl());
23
+ }
24
+ disconnectedCallback() {
25
+ this.stopAddress?.();
26
+ super.disconnectedCallback();
27
+ }
19
28
  render() {
20
29
  return html `
21
30
  <select @change=${this.localeChanged}>
@@ -23,13 +32,13 @@ let LocalePicker = class LocalePicker extends LitElement {
23
32
  </select>
24
33
  `;
25
34
  }
26
- localeChanged(event) {
35
+ async localeChanged(event) {
27
36
  const newLocale = event.target.value;
28
37
  if (newLocale !== getLocale()) {
29
38
  const url = new URL(window.location.href);
30
39
  url.searchParams.set('locale', newLocale);
31
- window.history.pushState(null, '', url.toString());
32
- setLocaleFromUrl();
40
+ await writeAddress(url);
41
+ event.target.value = getLocale();
33
42
  }
34
43
  }
35
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"locale-picker.js","sourceRoot":"","sources":["../../../src/locale/locale-picker.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAE/D,MAAM,WAAW,GAEb;IACF,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,SAAS;CACd,CAAA;AAED,gFAAgF;AAChF,8EAA8E;AAC9E,sBAAsB;AAGf,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,UAAU;IAC1C,MAAM;QACJ,OAAO,IAAI,CAAA;wBACS,IAAI,CAAC,aAAa;UAChC,UAAU,CAAC,GAAG,CACd,MAAM,CAAC,EAAE,CAAC,IAAI,CAAA,iBAAiB,MAAM,cAAc,MAAM,KAAK,SAAS,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,WAAW,CAC5G;;KAEJ,CAAA;IACH,CAAC;IAED,aAAa,CAAC,KAAY;QACxB,MAAM,SAAS,GAAI,KAAK,CAAC,MAA4B,CAAC,KAAK,CAAA;QAC3D,IAAI,SAAS,KAAK,SAAS,EAAE,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACzC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;YACzC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;YAClD,gBAAgB,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;CACF,CAAA;AApBY,YAAY;IAFxB,SAAS,EAAE;IACX,aAAa,CAAC,eAAe,CAAC;GAClB,YAAY,CAoBxB","sourcesContent":["import { html, LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { localized } from '@lit/localize'\n\nimport { allLocales } from './locale-codes.js'\nimport { getLocale, setLocaleFromUrl } from './localization.js'\n\nconst localeNames: {\n [L in typeof allLocales[number]]: string\n} = {\n en: 'English',\n es: 'Español',\n ja: '日本語',\n ko: '한국어',\n ms: 'Bahasa Melayu',\n zh: '中文 (简体)'\n}\n\n// Note we use updateWhenLocaleChanges here so that we're always up to date with\n// the active locale (the result of getLocale()) when the locale changes via a\n// history navigation.\n@localized()\n@customElement('locale-picker')\nexport class LocalePicker extends LitElement {\n render() {\n return html`\n <select @change=${this.localeChanged}>\n ${allLocales.map(\n locale => html`<option value=${locale} ?selected=${locale === getLocale()}>${localeNames[locale]}</option>`\n )}\n </select>\n `\n }\n\n localeChanged(event: Event) {\n const newLocale = (event.target as HTMLSelectElement).value\n if (newLocale !== getLocale()) {\n const url = new URL(window.location.href)\n url.searchParams.set('locale', newLocale)\n window.history.pushState(null, '', url.toString())\n setLocaleFromUrl()\n }\n }\n}\n"]}
1
+ {"version":3,"file":"locale-picker.js","sourceRoot":"","sources":["../../../src/locale/locale-picker.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAE/D,MAAM,WAAW,GAEb;IACF,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,SAAS;CACd,CAAA;AAED,gFAAgF;AAChF,8EAA8E;AAC9E,sBAAsB;AAGf,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,UAAU;IAE1C,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAA;QACzB,IAAI,CAAC,WAAW,GAAG,iBAAiB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,gBAAgB,EAAE,CAAC,CAAA;IACjF,CAAC;IACD,oBAAoB;QAClB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAA;QACpB,KAAK,CAAC,oBAAoB,EAAE,CAAA;IAC9B,CAAC;IACD,MAAM;QACJ,OAAO,IAAI,CAAA;wBACS,IAAI,CAAC,aAAa;UAChC,UAAU,CAAC,GAAG,CACd,MAAM,CAAC,EAAE,CAAC,IAAI,CAAA,iBAAiB,MAAM,cAAc,MAAM,KAAK,SAAS,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,WAAW,CAC5G;;KAEJ,CAAA;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAY;QAC9B,MAAM,SAAS,GAAI,KAAK,CAAC,MAA4B,CAAC,KAAK,CAAA;QAC3D,IAAI,SAAS,KAAK,SAAS,EAAE,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACzC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;YACzC,MAAM,YAAY,CAAC,GAAG,CAAC,CAEtB;YAAC,KAAK,CAAC,MAA4B,CAAC,KAAK,GAAG,SAAS,EAAE,CAAA;QAC1D,CAAC;IACH,CAAC;CACF,CAAA;AA9BY,YAAY;IAFxB,SAAS,EAAE;IACX,aAAa,CAAC,eAAe,CAAC;GAClB,YAAY,CA8BxB","sourcesContent":["import { addressController, writeAddress } from '@operato/utils/address.js'\nimport { html, LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { localized } from '@lit/localize'\n\nimport { allLocales } from './locale-codes.js'\nimport { getLocale, setLocaleFromUrl } from './localization.js'\n\nconst localeNames: {\n [L in typeof allLocales[number]]: string\n} = {\n en: 'English',\n es: 'Español',\n ja: '日本語',\n ko: '한국어',\n ms: 'Bahasa Melayu',\n zh: '中文 (简体)'\n}\n\n// Note we use updateWhenLocaleChanges here so that we're always up to date with\n// the active locale (the result of getLocale()) when the locale changes via a\n// history navigation.\n@localized()\n@customElement('locale-picker')\nexport class LocalePicker extends LitElement {\n private stopAddress?: () => void\n connectedCallback() {\n super.connectedCallback()\n this.stopAddress = addressController().subscribe(() => void setLocaleFromUrl())\n }\n disconnectedCallback() {\n this.stopAddress?.()\n super.disconnectedCallback()\n }\n render() {\n return html`\n <select @change=${this.localeChanged}>\n ${allLocales.map(\n locale => html`<option value=${locale} ?selected=${locale === getLocale()}>${localeNames[locale]}</option>`\n )}\n </select>\n `\n }\n\n async localeChanged(event: Event) {\n const newLocale = (event.target as HTMLSelectElement).value\n if (newLocale !== getLocale()) {\n const url = new URL(window.location.href)\n url.searchParams.set('locale', newLocale)\n await writeAddress(url)\n // A refused change must also restore the native select's displayed value.\n ;(event.target as HTMLSelectElement).value = getLocale()\n }\n }\n}\n"]}