@lion/ui 0.15.3 → 0.15.4

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 (138) hide show
  1. package/README.md +2 -2
  2. package/components/combobox/src/LionCombobox.js +4 -1
  3. package/components/combobox/test/lion-combobox-integrations.test.js +23 -0
  4. package/components/combobox/test/lion-combobox.test.js +20 -0
  5. package/components/core/src/ScopedStylesController.js +7 -10
  6. package/components/core/test-helpers/getCachedFixture.js +55 -0
  7. package/components/input-amount/src/parsers.js +3 -2
  8. package/components/input-amount/test/parsers.test.js +6 -0
  9. package/components/input-amount-dropdown/src/currencyUtil.js +1 -1
  10. package/components/input-file/src/localizeNamespaceLoader.js +4 -0
  11. package/components/input-file/translations/bg.js +5 -0
  12. package/components/input-file/translations/cs.js +5 -0
  13. package/components/input-file/translations/es.js +5 -0
  14. package/components/input-file/translations/fr.js +5 -0
  15. package/components/input-file/translations/hu.js +5 -0
  16. package/components/input-file/translations/id-ID.js +5 -0
  17. package/components/input-file/translations/id.js +19 -0
  18. package/components/input-file/translations/it.js +5 -0
  19. package/components/input-file/translations/pl.js +5 -0
  20. package/components/input-file/translations/ro.js +5 -0
  21. package/components/input-file/translations/sk.js +5 -0
  22. package/components/input-file/translations/uk.js +5 -0
  23. package/components/input-file/translations/zh.js +5 -0
  24. package/components/input-stepper/test/lion-input-stepper-integrations.test.js +2 -19
  25. package/components/input-stepper/test/lion-input-stepper.test.js +2 -688
  26. package/components/input-stepper/test-suites/lion-input-stepper.integration.suite.js +19 -0
  27. package/components/input-stepper/test-suites/lion-input-stepper.suite.js +673 -0
  28. package/components/listbox/src/ListboxMixin.js +0 -1
  29. package/components/listbox/test-suites/ListboxMixin.suite.js +71 -2
  30. package/components/overlays/src/OverlayController.js +3 -0
  31. package/components/overlays/src/OverlaysManager.js +9 -2
  32. package/components/overlays/test/OverlayController.test.js +22 -9
  33. package/components/overlays/test/OverlaysManager.test.js +16 -0
  34. package/custom-elements.json +133 -9
  35. package/dist-types/components/combobox/src/LionCombobox.d.ts.map +1 -1
  36. package/dist-types/components/core/src/ScopedStylesController.d.ts +1 -2
  37. package/dist-types/components/core/src/ScopedStylesController.d.ts.map +1 -1
  38. package/dist-types/components/core/test-helpers/getCachedFixture.d.ts +14 -0
  39. package/dist-types/components/core/test-helpers/getCachedFixture.d.ts.map +1 -0
  40. package/dist-types/components/form-integrations/test/helpers/helpers.d.ts +3 -3
  41. package/dist-types/components/form-integrations/test/helpers/helpers.d.ts.map +1 -1
  42. package/dist-types/components/input-amount/src/parsers.d.ts.map +1 -1
  43. package/dist-types/components/input-file/src/localizeNamespaceLoader.d.ts +1 -1
  44. package/dist-types/components/input-file/src/localizeNamespaceLoader.d.ts.map +1 -1
  45. package/dist-types/components/input-file/translations/bg-BG.d.ts +5 -0
  46. package/dist-types/components/input-file/translations/bg.d.ts +5 -0
  47. package/dist-types/components/input-file/translations/cs-CZ.d.ts +5 -0
  48. package/dist-types/components/input-file/translations/cs.d.ts +5 -0
  49. package/dist-types/components/input-file/translations/es-ES.d.ts +5 -0
  50. package/dist-types/components/input-file/translations/es.d.ts +5 -0
  51. package/dist-types/components/input-file/translations/fr-BE.d.ts +5 -0
  52. package/dist-types/components/input-file/translations/fr-FR.d.ts +5 -0
  53. package/dist-types/components/input-file/translations/fr.d.ts +5 -0
  54. package/dist-types/components/input-file/translations/hu-HU.d.ts +5 -0
  55. package/dist-types/components/input-file/translations/hu.d.ts +5 -0
  56. package/dist-types/components/input-file/translations/id-ID.d.ts +20 -0
  57. package/dist-types/components/input-file/translations/id-ID.d.ts.map +1 -0
  58. package/dist-types/components/input-file/translations/id.d.ts +20 -0
  59. package/dist-types/components/input-file/translations/id.d.ts.map +1 -0
  60. package/dist-types/components/input-file/translations/it-IT.d.ts +5 -0
  61. package/dist-types/components/input-file/translations/it.d.ts +5 -0
  62. package/dist-types/components/input-file/translations/pl-PL.d.ts +5 -0
  63. package/dist-types/components/input-file/translations/pl.d.ts +5 -0
  64. package/dist-types/components/input-file/translations/ro-RO.d.ts +5 -0
  65. package/dist-types/components/input-file/translations/ro.d.ts +5 -0
  66. package/dist-types/components/input-file/translations/sk-SK.d.ts +5 -0
  67. package/dist-types/components/input-file/translations/sk.d.ts +5 -0
  68. package/dist-types/components/input-file/translations/uk-UA.d.ts +5 -0
  69. package/dist-types/components/input-file/translations/uk.d.ts +5 -0
  70. package/dist-types/components/input-file/translations/zh-CN.d.ts +5 -0
  71. package/dist-types/components/input-file/translations/zh.d.ts +5 -0
  72. package/dist-types/components/input-stepper/test/lion-input-stepper.test.d.ts +1 -2
  73. package/dist-types/components/input-stepper/test/lion-input-stepper.test.d.ts.map +1 -1
  74. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.integration.suite.d.ts +3 -0
  75. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.integration.suite.d.ts.map +1 -0
  76. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.suite.d.ts +4 -0
  77. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.suite.d.ts.map +1 -0
  78. package/dist-types/components/listbox/src/ListboxMixin.d.ts.map +1 -1
  79. package/dist-types/components/listbox/test-suites/ListboxMixin.suite.d.ts.map +1 -1
  80. package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
  81. package/dist-types/components/overlays/src/OverlaysManager.d.ts +4 -1
  82. package/dist-types/components/overlays/src/OverlaysManager.d.ts.map +1 -1
  83. package/dist-types/exports/input-stepper-suites.d.ts +6 -0
  84. package/dist-types/exports/input-stepper-suites.d.ts.map +1 -0
  85. package/dist-types/tsconfig.tsbuildinfo +1 -1
  86. package/docs/components/checkbox-group/overview.md +2 -2
  87. package/docs/components/collapsible/overview.md +1 -1
  88. package/docs/components/combobox/overview.md +1 -1
  89. package/docs/components/combobox/use-cases.md +1 -1
  90. package/docs/components/dialog/overview.md +1 -1
  91. package/docs/components/fieldset/overview.md +5 -5
  92. package/docs/components/form/overview.md +3 -3
  93. package/docs/components/form/use-cases.md +2 -2
  94. package/docs/components/icon/use-cases.md +1 -1
  95. package/docs/components/input/overview.md +1 -1
  96. package/docs/components/input-amount/overview.md +3 -3
  97. package/docs/components/input-date/overview.md +3 -3
  98. package/docs/components/input-datepicker/overview.md +5 -5
  99. package/docs/components/input-email/overview.md +2 -2
  100. package/docs/components/input-file/overview.md +1 -1
  101. package/docs/components/input-iban/overview.md +2 -2
  102. package/docs/components/input-range/overview.md +2 -2
  103. package/docs/components/input-stepper/overview.md +1 -1
  104. package/docs/components/input-tel/overview.md +1 -1
  105. package/docs/components/input-tel/use-cases.md +6 -6
  106. package/docs/components/input-tel-dropdown/overview.md +1 -1
  107. package/docs/components/listbox/use-cases.md +1 -1
  108. package/docs/components/radio-group/overview.md +3 -3
  109. package/docs/components/select/use-cases.md +1 -1
  110. package/docs/components/select-rich/use-cases.md +2 -2
  111. package/docs/components/tabs/examples.md +1 -1
  112. package/docs/fundamentals/index.md +4 -4
  113. package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
  114. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
  115. package/docs/fundamentals/rationales/accessibility.md +1 -1
  116. package/docs/fundamentals/systems/core/SlotMixin.md +2 -2
  117. package/docs/fundamentals/systems/core/api-table.md +3 -4
  118. package/docs/fundamentals/systems/core/overview.md +1 -1
  119. package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
  120. package/docs/fundamentals/systems/form/model-value.md +1 -1
  121. package/docs/fundamentals/systems/form/overview.md +28 -28
  122. package/docs/fundamentals/systems/form/validate.md +38 -30
  123. package/docs/fundamentals/systems/localize/overview.md +4 -4
  124. package/docs/fundamentals/systems/overlays/api-table.md +1 -1
  125. package/docs/fundamentals/systems/overlays/configuration.md +2 -2
  126. package/docs/fundamentals/systems/overlays/overview.md +5 -5
  127. package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
  128. package/docs/fundamentals/tools/helpers/overview.md +1 -1
  129. package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
  130. package/docs/guides/how-to/create-a-custom-field.md +5 -5
  131. package/docs/guides/how-to/create-a-form.md +4 -4
  132. package/docs/guides/how-to/extend-a-native-input.md +2 -2
  133. package/docs/guides/index.md +8 -8
  134. package/docs/guides/principles/index.md +5 -5
  135. package/docs/guides/principles/styling.md +1 -1
  136. package/exports/input-stepper-suites.js +11 -0
  137. package/input-stepper-suites.js +11 -0
  138. package/package.json +1 -1
