@lion/ui 0.19.1 → 0.20.0-menu-system.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/collapsible.js +1 -0
- package/components/button/src/LionButton.js +4 -0
- package/components/button/test-suites/LionButton.suite.js +1 -0
- package/components/calendar/src/LionCalendar.js +3 -1
- package/components/calendar/test/lion-calendar.test.js +47 -67
- package/components/collapsible/src/DisclosureMixin.js +313 -0
- package/components/collapsible/test-suites/DisclosureMixin.suite.js +30 -0
- package/components/collapsible/types/DisclosureMixinTypes.ts +48 -0
- package/components/combobox/test/lion-combobox.test.js +1 -0
- package/components/form-core/src/form-group/FormGroupMixin.js +7 -0
- package/components/form-core/src/registration/FormRegistrarMixin.js +11 -0
- package/components/form-core/test/FormControlMixin.test.js +1 -0
- package/components/form-core/test/validate/Validator.test.js +2 -0
- package/components/form-core/test-suites/ValidateMixin.suite.js +2 -0
- package/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.js +1 -0
- package/components/input-datepicker/src/localizeNamespaceLoader.js +1 -0
- package/components/input-datepicker/test/lion-input-datepicker.test.js +9 -19
- package/components/input-email/src/LionInputEmail.js +0 -2
- package/components/input-email/test/lion-input-email.test.js +0 -6
- package/components/input-file/src/validators.js +1 -31
- package/components/input-file/test/FileValidators.test.js +0 -31
- package/components/input-file/translations/bg.js +0 -1
- package/components/input-file/translations/cs.js +0 -1
- package/components/input-file/translations/de.js +0 -2
- package/components/input-file/translations/en.js +0 -1
- package/components/input-file/translations/es.js +0 -1
- package/components/input-file/translations/fr.js +0 -1
- package/components/input-file/translations/hu.js +0 -1
- package/components/input-file/translations/id.js +0 -1
- package/components/input-file/translations/it.js +0 -1
- package/components/input-file/translations/nl.js +0 -1
- package/components/input-file/translations/pl.js +0 -1
- package/components/input-file/translations/ro.js +0 -1
- package/components/input-file/translations/ru.js +0 -1
- package/components/input-file/translations/sk.js +0 -1
- package/components/input-file/translations/uk.js +0 -1
- package/components/input-file/translations/zh.js +0 -1
- package/components/input-tel/src/LionInputTel.js +1 -1
- package/components/input-tel/test-suites/LionInputTel.suite.js +0 -7
- package/components/localize/test/date/formatDate.test.js +1 -0
- package/components/menu/CHANGELOG.md +37 -0
- package/components/menu/README.md +335 -0
- package/components/menu/index.js +2 -0
- package/components/menu/lion-menu-overlay.js +3 -0
- package/components/menu/lion-menu.js +3 -0
- package/components/menu/lion-spinbutton.js +3 -0
- package/components/menu/lion-toolbar.js +3 -0
- package/components/menu/lion-tree.js +3 -0
- package/components/menu/package.json +46 -0
- package/components/menu/requirements.temp.md +12 -0
- package/components/menu/src/InteractiveListMixin.js +840 -0
- package/components/menu/src/LionMenu.js +250 -0
- package/components/menu/src/LionMenuHybrid.js +46 -0
- package/components/menu/src/LionMenuOverlay.js +155 -0
- package/components/menu/src/LionSpinbutton.js +213 -0
- package/components/menu/src/LionToolbar.js +94 -0
- package/components/menu/src/LionTree.js +52 -0
- package/components/menu/src/MoreButtonMenuMixin.js +278 -0
- package/components/menu/src/MultiLevelListMixin.js +311 -0
- package/components/menu/src/utils/isInView.js +26 -0
- package/components/menu/src/utils/listItemInteractions.js +124 -0
- package/components/menu/test/InteractiveListMixin.test.js +3 -0
- package/components/menu/test/MoreButtonMenuMixin.test.js +4 -0
- package/components/menu/test/MultiLevelListMixin.test.js +3 -0
- package/components/menu/test/lion-menu-hybrid.test.js +3 -0
- package/components/menu/test/lion-menu.test.js +11 -0
- package/components/menu/test/lion-toolbar.test.js +8 -0
- package/components/menu/test/lion-tree.test.js +7 -0
- package/components/menu/test-helpers/mimicKeyPress.js +9 -0
- package/components/menu/test-suites/InteractiveListMixin.suite.js +454 -0
- package/components/menu/test-suites/LionMenu.suite.js +113 -0
- package/components/menu/test-suites/LionMenuHybrid.suite.js +583 -0
- package/components/menu/test-suites/MoreButtonMenuMixin.suite.js +372 -0
- package/components/menu/test-suites/MultiLevelListMixin.suite.js +303 -0
- package/components/menu/types/InteractiveListMixinTypes.d.ts +84 -0
- package/components/navigation-bar/README.md +1 -0
- package/components/navigation-bar/src/LionNavigationBar.js +439 -0
- package/components/navigation-bar/src/types.js +41 -0
- package/components/overlays/NEXT.md +49 -0
- package/components/overlays/src/OverlayController.js +278 -110
- package/components/overlays/src/OverlayMixin.js +58 -11
- package/components/overlays/src/OverlaysManager.js +2 -2
- package/components/overlays/src/configurations/visibility-trigger-partials/withHoverInteraction.js +9 -41
- package/components/overlays/src/utils/adopt-styles.js +3 -2
- package/components/overlays/src/utils/get-focusable-elements.js +4 -0
- package/components/overlays/src/utils/is-equal-config.js +10 -6
- package/components/overlays/test/OverlayController.test.js +127 -14
- package/components/overlays/test/utils-tests/is-equal-config.test.js +1 -1
- package/components/overlays/test/withHoverInteraction.test.js +0 -28
- package/components/overlays/test-suites/OverlayMixin.suite.js +8 -8
- package/components/overlays/types/ArrowMixinTypes.ts +3 -1
- package/components/overlays/types/OverlayConfig.ts +20 -5
- package/components/overlays/types/OverlayMixinTypes.ts +2 -0
- package/components/select-rich/test/lion-select-rich.test.js +3 -0
- package/custom-elements.json +30458 -17734
- package/dist-types/components/button/src/LionButton.d.ts +1 -0
- package/dist-types/components/button/src/LionButton.d.ts.map +1 -1
- package/dist-types/components/button/test-suites/LionButton.suite.d.ts.map +1 -1
- package/dist-types/components/calendar/src/LionCalendar.d.ts.map +1 -1
- package/dist-types/components/calendar/test/lion-calendar.test.d.ts.map +1 -1
- package/dist-types/components/collapsible/src/DisclosureMixin.d.ts +3 -0
- package/dist-types/components/collapsible/src/DisclosureMixin.d.ts.map +1 -0
- package/dist-types/components/collapsible/test-suites/DisclosureMixin.suite.d.ts +2 -0
- package/dist-types/components/collapsible/test-suites/DisclosureMixin.suite.d.ts.map +1 -0
- package/dist-types/components/collapsible/types/DisclosureMixinTypes.d.ts +24 -0
- package/dist-types/components/collapsible/types/DisclosureMixinTypes.d.ts.map +1 -0
- package/dist-types/components/combobox/src/LionCombobox.d.ts +1 -1
- package/dist-types/components/dialog/src/LionDialog.d.ts +6 -2
- package/dist-types/components/dialog/src/LionDialog.d.ts.map +1 -1
- package/dist-types/components/form-core/src/form-group/FormGroupMixin.d.ts.map +1 -1
- package/dist-types/components/form-core/src/registration/FormRegistrarMixin.d.ts.map +1 -1
- package/dist-types/components/form-core/test-suites/ValidateMixin.suite.d.ts.map +1 -1
- package/dist-types/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.d.ts.map +1 -1
- package/dist-types/components/input-datepicker/src/LionInputDatepicker.d.ts +1 -1
- package/dist-types/components/input-datepicker/src/localizeNamespaceLoader.d.ts.map +1 -1
- package/dist-types/components/input-datepicker/test/lion-input-datepicker.test.d.ts.map +1 -1
- package/dist-types/components/input-email/src/LionInputEmail.d.ts.map +1 -1
- package/dist-types/components/input-file/src/validators.d.ts +0 -11
- package/dist-types/components/input-file/src/validators.d.ts.map +1 -1
- package/dist-types/components/input-file/translations/bg-BG.d.ts +0 -1
- package/dist-types/components/input-file/translations/bg.d.ts +0 -1
- package/dist-types/components/input-file/translations/cs-CZ.d.ts +0 -1
- package/dist-types/components/input-file/translations/cs.d.ts +0 -1
- package/dist-types/components/input-file/translations/de-DE.d.ts +0 -1
- package/dist-types/components/input-file/translations/de.d.ts +0 -1
- package/dist-types/components/input-file/translations/en-AU.d.ts +0 -1
- package/dist-types/components/input-file/translations/en-GB.d.ts +0 -1
- package/dist-types/components/input-file/translations/en-PH.d.ts +0 -1
- package/dist-types/components/input-file/translations/en-US.d.ts +0 -1
- package/dist-types/components/input-file/translations/en.d.ts +0 -1
- package/dist-types/components/input-file/translations/es-ES.d.ts +0 -1
- package/dist-types/components/input-file/translations/es.d.ts +0 -1
- package/dist-types/components/input-file/translations/fr-BE.d.ts +0 -1
- package/dist-types/components/input-file/translations/fr-FR.d.ts +0 -1
- package/dist-types/components/input-file/translations/fr.d.ts +0 -1
- package/dist-types/components/input-file/translations/hu-HU.d.ts +0 -1
- package/dist-types/components/input-file/translations/hu.d.ts +0 -1
- package/dist-types/components/input-file/translations/id-ID.d.ts +0 -1
- package/dist-types/components/input-file/translations/id.d.ts +0 -1
- package/dist-types/components/input-file/translations/it-IT.d.ts +0 -1
- package/dist-types/components/input-file/translations/it.d.ts +0 -1
- package/dist-types/components/input-file/translations/nl-BE.d.ts +0 -1
- package/dist-types/components/input-file/translations/nl-NL.d.ts +0 -1
- package/dist-types/components/input-file/translations/nl.d.ts +0 -1
- package/dist-types/components/input-file/translations/pl-PL.d.ts +0 -1
- package/dist-types/components/input-file/translations/pl.d.ts +0 -1
- package/dist-types/components/input-file/translations/ro-RO.d.ts +0 -1
- package/dist-types/components/input-file/translations/ro.d.ts +0 -1
- package/dist-types/components/input-file/translations/ru-RU.d.ts +0 -1
- package/dist-types/components/input-file/translations/ru.d.ts +0 -1
- package/dist-types/components/input-file/translations/sk-SK.d.ts +0 -1
- package/dist-types/components/input-file/translations/sk.d.ts +0 -1
- package/dist-types/components/input-file/translations/uk-UA.d.ts +0 -1
- package/dist-types/components/input-file/translations/uk.d.ts +0 -1
- package/dist-types/components/input-file/translations/zh-CN.d.ts +0 -1
- package/dist-types/components/input-file/translations/zh.d.ts +0 -1
- package/dist-types/components/input-tel/src/LionInputTel.d.ts.map +1 -1
- package/dist-types/components/input-tel/test-suites/LionInputTel.suite.d.ts.map +1 -1
- package/dist-types/components/menu/index.d.ts +3 -0
- package/dist-types/components/menu/index.d.ts.map +1 -0
- package/dist-types/components/menu/lion-menu-overlay.d.ts +2 -0
- package/dist-types/components/menu/lion-menu-overlay.d.ts.map +1 -0
- package/dist-types/components/menu/lion-menu.d.ts +2 -0
- package/dist-types/components/menu/lion-menu.d.ts.map +1 -0
- package/dist-types/components/menu/lion-spinbutton.d.ts +2 -0
- package/dist-types/components/menu/lion-spinbutton.d.ts.map +1 -0
- package/dist-types/components/menu/lion-toolbar.d.ts +2 -0
- package/dist-types/components/menu/lion-toolbar.d.ts.map +1 -0
- package/dist-types/components/menu/lion-tree.d.ts +2 -0
- package/dist-types/components/menu/lion-tree.d.ts.map +1 -0
- package/dist-types/components/menu/src/InteractiveListMixin.d.ts +617 -0
- package/dist-types/components/menu/src/InteractiveListMixin.d.ts.map +1 -0
- package/dist-types/components/menu/src/LionMenu.d.ts +635 -0
- package/dist-types/components/menu/src/LionMenu.d.ts.map +1 -0
- package/dist-types/components/menu/src/LionMenuHybrid.d.ts +19 -0
- package/dist-types/components/menu/src/LionMenuHybrid.d.ts.map +1 -0
- package/dist-types/components/menu/src/LionMenuOverlay.d.ts +1015 -0
- package/dist-types/components/menu/src/LionMenuOverlay.d.ts.map +1 -0
- package/dist-types/components/menu/src/LionSpinbutton.d.ts +58 -0
- package/dist-types/components/menu/src/LionSpinbutton.d.ts.map +1 -0
- package/dist-types/components/menu/src/LionToolbar.d.ts +8 -0
- package/dist-types/components/menu/src/LionToolbar.d.ts.map +1 -0
- package/dist-types/components/menu/src/LionTree.d.ts +447 -0
- package/dist-types/components/menu/src/LionTree.d.ts.map +1 -0
- package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts +39 -0
- package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts.map +1 -0
- package/dist-types/components/menu/src/MultiLevelListMixin.d.ts +503 -0
- package/dist-types/components/menu/src/MultiLevelListMixin.d.ts.map +1 -0
- package/dist-types/components/menu/src/utils/isInView.d.ts +9 -0
- package/dist-types/components/menu/src/utils/isInView.d.ts.map +1 -0
- package/dist-types/components/menu/src/utils/listItemInteractions.d.ts +48 -0
- package/dist-types/components/menu/src/utils/listItemInteractions.d.ts.map +1 -0
- package/dist-types/components/menu/test/InteractiveListMixin.test.d.ts +2 -0
- package/dist-types/components/menu/test/InteractiveListMixin.test.d.ts.map +1 -0
- package/dist-types/components/menu/test/MoreButtonMenuMixin.test.d.ts +2 -0
- package/dist-types/components/menu/test/MoreButtonMenuMixin.test.d.ts.map +1 -0
- package/dist-types/components/menu/test/MultiLevelListMixin.test.d.ts +2 -0
- package/dist-types/components/menu/test/MultiLevelListMixin.test.d.ts.map +1 -0
- package/dist-types/components/menu/test/lion-menu-hybrid.test.d.ts +2 -0
- package/dist-types/components/menu/test/lion-menu-hybrid.test.d.ts.map +1 -0
- package/dist-types/components/menu/test/lion-menu.test.d.ts +2 -0
- package/dist-types/components/menu/test/lion-menu.test.d.ts.map +1 -0
- package/dist-types/components/menu/test/lion-toolbar.test.d.ts +2 -0
- package/dist-types/components/menu/test/lion-toolbar.test.d.ts.map +1 -0
- package/dist-types/components/menu/test/lion-tree.test.d.ts +2 -0
- package/dist-types/components/menu/test/lion-tree.test.d.ts.map +1 -0
- package/dist-types/components/menu/test-helpers/mimicKeyPress.d.ts +7 -0
- package/dist-types/components/menu/test-helpers/mimicKeyPress.d.ts.map +1 -0
- package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts +14 -0
- package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts.map +1 -0
- package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts +9 -0
- package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts.map +1 -0
- package/dist-types/components/menu/test-suites/LionMenuHybrid.suite.d.ts +5 -0
- package/dist-types/components/menu/test-suites/LionMenuHybrid.suite.d.ts.map +1 -0
- package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts +14 -0
- package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts.map +1 -0
- package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts +11 -0
- package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts.map +1 -0
- package/dist-types/components/navigation-bar/src/LionNavigationBar.d.ts +238 -0
- package/dist-types/components/navigation-bar/src/LionNavigationBar.d.ts.map +1 -0
- package/dist-types/components/navigation-bar/src/types.d.ts +85 -0
- package/dist-types/components/navigation-bar/src/types.d.ts.map +1 -0
- package/dist-types/components/overlays/src/OverlayController.d.ts +24 -12
- package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
- package/dist-types/components/overlays/src/OverlayMixin.d.ts.map +1 -1
- package/dist-types/components/overlays/src/configurations/visibility-trigger-partials/withHoverInteraction.d.ts.map +1 -1
- package/dist-types/components/overlays/src/utils/get-focusable-elements.d.ts.map +1 -1
- package/dist-types/components/overlays/src/utils/is-equal-config.d.ts.map +1 -1
- package/dist-types/components/overlays/types/ArrowMixinTypes.d.ts.map +1 -1
- package/dist-types/components/overlays/types/OverlayConfig.d.ts +12 -2
- package/dist-types/components/overlays/types/OverlayConfig.d.ts.map +1 -1
- package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts +1 -0
- package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts.map +1 -1
- package/dist-types/components/select-rich/src/LionSelectRich.d.ts +11 -3
- package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
- package/dist-types/components/tooltip/src/LionTooltip.d.ts +1 -1
- package/dist-types/exports/define/lion-item.d.ts +2 -0
- package/dist-types/exports/define/lion-item.d.ts.map +1 -0
- package/dist-types/exports/define/lion-menu-overlay.d.ts +2 -0
- package/dist-types/exports/define/lion-menu-overlay.d.ts.map +1 -0
- package/dist-types/exports/define/lion-menu.d.ts +2 -0
- package/dist-types/exports/define/lion-menu.d.ts.map +1 -0
- package/dist-types/exports/define/lion-navigation-bar.d.ts +2 -0
- package/dist-types/exports/define/lion-navigation-bar.d.ts.map +1 -0
- package/dist-types/exports/define/lion-toolbar.d.ts +2 -0
- package/dist-types/exports/define/lion-toolbar.d.ts.map +1 -0
- package/dist-types/exports/define/lion-tree.d.ts +2 -0
- package/dist-types/exports/define/lion-tree.d.ts.map +1 -0
- package/dist-types/exports/input-file.d.ts +1 -1
- package/dist-types/exports/menu-test-suites.d.ts +4 -0
- package/dist-types/exports/menu-test-suites.d.ts.map +1 -0
- package/dist-types/exports/menu.d.ts +7 -0
- package/dist-types/exports/menu.d.ts.map +1 -0
- package/dist-types/exports/navigation-bar.d.ts +2 -0
- package/dist-types/exports/navigation-bar.d.ts.map +1 -0
- package/dist-types/exports/overlays.d.ts +3 -0
- package/dist-types/exports/overlays.d.ts.map +1 -1
- package/dist-types/tsconfig.tsbuildinfo +1 -1
- package/docs/components/checkbox-group/overview.md +2 -2
- package/docs/components/collapsible/overview.md +1 -1
- package/docs/components/combobox/api-table.md +21 -8
- package/docs/components/combobox/overview.md +1 -1
- package/docs/components/combobox/use-cases.md +1 -1
- package/docs/components/dialog/api-table.md +31 -6
- package/docs/components/dialog/overview.md +1 -1
- package/docs/components/fieldset/overview.md +5 -5
- package/docs/components/form/overview.md +3 -3
- package/docs/components/form/use-cases.md +2 -2
- package/docs/components/icon/use-cases.md +1 -1
- package/docs/components/input/overview.md +1 -1
- package/docs/components/input-amount/overview.md +3 -3
- package/docs/components/input-date/overview.md +3 -3
- package/docs/components/input-datepicker/api-table.md +21 -4
- package/docs/components/input-datepicker/overview.md +5 -5
- package/docs/components/input-email/api-table.md +1 -1
- package/docs/components/input-email/overview.md +2 -2
- package/docs/components/input-file/overview.md +1 -1
- package/docs/components/input-file/use-cases.md +0 -18
- package/docs/components/input-iban/overview.md +2 -2
- package/docs/components/input-range/overview.md +2 -2
- package/docs/components/input-stepper/overview.md +1 -1
- package/docs/components/input-tel/api-table.md +1 -1
- package/docs/components/input-tel/overview.md +1 -1
- package/docs/components/input-tel/use-cases.md +6 -6
- package/docs/components/input-tel-dropdown/api-table.md +1 -1
- package/docs/components/input-tel-dropdown/overview.md +1 -1
- package/docs/components/listbox/use-cases.md +1 -1
- package/docs/components/menu/api-table.md +460 -0
- package/docs/components/menu/applyMenuDemoStyles.js +173 -0
- package/docs/components/menu/extensions.md +262 -0
- package/docs/components/menu/index.md +13 -0
- package/docs/components/menu/overview.md +422 -0
- package/docs/components/menu/use-cases.md +77 -0
- package/docs/components/radio-group/overview.md +3 -3
- package/docs/components/select/use-cases.md +1 -1
- package/docs/components/select-rich/api-table.md +21 -5
- package/docs/components/select-rich/use-cases.md +2 -2
- package/docs/components/tabs/examples.md +1 -1
- package/docs/components/tooltip/api-table.md +36 -11
- package/docs/components/tooltip/use-cases.md +1 -34
- package/docs/fundamentals/index.md +4 -4
- package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
- package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
- package/docs/fundamentals/rationales/accessibility.md +1 -1
- package/docs/fundamentals/systems/core/SlotMixin.md +1 -1
- package/docs/fundamentals/systems/core/overview.md +1 -1
- package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
- package/docs/fundamentals/systems/form/model-value.md +1 -1
- package/docs/fundamentals/systems/form/overview.md +28 -28
- package/docs/fundamentals/systems/form/validate.md +2 -2
- package/docs/fundamentals/systems/localize/overview.md +4 -4
- package/docs/fundamentals/systems/overlays/api-table.md +36 -34
- package/docs/fundamentals/systems/overlays/configuration.md +2 -2
- package/docs/fundamentals/systems/overlays/overview.md +5 -5
- package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
- package/docs/fundamentals/tools/helpers/overview.md +1 -1
- package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
- package/docs/guides/how-to/create-a-custom-field.md +5 -5
- package/docs/guides/how-to/create-a-form.md +4 -4
- package/docs/guides/how-to/extend-a-native-input.md +2 -2
- package/docs/guides/how-to/index.md +1 -1
- package/docs/guides/index.md +8 -8
- package/docs/guides/principles/index.md +5 -5
- package/docs/guides/principles/styling.md +1 -1
- package/exports/collapsible.js +1 -0
- package/exports/define/lion-item.js +3 -0
- package/exports/define/lion-menu-overlay.js +3 -0
- package/exports/define/lion-menu.js +3 -0
- package/exports/define/lion-navigation-bar.js +3 -0
- package/exports/define/lion-toolbar.js +3 -0
- package/exports/define/lion-tree.js +3 -0
- package/exports/input-file.js +1 -5
- package/exports/menu-test-suites.js +4 -0
- package/exports/menu.js +7 -0
- package/exports/navigation-bar.js +1 -0
- package/exports/overlays.js +6 -0
- package/input-file.js +1 -5
- package/menu-test-suites.js +4 -0
- package/menu.js +7 -0
- package/navigation-bar.js +1 -0
- package/overlays.js +6 -0
- package/package.json +2 -2
- package/components/calendar/test-suites/LionCalendar.suite.js +0 -79
- package/components/input-datepicker/test-suites/LionInputDatepicker.suite.js +0 -35
- package/dist-types/components/calendar/test-suites/LionCalendar.suite.d.ts +0 -5
- package/dist-types/components/calendar/test-suites/LionCalendar.suite.d.ts.map +0 -1
- package/dist-types/components/input-datepicker/test-suites/LionInputDatepicker.suite.d.ts +0 -7
- package/dist-types/components/input-datepicker/test-suites/LionInputDatepicker.suite.d.ts.map +0 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Constructor } from '@open-wc/dedupe-mixin';
|
|
2
|
+
import { LitElement } from 'lit';
|
|
3
|
+
|
|
4
|
+
export declare class DisclosureHost {
|
|
5
|
+
public opened: Boolean;
|
|
6
|
+
|
|
7
|
+
protected get _invokerNode(): HTMLElement;
|
|
8
|
+
|
|
9
|
+
protected get _contentNode(): HTMLElement;
|
|
10
|
+
|
|
11
|
+
public toggle(): void;
|
|
12
|
+
|
|
13
|
+
public open(): void;
|
|
14
|
+
|
|
15
|
+
public close(): void;
|
|
16
|
+
|
|
17
|
+
protected _onOpenedChanged(): Promise<void>;
|
|
18
|
+
|
|
19
|
+
protected _onDisclosureShow(): void;
|
|
20
|
+
|
|
21
|
+
protected _onDisclosureHide(): void;
|
|
22
|
+
|
|
23
|
+
protected _showAnimation(cfg: object): Promise<void>;
|
|
24
|
+
|
|
25
|
+
protected _hideAnimation(cfg: object): Promise<void>;
|
|
26
|
+
|
|
27
|
+
protected _refreshAnimateCompletePromise(): void;
|
|
28
|
+
|
|
29
|
+
protected _setupOpenCloseListeners(): void;
|
|
30
|
+
|
|
31
|
+
protected _teardownOpenCloseListeners(): void;
|
|
32
|
+
|
|
33
|
+
private __setupAnimation(): void;
|
|
34
|
+
|
|
35
|
+
private __teardownAnimation(): void;
|
|
36
|
+
|
|
37
|
+
private __handleAnimateComplete(): void;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export declare function DisclosureImplementation<T extends Constructor<LitElement>>(
|
|
41
|
+
superclass: T,
|
|
42
|
+
): T &
|
|
43
|
+
Constructor<DisclosureHost> &
|
|
44
|
+
DisclosureHost &
|
|
45
|
+
Pick<typeof DisclosureHost, keyof typeof DisclosureHost> &
|
|
46
|
+
Pick<typeof LitElement, keyof typeof LitElement>;
|
|
47
|
+
|
|
48
|
+
export type DisclosureMixin = typeof DisclosureImplementation;
|
|
@@ -3227,6 +3227,7 @@ describe('lion-combobox', () => {
|
|
|
3227
3227
|
const [el, options] = await fruitFixture({ autocomplete: 'both', matchMode: 'all' });
|
|
3228
3228
|
await mimicUserTyping(/** @type {LionCombobox} */ (el), 'choke');
|
|
3229
3229
|
await el.updateComplete;
|
|
3230
|
+
// @ts-ignore - array index access
|
|
3230
3231
|
const labelledElement = options[0].querySelector('span[aria-label="Artichoke"]');
|
|
3231
3232
|
expect(labelledElement).to.not.be.null;
|
|
3232
3233
|
expect(labelledElement.innerText).to.equal('Artichoke');
|
|
@@ -352,11 +352,14 @@ const FormGroupMixinImplementation = superclass =>
|
|
|
352
352
|
this.formElements._keys().forEach(name => {
|
|
353
353
|
const elem = this.formElements[name];
|
|
354
354
|
if (elem instanceof FormControlsCollection) {
|
|
355
|
+
// @ts-ignore - dynamic property access
|
|
355
356
|
result[name] = elem.filter(el => _filterFn(el, property)).map(el => el[property]);
|
|
356
357
|
} else if (_filterFn(elem, property)) {
|
|
357
358
|
if (typeof elem._getFromAllFormElements === 'function') {
|
|
359
|
+
// @ts-ignore - dynamic property access
|
|
358
360
|
result[name] = elem._getFromAllFormElements(property);
|
|
359
361
|
} else {
|
|
362
|
+
// @ts-ignore - dynamic property access
|
|
360
363
|
result[name] = elem[property];
|
|
361
364
|
}
|
|
362
365
|
}
|
|
@@ -386,6 +389,7 @@ const FormGroupMixinImplementation = superclass =>
|
|
|
386
389
|
if (Array.isArray(this.formElements[name])) {
|
|
387
390
|
this.formElements[name].forEach(
|
|
388
391
|
(/** @type {FormControl} */ el, /** @type {number} */ index) => {
|
|
392
|
+
// @ts-ignore - dynamic property access
|
|
389
393
|
el[property] = values[name][index]; // eslint-disable-line no-param-reassign
|
|
390
394
|
},
|
|
391
395
|
);
|
|
@@ -393,6 +397,7 @@ const FormGroupMixinImplementation = superclass =>
|
|
|
393
397
|
if (this.formElements[name]) {
|
|
394
398
|
this.formElements[name][property] = values[name];
|
|
395
399
|
} else {
|
|
400
|
+
// @ts-ignore - dynamic property access
|
|
396
401
|
this.__pendingValues[property][name] = values[name];
|
|
397
402
|
}
|
|
398
403
|
});
|
|
@@ -406,6 +411,7 @@ const FormGroupMixinImplementation = superclass =>
|
|
|
406
411
|
_anyFormElementHas(property) {
|
|
407
412
|
return Object.keys(this.formElements).some(name => {
|
|
408
413
|
if (Array.isArray(this.formElements[name])) {
|
|
414
|
+
// @ts-ignore - dynamic property access
|
|
409
415
|
return this.formElements[name].some((/** @type {FormControl} */ el) => !!el[property]);
|
|
410
416
|
}
|
|
411
417
|
return !!this.formElements[name][property];
|
|
@@ -436,6 +442,7 @@ const FormGroupMixinImplementation = superclass =>
|
|
|
436
442
|
_everyFormElementHas(property) {
|
|
437
443
|
return Object.keys(this.formElements).every(name => {
|
|
438
444
|
if (Array.isArray(this.formElements[name])) {
|
|
445
|
+
// @ts-ignore - dynamic property access
|
|
439
446
|
return this.formElements[name].every((/** @type {FormControl} */ el) => !!el[property]);
|
|
440
447
|
}
|
|
441
448
|
return !!this.formElements[name][property];
|
|
@@ -162,15 +162,21 @@ const FormRegistrarMixinImplementation = superclass =>
|
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
if (name.substr(-2) === '[]') {
|
|
165
|
+
// @ts-ignore - dynamic named access to form elements
|
|
165
166
|
if (!Array.isArray(this.formElements[name])) {
|
|
167
|
+
// @ts-ignore
|
|
166
168
|
this.formElements[name] = new FormControlsCollection();
|
|
167
169
|
}
|
|
168
170
|
if (indexToInsertAt > 0) {
|
|
171
|
+
// @ts-ignore
|
|
169
172
|
this.formElements[name].splice(indexToInsertAt, 0, child);
|
|
170
173
|
} else {
|
|
174
|
+
// @ts-ignore
|
|
171
175
|
this.formElements[name].push(child);
|
|
172
176
|
}
|
|
177
|
+
// @ts-ignore
|
|
173
178
|
} else if (!this.formElements[name]) {
|
|
179
|
+
// @ts-ignore
|
|
174
180
|
this.formElements[name] = child;
|
|
175
181
|
} else {
|
|
176
182
|
console.info('Error Node:', child); // eslint-disable-line no-console
|
|
@@ -194,12 +200,17 @@ const FormRegistrarMixinImplementation = superclass =>
|
|
|
194
200
|
// 2. Handle name based object keys
|
|
195
201
|
if (this._isFormOrFieldset) {
|
|
196
202
|
const { name } = child; // FIXME: <-- ElementWithParentFormGroup should become LionFieldWithParentFormGroup so that "name" exists
|
|
203
|
+
// @ts-ignore - dynamic named access to form elements
|
|
197
204
|
if (name.substr(-2) === '[]' && this.formElements[name]) {
|
|
205
|
+
// @ts-ignore
|
|
198
206
|
const idx = this.formElements[name].indexOf(child);
|
|
199
207
|
if (idx > -1) {
|
|
208
|
+
// @ts-ignore
|
|
200
209
|
this.formElements[name].splice(idx, 1);
|
|
201
210
|
}
|
|
211
|
+
// @ts-ignore
|
|
202
212
|
} else if (this.formElements[name]) {
|
|
213
|
+
// @ts-ignore
|
|
203
214
|
delete this.formElements[name];
|
|
204
215
|
}
|
|
205
216
|
}
|
|
@@ -153,6 +153,7 @@ describe('FormControlMixin', () => {
|
|
|
153
153
|
el.shadowRoot?.querySelector('.form-field__label'),
|
|
154
154
|
);
|
|
155
155
|
Object.entries(expectedValues).forEach(([key, val]) => {
|
|
156
|
+
// @ts-ignore - dynamic style property access
|
|
156
157
|
expect(labelStyle[key]).to.equal(val);
|
|
157
158
|
});
|
|
158
159
|
});
|
|
@@ -191,7 +191,9 @@ describe('Validator', () => {
|
|
|
191
191
|
it('adds static ["_$isValidator$"] property as a marker to identify the Validator class across different lion versions (as instanceof cannot be used)', async () => {
|
|
192
192
|
const myValidator = new Validator();
|
|
193
193
|
|
|
194
|
+
// @ts-ignore - static property access
|
|
194
195
|
expect(myValidator.constructor['_$isValidator$']).to.exist;
|
|
196
|
+
// @ts-ignore - static property access
|
|
195
197
|
expect(myValidator.constructor['_$isValidator$']).to.be.true;
|
|
196
198
|
});
|
|
197
199
|
|
|
@@ -1554,11 +1554,13 @@ export function runValidateMixinSuite(customConfig) {
|
|
|
1554
1554
|
// eslint-disable-next-line no-restricted-syntax
|
|
1555
1555
|
for (const state of ['dirty', 'touched', 'prefilled', 'submitted']) {
|
|
1556
1556
|
counter += 1;
|
|
1557
|
+
// @ts-ignore - test property access
|
|
1557
1558
|
el[state] = false;
|
|
1558
1559
|
// eslint-disable-next-line no-await-in-loop
|
|
1559
1560
|
await el.updateComplete;
|
|
1560
1561
|
expect(spy.callCount).to.equal(counter);
|
|
1561
1562
|
counter += 1;
|
|
1563
|
+
// @ts-ignore - test property access
|
|
1562
1564
|
el[state] = true;
|
|
1563
1565
|
// eslint-disable-next-line no-await-in-loop
|
|
1564
1566
|
await el.updateComplete;
|
|
@@ -6,6 +6,7 @@ async function combineLocalizeImports(importPromises) {
|
|
|
6
6
|
const combinedResult = localizeObjects[0];
|
|
7
7
|
for (const localizeObject of localizeObjects.slice(1)) {
|
|
8
8
|
Object.entries(localizeObject.default).forEach(([key, val]) => {
|
|
9
|
+
// @ts-ignore - dynamic property access
|
|
9
10
|
combinedResult.default[key] = val;
|
|
10
11
|
});
|
|
11
12
|
}
|
|
@@ -4,12 +4,11 @@ import { IsDateDisabled, MaxDate, MinDate, MinMaxDate } from '@lion/ui/form-core
|
|
|
4
4
|
import { aTimeout, defineCE, expect, fixture as _fixture, nextFrame } from '@open-wc/testing';
|
|
5
5
|
import { mimicClick } from '@lion/ui/overlays-test-helpers.js';
|
|
6
6
|
import sinon from 'sinon';
|
|
7
|
-
import {
|
|
7
|
+
import { setViewport } from '@web/test-runner-commands';
|
|
8
8
|
import { DatepickerInputObject } from '@lion/ui/input-datepicker-test-helpers.js';
|
|
9
9
|
import { LionInputDatepicker } from '@lion/ui/input-datepicker.js';
|
|
10
10
|
|
|
11
11
|
import '@lion/ui/define/lion-input-datepicker.js';
|
|
12
|
-
import { runDatepickerSuite } from '../test-suites/LionInputDatepicker.suite.js';
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* @typedef {import('lit').TemplateResult} TemplateResult
|
|
@@ -480,14 +479,10 @@ describe('<lion-input-datepicker>', () => {
|
|
|
480
479
|
// Open the calendar
|
|
481
480
|
await elObj.openCalendar();
|
|
482
481
|
|
|
483
|
-
const selectedDateEl = calendarEl?.shadowRoot?.querySelector(
|
|
484
|
-
'.calendar__day-button[selected]',
|
|
485
|
-
);
|
|
486
|
-
// @ts-ignore
|
|
487
|
-
selectedDateEl?.focus();
|
|
488
|
-
|
|
489
482
|
// Move focus to 18th of December
|
|
490
|
-
|
|
483
|
+
calendarEl.shadowRoot
|
|
484
|
+
?.querySelector('#js-content-wrapper')
|
|
485
|
+
?.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowRight' }));
|
|
491
486
|
|
|
492
487
|
expect(/** @type {Date} */ (calendarEl.focusedDate).getTime()).to.equal(
|
|
493
488
|
new Date('December 18, 2020 03:24:00 GMT+0000').getTime(),
|
|
@@ -602,12 +597,11 @@ describe('<lion-input-datepicker>', () => {
|
|
|
602
597
|
<lion-input-datepicker label="End date" name="endDate"></lion-input-datepicker>
|
|
603
598
|
`);
|
|
604
599
|
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
const endLabel = elements.endDate.querySelector('button').ariaLabel;
|
|
600
|
+
const elements = el.parentElement?.children;
|
|
601
|
+
// @ts-ignore - accessing by name property
|
|
602
|
+
const startLabel = elements?.startDate?.querySelector('button')?.ariaLabel;
|
|
603
|
+
// @ts-ignore - accessing by name property
|
|
604
|
+
const endLabel = elements?.endDate?.querySelector('button')?.ariaLabel;
|
|
611
605
|
|
|
612
606
|
expect(startLabel).to.not.equal(endLabel);
|
|
613
607
|
});
|
|
@@ -839,8 +833,4 @@ describe('<lion-input-datepicker>', () => {
|
|
|
839
833
|
).to.be.true;
|
|
840
834
|
});
|
|
841
835
|
});
|
|
842
|
-
|
|
843
|
-
describe('Run suite', () => {
|
|
844
|
-
runDatepickerSuite();
|
|
845
|
-
});
|
|
846
836
|
});
|
|
@@ -10,8 +10,6 @@ import { LocalizeMixin } from '@lion/ui/localize-no-side-effects.js';
|
|
|
10
10
|
export class LionInputEmail extends LocalizeMixin(LionInput) {
|
|
11
11
|
constructor() {
|
|
12
12
|
super();
|
|
13
|
-
this.autocomplete = 'email';
|
|
14
|
-
|
|
15
13
|
// local-part@domain where the local part may be up to 64 characters long
|
|
16
14
|
// and the domain may have a maximum of 255 characters.
|
|
17
15
|
// @see https://www.wikiwand.com/en/Email_address
|
|
@@ -15,12 +15,6 @@ describe('<lion-input-email>', () => {
|
|
|
15
15
|
expect(_inputNode.type).to.equal('text');
|
|
16
16
|
});
|
|
17
17
|
|
|
18
|
-
it('sets autocomplete to "email"', async () => {
|
|
19
|
-
const el = await fixture(`<lion-input-email></lion-input-email>`);
|
|
20
|
-
// @ts-expect-error [allow-protected] inside tests
|
|
21
|
-
expect(el._inputNode.getAttribute('autocomplete')).to.equal('email');
|
|
22
|
-
});
|
|
23
|
-
|
|
24
18
|
it('has validator "IsEmail" applied by default', async () => {
|
|
25
19
|
// More elaborate tests can be found in lion-validate/test/StringValidators.test.js
|
|
26
20
|
const el = await fixture(`<lion-input-email></lion-input-email>`);
|
|
@@ -2,14 +2,13 @@ import { Validator } from '@lion/ui/form-core.js';
|
|
|
2
2
|
import { getLocalizeManager } from '@lion/ui/localize-no-side-effects.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* @typedef {import('../../form-core/types/validate/index.js').FeedbackMessageData} FeedbackMessageData
|
|
6
5
|
* @typedef {import('../../form-core/types/validate/validate.js').ValidatorConfig} ValidatorConfig
|
|
7
6
|
* @typedef {import('../../form-core/types/validate/validate.js').ValidatorParam} ValidatorParam
|
|
8
7
|
* @typedef {import('../../form-core/types/validate/validate.js').ValidatorOutcome} ValidatorOutcome
|
|
9
8
|
* @typedef {import('../types/input-file.js').InputFile} InputFile
|
|
10
9
|
*/
|
|
11
10
|
|
|
12
|
-
/* eslint max-classes-per-file: ["error",
|
|
11
|
+
/* eslint max-classes-per-file: ["error", 2] */
|
|
13
12
|
export class IsAcceptedFile extends Validator {
|
|
14
13
|
static validatorName = 'IsAcceptedFile';
|
|
15
14
|
|
|
@@ -113,32 +112,3 @@ export class DuplicateFileNames extends Validator {
|
|
|
113
112
|
return localizeManager.msg('lion-input-file:uploadTextDuplicateFileName');
|
|
114
113
|
}
|
|
115
114
|
}
|
|
116
|
-
|
|
117
|
-
export class MaxFileCount extends Validator {
|
|
118
|
-
static get validatorName() {
|
|
119
|
-
return 'MaxFileCount';
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* @param {Partial<FeedbackMessageData>} [data]
|
|
124
|
-
* @returns {Promise<string|Element>}
|
|
125
|
-
*/
|
|
126
|
-
static async getMessage(data) {
|
|
127
|
-
const localizeManager = getLocalizeManager();
|
|
128
|
-
if (!data?.params || typeof data.params !== 'number' || data.params <= 0) {
|
|
129
|
-
return 'Invalid MaxFileCount parameter. Please provide a valid number greater than 0.';
|
|
130
|
-
}
|
|
131
|
-
return localizeManager.msg('lion-input-file:maxFileCountExceeded', {
|
|
132
|
-
maxFileCount: data.params,
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* @param {File[]} value
|
|
138
|
-
* @param {number} maxFiles
|
|
139
|
-
* @returns {boolean}
|
|
140
|
-
*/
|
|
141
|
-
execute(value, maxFiles = this.param || 0) {
|
|
142
|
-
return maxFiles > 0 && value.length > maxFiles;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { expect } from '@open-wc/testing';
|
|
2
|
-
import { MaxFileCount } from '@lion/ui/input-file.js';
|
|
3
2
|
import { IsAcceptedFile } from '../src/validators.js';
|
|
4
3
|
|
|
5
4
|
describe('lion-input-file: IsAcceptedFile', () => {
|
|
@@ -168,34 +167,4 @@ describe('lion-input-file: IsAcceptedFile', () => {
|
|
|
168
167
|
expect(returnVal).to.be.true;
|
|
169
168
|
});
|
|
170
169
|
});
|
|
171
|
-
|
|
172
|
-
describe('Max File Count', () => {
|
|
173
|
-
/**
|
|
174
|
-
*
|
|
175
|
-
* @param {string} filename
|
|
176
|
-
* @returns {File}
|
|
177
|
-
*/
|
|
178
|
-
const newFile = filename => new File([], filename);
|
|
179
|
-
|
|
180
|
-
it('Allow up to 2 files', () => {
|
|
181
|
-
const validator = new MaxFileCount(2);
|
|
182
|
-
expect(MaxFileCount.validatorName).to.equal('MaxFileCount');
|
|
183
|
-
|
|
184
|
-
let isEnabled = validator.execute([newFile('file1.txt'), newFile('file2.txt')]);
|
|
185
|
-
expect(isEnabled).to.be.false;
|
|
186
|
-
|
|
187
|
-
isEnabled = validator.execute([
|
|
188
|
-
newFile('file1.txt'),
|
|
189
|
-
newFile('file2.txt'),
|
|
190
|
-
newFile('file3.txt'),
|
|
191
|
-
]);
|
|
192
|
-
expect(isEnabled).to.be.true;
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
it('Allow any number of files with empty param', () => {
|
|
196
|
-
const validator = new MaxFileCount();
|
|
197
|
-
const isEnabled = validator.execute([newFile('file1.txt'), newFile('file2.txt')]);
|
|
198
|
-
expect(isEnabled).to.be.false;
|
|
199
|
-
});
|
|
200
|
-
});
|
|
201
170
|
});
|
|
@@ -17,5 +17,4 @@ export default {
|
|
|
17
17
|
selectTextDuplicateFileName: 'Файл със същото име на файл вече е налице.',
|
|
18
18
|
selectTextMultipleFile: 'Избор на файлове',
|
|
19
19
|
selectTextSingleFile: 'Избор на файл',
|
|
20
|
-
maxFileCountExceeded: 'Броят на качените файлове не може да надвишава {maxFileCount}.',
|
|
21
20
|
};
|
|
@@ -18,5 +18,4 @@ export default {
|
|
|
18
18
|
selectTextDuplicateFileName: 'Soubor se stejným názvem byl již přítomen.',
|
|
19
19
|
selectTextMultipleFile: 'Vybrat soubory',
|
|
20
20
|
selectTextSingleFile: 'Vybrat soubor',
|
|
21
|
-
maxFileCountExceeded: 'Počet nahraných souborů nesmí překročit {maxFileCount}.',
|
|
22
21
|
};
|
|
@@ -17,6 +17,4 @@ export default {
|
|
|
17
17
|
selectTextDuplicateFileName: 'Eine Datei mit demselben Dateinamen war bereits vorhanden.',
|
|
18
18
|
selectTextMultipleFile: 'Dateien auswählen',
|
|
19
19
|
selectTextSingleFile: 'Datei auswählen',
|
|
20
|
-
maxFileCountExceeded:
|
|
21
|
-
'Die Anzahl der hochgeladenen Dateien darf {maxFileCount} nicht überschreiten.',
|
|
22
20
|
};
|
|
@@ -16,5 +16,4 @@ export default {
|
|
|
16
16
|
selectTextDuplicateFileName: 'A file with same filename was already present.',
|
|
17
17
|
selectTextMultipleFile: 'Select files',
|
|
18
18
|
selectTextSingleFile: 'Select file',
|
|
19
|
-
maxFileCountExceeded: 'The number of uploaded files must not exceed {maxFileCount}.',
|
|
20
19
|
};
|
|
@@ -17,5 +17,4 @@ export default {
|
|
|
17
17
|
selectTextDuplicateFileName: 'Ya había un archivo con el mismo nombre de archivo.',
|
|
18
18
|
selectTextMultipleFile: 'Seleccionar archivos',
|
|
19
19
|
selectTextSingleFile: 'Seleccionar archivo',
|
|
20
|
-
maxFileCountExceeded: 'El número de archivos cargados no puede superar {maxFileCount}.',
|
|
21
20
|
};
|
|
@@ -18,5 +18,4 @@ export default {
|
|
|
18
18
|
selectTextDuplicateFileName: 'Un fichier portant le même nom de fichier était déjà présent.',
|
|
19
19
|
selectTextMultipleFile: 'Sélectionnez des fichiers',
|
|
20
20
|
selectTextSingleFile: 'Sélectionnez un fichier',
|
|
21
|
-
maxFileCountExceeded: 'Le nombre de fichiers téléchargés ne peut pas dépasser {maxFileCount}.',
|
|
22
21
|
};
|
|
@@ -17,5 +17,4 @@ export default {
|
|
|
17
17
|
selectTextDuplicateFileName: 'Már volt ilyen nevű fájl.',
|
|
18
18
|
selectTextMultipleFile: 'Fájl(ok) kiválasztása',
|
|
19
19
|
selectTextSingleFile: 'Fájl kiválasztása',
|
|
20
|
-
maxFileCountExceeded: 'A feltöltött fájlok száma nem haladhatja meg a {maxFileCount}-ot.',
|
|
21
20
|
};
|
|
@@ -16,5 +16,4 @@ export default {
|
|
|
16
16
|
selectTextDuplicateFileName: 'File dengan nama file yang sama sudah ada.',
|
|
17
17
|
selectTextMultipleFile: 'Pilih beberapa file',
|
|
18
18
|
selectTextSingleFile: 'Pilih berkas',
|
|
19
|
-
maxFileCountExceeded: 'Jumlah file yang diunggah tidak boleh melebihi {maxFileCount}.',
|
|
20
19
|
};
|
|
@@ -17,5 +17,4 @@ export default {
|
|
|
17
17
|
selectTextDuplicateFileName: 'Un file con lo stesso nome file era già presente.',
|
|
18
18
|
selectTextMultipleFile: 'Seleziona file',
|
|
19
19
|
selectTextSingleFile: 'Seleziona file',
|
|
20
|
-
maxFileCountExceeded: 'Il numero di file caricati non può superare {maxFileCount}.',
|
|
21
20
|
};
|
|
@@ -17,5 +17,4 @@ export default {
|
|
|
17
17
|
selectTextDuplicateFileName: 'Er bestaat al een bestand met dezelfde bestandsnaam.',
|
|
18
18
|
selectTextMultipleFile: 'Selecteer bestanden',
|
|
19
19
|
selectTextSingleFile: 'Selecteer bestand',
|
|
20
|
-
maxFileCountExceeded: 'Het aantal geüploade bestanden mag niet meer dan {maxFileCount} zijn.',
|
|
21
20
|
};
|
|
@@ -17,5 +17,4 @@ export default {
|
|
|
17
17
|
selectTextDuplicateFileName: 'Plik o tej samej nazwie już istnieje.',
|
|
18
18
|
selectTextMultipleFile: 'Wybierz pliki',
|
|
19
19
|
selectTextSingleFile: 'Wybierz plik',
|
|
20
|
-
maxFileCountExceeded: 'Liczba przesłanych plików nie może przekraczać {maxFileCount}.',
|
|
21
20
|
};
|
|
@@ -17,5 +17,4 @@ export default {
|
|
|
17
17
|
selectTextDuplicateFileName: 'Există deja un fişier cu acelaşi nume de fişier.',
|
|
18
18
|
selectTextMultipleFile: 'Selectare fișiere',
|
|
19
19
|
selectTextSingleFile: 'Selectare fișier',
|
|
20
|
-
maxFileCountExceeded: 'Numărul de fișiere încărcate nu poate depăși {maxFileCount}.',
|
|
21
20
|
};
|
|
@@ -16,5 +16,4 @@ export default {
|
|
|
16
16
|
selectTextDuplicateFileName: 'Файл с таким названием уже существует.',
|
|
17
17
|
selectTextMultipleFile: 'Выберите файлы',
|
|
18
18
|
selectTextSingleFile: 'Выберите файл',
|
|
19
|
-
maxFileCountExceeded: 'Количество загруженных файлов не может превышать {maxFileCount}.',
|
|
20
19
|
};
|
|
@@ -17,5 +17,4 @@ export default {
|
|
|
17
17
|
selectTextDuplicateFileName: 'Súbor s rovnakým názvom súboru už existoval.',
|
|
18
18
|
selectTextMultipleFile: 'Vybrať súbory',
|
|
19
19
|
selectTextSingleFile: 'Vybrať súbor',
|
|
20
|
-
maxFileCountExceeded: 'Počet nahratých súborov nesmie prekročiť {maxFileCount}.',
|
|
21
20
|
};
|
|
@@ -17,5 +17,4 @@ export default {
|
|
|
17
17
|
selectTextDuplicateFileName: 'Файл із такою назвою вже існував.',
|
|
18
18
|
selectTextMultipleFile: 'Виберіть файли',
|
|
19
19
|
selectTextSingleFile: 'Виберіть файл',
|
|
20
|
-
maxFileCountExceeded: 'Кількість завантажених файлів не може перевищувати {maxFileCount}.',
|
|
21
20
|
};
|
|
@@ -137,7 +137,6 @@ export class LionInputTel extends LocalizeMixin(LionInput) {
|
|
|
137
137
|
*/
|
|
138
138
|
constructor() {
|
|
139
139
|
super();
|
|
140
|
-
this.autocomplete = 'tel';
|
|
141
140
|
|
|
142
141
|
/**
|
|
143
142
|
* Determines what the formatter output should look like.
|
|
@@ -193,6 +192,7 @@ export class LionInputTel extends LocalizeMixin(LionInput) {
|
|
|
193
192
|
*/
|
|
194
193
|
firstUpdated(changedProperties) {
|
|
195
194
|
super.firstUpdated(changedProperties);
|
|
195
|
+
|
|
196
196
|
// This will trigger the right keyboard on mobile
|
|
197
197
|
this._inputNode.inputMode = 'tel';
|
|
198
198
|
}
|
|
@@ -222,13 +222,6 @@ export function runInputTelSuite({ klass = LionInputTel } = {}) {
|
|
|
222
222
|
expect(el._inputNode.inputMode).to.equal('tel');
|
|
223
223
|
});
|
|
224
224
|
|
|
225
|
-
it('sets autocomplete to "tel"', async () => {
|
|
226
|
-
const el = await fixture(html` <${tag}></${tag}> `);
|
|
227
|
-
await el.updateComplete;
|
|
228
|
-
// @ts-expect-error [allow-protected] inside tests
|
|
229
|
-
expect(el._inputNode.getAttribute('autocomplete')).to.equal('tel');
|
|
230
|
-
});
|
|
231
|
-
|
|
232
225
|
it('formats according to locale', async () => {
|
|
233
226
|
const el = await fixture(
|
|
234
227
|
html` <${tag} .modelValue="${'+31612345678'}" .allowedRegions="${['NL']}"></${tag}> `,
|
|
@@ -210,6 +210,7 @@ describe('formatDate', () => {
|
|
|
210
210
|
locale,
|
|
211
211
|
};
|
|
212
212
|
const parsedDate = /** @type {Date} */ (parseDate('12.10.2019'));
|
|
213
|
+
// @ts-ignore - dynamic locale key access
|
|
213
214
|
expect(formatDate(parsedDate, options)).to.equal(LOCALE_FORMATTED_DATE_MAP[locale]);
|
|
214
215
|
});
|
|
215
216
|
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
Allow advanced preprocessing
|
|
2
|
+
|
|
3
|
+
- Turn '1' into '01-__-____'
|
|
4
|
+
- Turn ’20’ into ’20-’, -> ’20-4’ into ’20-04’ etc…
|
|
5
|
+
|
|
6
|
+
See: https://nosir.github.io/cleave.js/(But we should enhance the UX when editing the middle of a date)So:
|
|
7
|
+
|
|
8
|
+
```js
|
|
9
|
+
/** * @returns {string | { viewValue:string, caretIndex:number } } */
|
|
10
|
+
preprocessor(viewValue, { previousViewValue = ‘’, currentCaretIndex }) {
|
|
11
|
+
const diff = viewValue.length - previousViewValue.length;
|
|
12
|
+
if (diff === -1) && !isNaN(Number(previousViewValue[currentCaretIndex]))) {
|
|
13
|
+
// don’t respond to delete actions
|
|
14
|
+
return viewValue;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
let newValue = '';
|
|
18
|
+
const strippedVal = viewValue.replace('-', '');
|
|
19
|
+
let dashesPlaced = 0;
|
|
20
|
+
let newCaretIndex;
|
|
21
|
+
for (let i = 0; i < 10; i+= 1) {
|
|
22
|
+
if (i === 2 || i === 4) {
|
|
23
|
+
newValue += ‘-’;
|
|
24
|
+
dashesPlaced += 1;
|
|
25
|
+
}
|
|
26
|
+
else if (i < strippedVal.length + dashesPlaced) {
|
|
27
|
+
newValue += strippedVal[i];
|
|
28
|
+
} else {
|
|
29
|
+
newValue += ‘_’;
|
|
30
|
+
if (newCaretIndex === undefined) {
|
|
31
|
+
newCaretIndex = i;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return { viewValue: newValue, caretIndex: newCaretIndex };
|
|
36
|
+
}
|
|
37
|
+
```
|