package/README.md CHANGED
@@ -44,7 +44,7 @@ They provide an unopinionated, white-label layer that can be extended to your ow
44
44
  - **High Performance:** Focused on great performance in all relevant browsers with a minimal number of dependencies.
45
45
  - **Accessibility:** Aimed at compliance with the WCAG 2.2 AA standard to create components that are accessible for everybody.
46
46
  - **Flexibility:** Provides solutions through Web Components and JavaScript classes which can be used, adopted and extended to fit all needs.
47
- - **Modern Code:** Lion is distributes as pure es modules.
47
+ - **Modern Code:** Lion is distributed as pure es modules.
48
48
  - **Exposes functions/classes and Web Components:** Ships a functionality in it's most appropriate form.
49
49
 
50
50
  > Note: Our demos may look a little bland but that is on purpose. They only come with functional stylings.
@@ -91,7 +91,7 @@ They provide an unopinionated, white-label layer that can be extended to your ow
91
91
 
92
92
  ### Astro how to
93
93
 
94
- - To start in dev mode run `nmm run start`
94
+ - To start in dev mode run `npm run start`
95
95
  - To start in production mode:
96
96
  - Run `npm run build`
97
97
  - Run `npm run preview`
@@ -965,7 +965,10 @@ export class LionCombobox extends LocalizeMixin(OverlayMixin(CustomChoiceGroupMi
965
965
  if (isInlineAutoFillCandidate) {
966
966
  const textboxValue = this._getTextboxValueFromOption(option);
967
967
  const stringValues =
968
- textboxValue && typeof textboxValue === 'string' && typeof curValue === 'string';
968
+ typeof textboxValue === 'string' &&
969
+ textboxValue !== '' &&
970
+ typeof curValue === 'string' &&
971
+ curValue !== '';
969
972
  const beginsWith =
970
973
  stringValues && textboxValue.toLowerCase().indexOf(curValue.toLowerCase()) === 0;
971
974
  // We only can do proper inline autofilling when the beginning of the word matches
@@ -1,9 +1,32 @@
1
+ import { css } from 'lit';
1
2
  import { runListboxMixinSuite } from '@lion/ui/listbox-test-suites.js';
2
3
  import '@lion/ui/define/lion-combobox.js';
3
4
  import { runCustomChoiceGroupMixinSuite } from '../../form-core/test-suites/choice-group/CustomChoiceGroupMixin.suite.js';
5
+ import { LionCombobox } from '../src/LionCombobox.js';
6
+ import { ScopedStylesController } from '../../core/src/ScopedStylesController.js';
4
7
 
5
8
  runListboxMixinSuite({ tagString: 'lion-combobox' });
6
9
  runCustomChoiceGroupMixinSuite({
7
10
  parentTagString: 'lion-combobox',
8
11
  childTagString: 'lion-option',
9
12
  });
13
+
14
+ // Test case for using ScopedStylesController inside the LionCombobox
15
+ class ComboboxWithScopedStyles extends LionCombobox {
16
+ static scopedStyles() {
17
+ return css`
18
+ p {
19
+ display: block;
20
+ }
21
+ `;
22
+ }
23
+
24
+ constructor() {
25
+ super();
26
+ this.scopedStylesController = new ScopedStylesController(this);
27
+ }
28
+ }
29
+
30
+ customElements.define('combobox-with-scoped-styles', ComboboxWithScopedStyles);
31
+
32
+ runListboxMixinSuite({ tagString: 'combobox-with-scoped-styles' });
@@ -652,6 +652,26 @@ describe('lion-combobox', () => {
652
652
  expect(visibleOptions().length).to.equal(0, 'after clear');
653
653
  });
654
654
 
655
+ it('keeps interaction states on clear()', async () => {
656
+ const el = /** @type {LionCombobox} */ (
657
+ await fixture(html`
658
+ <lion-combobox name="foo">
659
+ <lion-option .choiceValue="${'Artichoke'}">Artichoke</lion-option>
660
+ <lion-option .choiceValue="${'Chard'}">Chard</lion-option>
661
+ <lion-option .choiceValue="${'Chicory'}">Chicory</lion-option>
662
+ <lion-option .choiceValue="${'Victoria Plum'}">Victoria Plum</lion-option>
663
+ </lion-combobox>
664
+ `)
665
+ );
666
+ await mimicUserTyping(el, 'a');
667
+ await el.updateComplete;
668
+ expect(el.dirty).to.equal(true);
669
+
670
+ el.clear();
671
+ await el.updateComplete;
672
+ expect(el.dirty).to.equal(true);
673
+ });
674
+
655
675
  it('resets modelValue and textbox value on reset()', async () => {
656
676
  const el = /** @type {LionCombobox} */ (
657
677
  await fixture(html`
@@ -6,6 +6,8 @@ import { unsafeCSS, css } from 'lit';
6
6
  * @implements {ReactiveController}
7
7
  */
8
8
  export class ScopedStylesController {
9
+ #hasConnected = false;
10
+
9
11
  /**
10
12
  * @param {import('lit').CSSResult} scope
11
13
  * @return {import('lit').CSSResultGroup}
@@ -26,12 +28,11 @@ export class ScopedStylesController {
26
28
  }
27
29
 
28
30
  hostConnected() {
29
- this.host.classList.add(this.scopedClass);
30
- this.__setupStyleTag();
31
- }
32
-
33
- hostDisconnected() {
34
- this.__teardownStyleTag();
31
+ if (!this.#hasConnected) {
32
+ this.host.classList.add(this.scopedClass);
33
+ this.__setupStyleTag();
34
+ this.#hasConnected = true;
35
+ }
35
36
  }
36
37
 
37
38
  __setupStyleTag() {
@@ -46,8 +47,4 @@ export class ScopedStylesController {
46
47
  .toString();
47
48
  this.host.insertBefore(this.__styleTag, this.host.childNodes[0]);
48
49
  }
49
-
50
- __teardownStyleTag() {
51
- this.host.removeChild(this.__styleTag);
52
- }
53
50
  }
@@ -0,0 +1,55 @@
1
+ import { defineCE, fixture, html, unsafeStatic } from '@open-wc/testing';
2
+ import { LitElement, nothing } from 'lit';
3
+ import { cache } from 'lit/directives/cache.js';
4
+ import { createRef } from 'lit/directives/ref.js';
5
+
6
+ /**
7
+ * Helper to get a fixture with a cached render function and show/hide methods.
8
+ * @template T
9
+ * @param {(ref: import('lit/directives/ref.js').Ref<T>) => import('lit').TemplateResult} render - The render function
10
+ * @returns {Promise<{ wrapper: LitElement, el: T | undefined, show: () => Promise<void>, hide: () => Promise<void> }>}
11
+ */
12
+ export async function getCachedFixture(
13
+ /** @type {(ref: import('lit/directives/ref.js').Ref<any>) => import('lit').TemplateResult} */ render,
14
+ ) {
15
+ class CachingWrapper extends LitElement {
16
+ static properties = {
17
+ _show: { type: Boolean },
18
+ };
19
+
20
+ constructor() {
21
+ super();
22
+ this._show = true;
23
+ this.ref = createRef();
24
+ }
25
+
26
+ async show() {
27
+ this._show = true;
28
+ return this.updateComplete;
29
+ }
30
+
31
+ async hide() {
32
+ this._show = false;
33
+ return this.updateComplete;
34
+ }
35
+
36
+ render() {
37
+ return html`${cache(this._show ? render(this.ref) : nothing)}`;
38
+ }
39
+ }
40
+
41
+ const customElementName = defineCE(CachingWrapper);
42
+ const customTag = unsafeStatic(customElementName);
43
+
44
+ const wrapper =
45
+ /** @type {LitElement & { ref: import('lit/directives/ref.js').Ref<any>, show(): Promise<void>, hide(): Promise<void> }} */ (
46
+ await fixture(html`<${customTag}></${customTag}>`)
47
+ );
48
+
49
+ return {
50
+ wrapper,
51
+ el: wrapper.ref.value,
52
+ show: async () => wrapper.show(),
53
+ hide: async () => wrapper.hide(),
54
+ };
55
+ }
@@ -31,14 +31,15 @@ function round(value, decimals) {
31
31
  * @param {FormatNumberOptions} [givenOptions] Locale Options
32
32
  */
33
33
  export function parseAmount(value, givenOptions) {
34
- const unmatchedInput = value.match(/[^0-9,.\-\u2212 ]/g);
34
+ const trimmedValue = value.trim();
35
+ const unmatchedInput = trimmedValue.match(/[^0-9,.\-\u2212 ]/g);
35
36
  // for the full paste behavior documentation:
36
37
  // ./docs/components/input-amount/use-cases.md#paste-behavior
37
38
  if (unmatchedInput && givenOptions?.mode !== 'pasted') {
38
39
  return undefined;
39
40
  }
40
41
 
41
- const number = parseNumber(value, givenOptions);
42
+ const number = parseNumber(trimmedValue, givenOptions);
42
43
 
43
44
  if (typeof number !== 'number' || Number.isNaN(number)) {
44
45
  return undefined;
@@ -61,6 +61,12 @@ describe('parseAmount()', async () => {
61
61
  expect(parseAmount('EUR 1,50', { mode: 'pasted' })).to.equal(1.5);
62
62
  });
63
63
 
64
+ it('trim spaces when "pasted" mode used', async () => {
65
+ // Use case: there is a cell in Excel which is formatted as Accounting, Currency: Zl, Decimal 2
66
+ // and the whole cell is copied
67
+ expect(parseAmount(' 1,00 zł ', { mode: 'pasted' })).to.equal(1);
68
+ });
69
+
64
70
  it('parses based on locale when "user-edited" mode used combined with viewValueStates "formatted"', async () => {
65
71
  expect(parseAmount('123,456.78', { mode: 'auto' })).to.equal(123456.78);
66
72
  expect(
@@ -55,7 +55,7 @@ const countryToCurrencyList = {
55
55
  BD: 'BDT',
56
56
  BE: 'EUR',
57
57
  BF: 'XOF',
58
- BG: 'BGN',
58
+ BG: 'EUR',
59
59
  BH: 'BHD',
60
60
  BI: 'BIF',
61
61
  BJ: 'XOF',
@@ -36,6 +36,10 @@ export const localizeNamespaceLoader = /** @param {string} locale */ locale => {
36
36
  return import('@lion/ui/input-file-translations/hu-HU.js');
37
37
  case 'hu':
38
38
  return import('@lion/ui/input-file-translations/hu.js');
39
+ case 'id-ID':
40
+ return import('@lion/ui/input-file-translations/id-ID.js');
41
+ case 'id':
42
+ return import('@lion/ui/input-file-translations/id.js');
39
43
  case 'it-IT':
40
44
  return import('@lion/ui/input-file-translations/it-IT.js');
41
45
  case 'it':
@@ -7,6 +7,11 @@ export default {
7
7
  fileNameDescriptionLabel: 'Име на файл: ',
8
8
  generalValidatorMessage: '"{validatorMessage}", за {listOfErroneousFiles}.',
9
9
  noFilesSelected: 'Не са избрани файлове.',
10
+ noFilesUploaded: 'Няма качени файлове.',
11
+ fileSelected: 'Избрани файл: ',
12
+ fileUploaded: 'Качване на файл: ',
13
+ filesSelected: 'Избрани файлове: {numberOfFiles} файла.',
14
+ filesUploaded: 'Качени файлове: {numberOfFiles} файла.',
10
15
  numberOfFiles: '{numberOfFiles} файла.',
11
16
  removeButtonLabel: 'Отстраняване на файла {fileName}',
12
17
  selectTextDuplicateFileName: 'Файл със същото име на файл вече е налице.',
@@ -8,6 +8,11 @@ export default {
8
8
  fileNameDescriptionLabel: 'Název souboru: ',
9
9
  generalValidatorMessage: '"{validatorMessage}", pro {listOfErroneousFiles}.',
10
10
  noFilesSelected: 'Nebyly vybrány žádné soubory.',
11
+ noFilesUploaded: 'Nebyly nahrány žádné soubory.',
12
+ fileSelected: 'Zvolené soubor: ',
13
+ fileUploaded: 'Nahraný soubor: ',
14
+ filesSelected: 'Zvolené soubory: {numberOfFiles} souborů.',
15
+ filesUploaded: 'Nahrané soubory: {numberOfFiles} souborů.',
11
16
  numberOfFiles: '{numberOfFiles} soubory/souborů.',
12
17
  removeButtonLabel: 'Odebrat soubor {fileName}',
13
18
  selectTextDuplicateFileName: 'Soubor se stejným názvem byl již přítomen.',
@@ -7,6 +7,11 @@ export default {
7
7
  fileNameDescriptionLabel: 'Nombre de archivo: ',
8
8
  generalValidatorMessage: '"{validatorMessage}", para {listOfErroneousFiles}.',
9
9
  noFilesSelected: 'No se han seleccionado archivos.',
10
+ noFilesUploaded: 'No se han cargado archivos.',
11
+ fileSelected: 'Archivo seleccionado: ',
12
+ fileUploaded: 'Archivo cargado: ',
13
+ filesSelected: 'Archivos seleccionados: {numberOfFiles} archivos.',
14
+ filesUploaded: 'Archivos cargados: {numberOfFiles} archivos.',
10
15
  numberOfFiles: '{numberOfFiles} archivos.',
11
16
  removeButtonLabel: 'Elimine el archivo: {fileName}',
12
17
  selectTextDuplicateFileName: 'Ya había un archivo con el mismo nombre de archivo.',
@@ -8,6 +8,11 @@ export default {
8
8
  fileNameDescriptionLabel: 'Nom de fichier: ',
9
9
  generalValidatorMessage: '"{validatorMessage}", pour {listOfErroneousFiles}.',
10
10
  noFilesSelected: 'Aucun fichier sélectionné.',
11
+ noFilesUploaded: 'Aucun fichier téléchargé.',
12
+ fileSelected: 'Fichier sélectionnés : ',
13
+ fileUploaded: 'Fichier téléchargé : ',
14
+ filesSelected: 'Fichiers sélectionnés : {numberOfFiles} fichiers.',
15
+ filesUploaded: 'Fichiers téléchargés : {numberOfFiles} fichiers.',
11
16
  numberOfFiles: '{numberOfFiles} fichiers.',
12
17
  removeButtonLabel: 'Supprimer le fichier {fileName}',
13
18
  selectTextDuplicateFileName: 'Un fichier portant le même nom de fichier était déjà présent.',
@@ -7,6 +7,11 @@ export default {
7
7
  fileNameDescriptionLabel: 'Fájlnév: ',
8
8
  generalValidatorMessage: '"{validatorMessage}", ehhez: {listOfErroneousFiles}.',
9
9
  noFilesSelected: 'Nincs fájl kiválasztva.',
10
+ noFilesUploaded: 'Nincs feltöltött fájl.',
11
+ fileSelected: 'Kiválasztott fájl: ',
12
+ fileUploaded: 'Feltöltött fájl: ',
13
+ filesSelected: 'Kiválasztott fájlok: {numberOfFiles} fájl.',
14
+ filesUploaded: 'Feltöltött fájlok: {numberOfFiles} fájl.',
10
15
  numberOfFiles: '{numberOfFiles} fájl.',
11
16
  removeButtonLabel: 'A(z) {fileName} fájl eltávolítása',
12
17
  selectTextDuplicateFileName: 'Már volt ilyen nevű fájl.',
@@ -0,0 +1,5 @@
1
+ import id from './id.js';
2
+
3
+ export default {
4
+ ...id,
5
+ };
@@ -0,0 +1,19 @@
1
+ export default {
2
+ allowedFileSize: 'Unggah file dengan ukuran maks. {maxSize}.',
3
+ allowedFileValidatorSimple: 'Unggah file {allowedType} dengan ukuran maks. {maxSize}.',
4
+ allowedFileValidatorComplex:
5
+ 'Unggah file {allowedTypesArray}, atau {allowedTypesLastItem} dengan ukuran maks. {maxSize}.',
6
+ dragAndDropText: 'Seret & Jatuhkan file di sini atau', // TODO: or what? Why is Drag & Drop capitalized?
7
+ fileNameDescriptionLabel: 'Nama file: ',
8
+ generalValidatorMessage: '"{validatorMessage}", untuk {listOfErroneousFiles}.',
9
+ noFilesSelected: 'Tidak ada file yang dipilih.',
10
+ noFilesUploaded: 'Tidak ada file yang diunggah.',
11
+ fileSelected: 'File yang dipilih: ',
12
+ fileUploaded: 'File yang diunggah: ',
13
+ filesSelected: 'File yang dipilih: {numberOfFiles} file.',
14
+ filesUploaded: 'File yang diunggah: {numberOfFiles} file.',
15
+ removeButtonLabel: 'Hapus file {fileName}',
16
+ selectTextDuplicateFileName: 'File dengan nama file yang sama sudah ada.',
17
+ selectTextMultipleFile: 'Pilih beberapa file',
18
+ selectTextSingleFile: 'Pilih berkas',
19
+ };
@@ -7,6 +7,11 @@ export default {
7
7
  fileNameDescriptionLabel: 'Nome file: ',
8
8
  generalValidatorMessage: '"{validatorMessage}", per {listOfErroneousFiles}.',
9
9
  noFilesSelected: 'Nessun file selezionato.',
10
+ noFilesUploaded: 'Nessun file caricato.',
11
+ fileSelected: 'File selezionati: ',
12
+ fileUploaded: 'File caricato: ',
13
+ filesSelected: 'File selezionati: {numberOfFiles} file.',
14
+ filesUploaded: 'File caricati: {numberOfFiles} file.',
10
15
  numberOfFiles: '{numberOfFiles} file.',
11
16
  removeButtonLabel: 'Rimuovere il file {fileName}',
12
17
  selectTextDuplicateFileName: 'Un file con lo stesso nome file era già presente.',
@@ -7,6 +7,11 @@ export default {
7
7
  fileNameDescriptionLabel: 'Nazwa pliku: ',
8
8
  generalValidatorMessage: '"{validatorMessage}", dla {listOfErroneousFiles}.',
9
9
  noFilesSelected: 'Nie wybrano żadnych plików.',
10
+ noFilesUploaded: 'Nie przesłano plików.',
11
+ fileSelected: 'Wybrane plik: ',
12
+ fileUploaded: 'Przesłany plik: ',
13
+ filesSelected: 'Wybrane pliki: Liczba plików: {numberOfFiles}.',
14
+ filesUploaded: 'Przesłane pliki: Liczba plików: {numberOfFiles}.',
10
15
  numberOfFiles: 'Liczba plików: {numberOfFiles}.',
11
16
  removeButtonLabel: 'Usuń plik {fileName}',
12
17
  selectTextDuplicateFileName: 'Plik o tej samej nazwie już istnieje.',
@@ -7,6 +7,11 @@ export default {
7
7
  fileNameDescriptionLabel: 'Nume fişier: ',
8
8
  generalValidatorMessage: '"{validatorMessage}", pentru {listOfErroneousFiles}.',
9
9
  noFilesSelected: 'Niciun fișier selectat.',
10
+ noFilesUploaded: 'Nu au fost încărcate fișiere.',
11
+ fileSelected: 'Fișier selectate: ',
12
+ fileUploaded: 'Fișier încărcat: ',
13
+ filesSelected: 'Fișiere selectate: {numberOfFiles} fișiere.',
14
+ filesUploaded: 'Fișiere încărcate: {numberOfFiles} fișiere.',
10
15
  numberOfFiles: '{numberOfFiles} fișiere.',
11
16
  removeButtonLabel: 'Eliminaţi fişierul {filename}',
12
17
  selectTextDuplicateFileName: 'Există deja un fişier cu acelaşi nume de fişier.',
@@ -7,6 +7,11 @@ export default {
7
7
  fileNameDescriptionLabel: 'Názov súboru: ',
8
8
  generalValidatorMessage: '"{validatorMessage}", pre {listOfErroneousFiles}.',
9
9
  noFilesSelected: 'Neboli vybrané žiadne súbory.',
10
+ noFilesUploaded: 'Nenahrali sa žiadne súbory.',
11
+ fileSelected: 'Zvolené súbor: ',
12
+ fileUploaded: 'Nahratý súbor: ',
13
+ filesSelected: 'Zvolené súbory: {numberOfFiles} súbory/-ov.',
14
+ filesUploaded: 'Nahraté súbory: {numberOfFiles} súbory/-ov.',
10
15
  numberOfFiles: 'Počet súborov: {numberOfFiles}.',
11
16
  removeButtonLabel: 'Odstrániť súbor {fileName}',
12
17
  selectTextDuplicateFileName: 'Súbor s rovnakým názvom súboru už existoval.',
@@ -7,6 +7,11 @@ export default {
7
7
  fileNameDescriptionLabel: 'Ім’я файлу: ',
8
8
  generalValidatorMessage: '"{validatorMessage}", для {listOfErroneousFiles}.',
9
9
  noFilesSelected: 'Не вибрано жодного файлу.',
10
+ noFilesUploaded: 'Файли не завантажено.',
11
+ fileSelected: 'Вибрані файл: ',
12
+ fileUploaded: 'Завантажений файл: ',
13
+ filesSelected: 'Вибрані файли: {numberOfFiles} файли(-ів).',
14
+ filesUploaded: 'Завантажені файли: {numberOfFiles} файли(-ів).',
10
15
  numberOfFiles: '{numberOfFiles} файли(-ів).',
11
16
  removeButtonLabel: 'Видалення файлу {fileName}',
12
17
  selectTextDuplicateFileName: 'Файл із такою назвою вже існував.',
@@ -7,6 +7,11 @@ export default {
7
7
  fileNameDescriptionLabel: '文件名: ',
8
8
  generalValidatorMessage: '"{validatorMessage}", 例如 {listOfErroneousFiles}。',
9
9
  noFilesSelected: '未选择任何文件。',
10
+ noFilesUploaded: '未上传任何文件。',
11
+ fileSelected: '已选择文件: ',
12
+ fileUploaded: '已上传文件: ',
13
+ filesSelected: '已选择文件:{numberOfFiles} 个文件。',
14
+ filesUploaded: '已上传文件:{numberOfFiles} 个文件。',
10
15
  numberOfFiles: '{numberOfFiles} 个文件。',
11
16
  removeButtonLabel: '删除 {fileName} 文件',
12
17
  selectTextDuplicateFileName: '已存在具有相同文件名的文件。',
@@ -1,20 +1,3 @@
1
- import {
2
- runInteractionStateMixinSuite,
3
- runFormatMixinSuite,
4
- } from '@lion/ui/form-core-test-suites.js';
1
+ import { runInputStepperIntegrationSuite } from '../test-suites/lion-input-stepper.integration.suite.js';
5
2
 
6
- import '@lion/ui/define/lion-input-stepper.js';
7
-
8
- const tagString = 'lion-input-stepper';
9
-
10
- describe('<lion-input-stepper> integrations', () => {
11
- runInteractionStateMixinSuite({
12
- tagString,
13
- allowedModelValueTypes: [Number],
14
- });
15
-
16
- runFormatMixinSuite({
17
- tagString,
18
- modelValueType: Number,
19
- });
20
- });
3
+ runInputStepperIntegrationSuite();