@lion/ui 0.0.2 → 0.0.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.
- package/components/core/src/SlotMixin.js +180 -42
- package/components/core/test/SlotMixin.test.js +355 -145
- package/components/core/types/SlotMixinTypes.ts +12 -1
- package/components/input-tel/src/LionInputTel.js +0 -9
- package/components/input-tel-dropdown/src/LionInputTelDropdown.js +32 -29
- package/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.js +5 -6
- package/components/localize/src/number/parseNumber.js +15 -36
- package/components/localize/test/number/parseNumber.test.js +3 -12
- package/components/localize/types/LocalizeMixinTypes.ts +1 -1
- package/custom-elements.json +1435 -133
- package/dist-types/components/calendar/src/LionCalendar.d.ts +1 -37
- package/dist-types/components/calendar/src/LionCalendar.d.ts.map +1 -1
- package/dist-types/components/core/src/SlotMixin.d.ts +2 -0
- package/dist-types/components/core/src/SlotMixin.d.ts.map +1 -1
- package/dist-types/components/core/test/SlotMixin.test.d.ts +1 -1
- package/dist-types/components/core/test/SlotMixin.test.d.ts.map +1 -1
- package/dist-types/components/core/types/SlotMixinTypes.d.ts +9 -1
- package/dist-types/components/core/types/SlotMixinTypes.d.ts.map +1 -1
- package/dist-types/components/input-amount/src/LionInputAmount.d.ts +1 -37
- package/dist-types/components/input-amount/src/LionInputAmount.d.ts.map +1 -1
- package/dist-types/components/input-date/src/LionInputDate.d.ts +1 -37
- package/dist-types/components/input-date/src/LionInputDate.d.ts.map +1 -1
- package/dist-types/components/input-datepicker/src/LionCalendarOverlayFrame.d.ts +1 -37
- package/dist-types/components/input-datepicker/src/LionCalendarOverlayFrame.d.ts.map +1 -1
- package/dist-types/components/input-email/src/LionInputEmail.d.ts +1 -37
- package/dist-types/components/input-email/src/LionInputEmail.d.ts.map +1 -1
- package/dist-types/components/input-iban/src/LionInputIban.d.ts +1 -37
- package/dist-types/components/input-iban/src/LionInputIban.d.ts.map +1 -1
- package/dist-types/components/input-tel/src/LionInputTel.d.ts +1 -42
- package/dist-types/components/input-tel/src/LionInputTel.d.ts.map +1 -1
- package/dist-types/components/input-tel-dropdown/src/LionInputTelDropdown.d.ts +14 -8
- package/dist-types/components/input-tel-dropdown/src/LionInputTelDropdown.d.ts.map +1 -1
- package/dist-types/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.d.ts.map +1 -1
- package/dist-types/components/localize/src/LocalizeMixin.d.ts +1 -37
- package/dist-types/components/localize/src/LocalizeMixin.d.ts.map +1 -1
- package/dist-types/components/localize/src/number/parseNumber.d.ts.map +1 -1
- package/dist-types/components/localize/types/LocalizeMixinTypes.d.ts +1 -1
- package/dist-types/components/localize/types/LocalizeMixinTypes.d.ts.map +1 -1
- package/dist-types/components/pagination/src/LionPagination.d.ts +1 -37
- package/dist-types/components/pagination/src/LionPagination.d.ts.map +1 -1
- package/dist-types/components/progress-indicator/src/LionProgressIndicator.d.ts +1 -37
- package/dist-types/components/progress-indicator/src/LionProgressIndicator.d.ts.map +1 -1
- package/dist-types/exports/core.d.ts +1 -0
- package/dist-types/exports/core.d.ts.map +1 -1
- package/dist-types/exports/form-core.d.ts +2 -0
- package/dist-types/exports/form-core.d.ts.map +1 -1
- package/dist-types/exports/input-tel-dropdown.d.ts +2 -0
- package/dist-types/exports/input-tel-dropdown.d.ts.map +1 -1
- package/dist-types/exports/input-tel.d.ts +1 -0
- package/dist-types/exports/input-tel.d.ts.map +1 -1
- package/dist-types/exports/localize.d.ts +3 -0
- package/dist-types/exports/localize.d.ts.map +1 -1
- package/dist-types/exports/overlays.d.ts +4 -0
- package/dist-types/exports/overlays.d.ts.map +1 -1
- package/dist-types/tsconfig.tsbuildinfo +1 -1
- package/docs/components/accordion/index.md +3 -0
- package/docs/components/accordion/overview.md +129 -0
- package/docs/components/accordion/reference.md +47 -0
- package/docs/components/accordion/use-cases.md +252 -0
- package/docs/components/button/examples.md +30 -0
- package/docs/components/button/index.md +3 -0
- package/docs/components/button/overview.md +30 -0
- package/docs/components/button/src/icon.svg.js +5 -0
- package/docs/components/button/use-cases.md +106 -0
- package/docs/components/calendar/index.md +3 -0
- package/docs/components/calendar/overview.md +49 -0
- package/docs/components/calendar/use-cases.md +192 -0
- package/docs/components/checkbox-group/index.md +3 -0
- package/docs/components/checkbox-group/overview.md +40 -0
- package/docs/components/checkbox-group/use-cases.md +256 -0
- package/docs/components/collapsible/assets/CustomCollapsible.js +113 -0
- package/docs/components/collapsible/assets/applyDemoCollapsibleStyles.js +37 -0
- package/docs/components/collapsible/examples.md +83 -0
- package/docs/components/collapsible/index.md +3 -0
- package/docs/components/collapsible/overview.md +39 -0
- package/docs/components/collapsible/use-cases.md +79 -0
- package/docs/components/combobox/examples.md +153 -0
- package/docs/components/combobox/index.md +3 -0
- package/docs/components/combobox/overview.md +51 -0
- package/docs/components/combobox/src/LinkMixin.js +60 -0
- package/docs/components/combobox/src/demo-selection-display.js +191 -0
- package/docs/components/combobox/src/gh-combobox/gh-button.js +69 -0
- package/docs/components/combobox/src/gh-combobox/gh-combobox.js +508 -0
- package/docs/components/combobox/src/google-combobox/assets/google-clear-icon.js +9 -0
- package/docs/components/combobox/src/google-combobox/assets/google-search-icon.js +9 -0
- package/docs/components/combobox/src/google-combobox/assets/google-voice-search-icon.js +19 -0
- package/docs/components/combobox/src/google-combobox/assets/googlelogo_color_272x92dp.png +0 -0
- package/docs/components/combobox/src/google-combobox/google-combobox.js +460 -0
- package/docs/components/combobox/src/lazyRender.js +29 -0
- package/docs/components/combobox/src/levenshtein.js +95 -0
- package/docs/components/combobox/src/md-combobox/MdFieldMixin.js +341 -0
- package/docs/components/combobox/src/md-combobox/md-combobox.js +89 -0
- package/docs/components/combobox/src/md-combobox/md-input.js +5 -0
- package/docs/components/combobox/src/md-combobox/style/load-roboto.js +6 -0
- package/docs/components/combobox/src/md-combobox/style/md-ripple.js +81 -0
- package/docs/components/combobox/src/wa-combobox/wa-combobox.js +368 -0
- package/docs/components/combobox/use-cases.md +377 -0
- package/docs/components/dialog/index.md +3 -0
- package/docs/components/dialog/overview.md +63 -0
- package/docs/components/dialog/src/demo-dialog-style.js +3 -0
- package/docs/components/dialog/src/demoStyle.js +39 -0
- package/docs/components/dialog/src/slots-dialog-content.js +32 -0
- package/docs/components/dialog/src/styled-dialog-content.js +38 -0
- package/docs/components/dialog/use-cases.md +154 -0
- package/docs/components/drawer/index.md +3 -0
- package/docs/components/drawer/overview.md +68 -0
- package/docs/components/drawer/src/demoStyle.js +71 -0
- package/docs/components/drawer/use-cases.md +194 -0
- package/docs/components/fieldset/index.md +3 -0
- package/docs/components/fieldset/overview.md +49 -0
- package/docs/components/fieldset/use-cases.md +185 -0
- package/docs/components/form/index.md +3 -0
- package/docs/components/form/overview.md +43 -0
- package/docs/components/form/use-cases.md +72 -0
- package/docs/components/icon/assets/bugs/bug01.svg.js +2 -0
- package/docs/components/icon/assets/bugs/bug02.svg.js +2 -0
- package/docs/components/icon/assets/bugs/bug05.svg.js +2 -0
- package/docs/components/icon/assets/bugs/bug06.svg.js +2 -0
- package/docs/components/icon/assets/bugs/bug08.svg.js +2 -0
- package/docs/components/icon/assets/bugs/bug12.svg.js +2 -0
- package/docs/components/icon/assets/bugs/bug19.svg.js +2 -0
- package/docs/components/icon/assets/bugs/bug23.svg.js +2 -0
- package/docs/components/icon/assets/bugs/bug24.svg.js +2 -0
- package/docs/components/icon/assets/iconset-bugs.js +11 -0
- package/docs/components/icon/assets/iconset-misc.js +3 -0
- package/docs/components/icon/assets/iconset-space.js +31 -0
- package/docs/components/icon/assets/misc/arrowLeft.svg.js +6 -0
- package/docs/components/icon/assets/space/aliens-spaceship.svg.js +2 -0
- package/docs/components/icon/assets/space/meteor.svg.js +2 -0
- package/docs/components/icon/assets/space/moon-flag.svg.js +2 -0
- package/docs/components/icon/assets/space/moon.svg.js +2 -0
- package/docs/components/icon/assets/space/night.svg.js +2 -0
- package/docs/components/icon/assets/space/orbit.svg.js +2 -0
- package/docs/components/icon/assets/space/planet.svg.js +2 -0
- package/docs/components/icon/assets/space/robot.svg.js +2 -0
- package/docs/components/icon/assets/space/rocket.svg.js +2 -0
- package/docs/components/icon/assets/space/satellite.svg.js +2 -0
- package/docs/components/icon/assets/space/signal.svg.js +2 -0
- package/docs/components/icon/assets/space/space-helmet.svg.js +2 -0
- package/docs/components/icon/assets/space/sun.svg.js +2 -0
- package/docs/components/icon/assets/space/telescope.svg.js +2 -0
- package/docs/components/icon/index.md +3 -0
- package/docs/components/icon/overview.md +40 -0
- package/docs/components/icon/use-cases.md +93 -0
- package/docs/components/index.md +7 -0
- package/docs/components/input/index.md +3 -0
- package/docs/components/input/overview.md +36 -0
- package/docs/components/input/use-cases.md +77 -0
- package/docs/components/input-amount/index.md +3 -0
- package/docs/components/input-amount/overview.md +49 -0
- package/docs/components/input-amount/use-cases.md +122 -0
- package/docs/components/input-date/index.md +3 -0
- package/docs/components/input-date/overview.md +39 -0
- package/docs/components/input-date/use-cases.md +83 -0
- package/docs/components/input-datepicker/index.md +3 -0
- package/docs/components/input-datepicker/overview.md +42 -0
- package/docs/components/input-datepicker/use-cases.md +78 -0
- package/docs/components/input-email/index.md +3 -0
- package/docs/components/input-email/overview.md +32 -0
- package/docs/components/input-email/use-cases.md +48 -0
- package/docs/components/input-iban/index.md +3 -0
- package/docs/components/input-iban/overview.md +37 -0
- package/docs/components/input-iban/use-cases.md +102 -0
- package/docs/components/input-range/index.md +3 -0
- package/docs/components/input-range/overview.md +34 -0
- package/docs/components/input-range/use-cases.md +108 -0
- package/docs/components/input-stepper/index.md +3 -0
- package/docs/components/input-stepper/overview.md +36 -0
- package/docs/components/input-stepper/use-cases.md +41 -0
- package/docs/components/input-tel/index.md +3 -0
- package/docs/components/input-tel/overview.md +62 -0
- package/docs/components/input-tel/src/h-region-code-table.js +109 -0
- package/docs/components/input-tel/use-cases.md +307 -0
- package/docs/components/input-tel-dropdown/examples.md +32 -0
- package/docs/components/input-tel-dropdown/index.md +3 -0
- package/docs/components/input-tel-dropdown/overview.md +38 -0
- package/docs/components/input-tel-dropdown/src/intl-input-tel-dropdown.js +127 -0
- package/docs/components/input-tel-dropdown/use-cases.md +159 -0
- package/docs/components/listbox/index.md +3 -0
- package/docs/components/listbox/overview.md +42 -0
- package/docs/components/listbox/src/listboxData.js +65 -0
- package/docs/components/listbox/use-cases.md +147 -0
- package/docs/components/pagination/index.md +3 -0
- package/docs/components/pagination/overview.md +29 -0
- package/docs/components/pagination/use-cases.md +99 -0
- package/docs/components/progress-indicator/assets/my-determinate-progress-bar.js +30 -0
- package/docs/components/progress-indicator/assets/my-indeterminate-progress-spinner.js +55 -0
- package/docs/components/progress-indicator/examples.md +125 -0
- package/docs/components/progress-indicator/index.md +3 -0
- package/docs/components/progress-indicator/overview.md +36 -0
- package/docs/components/radio-group/index.md +3 -0
- package/docs/components/radio-group/overview.md +46 -0
- package/docs/components/radio-group/use-cases.md +140 -0
- package/docs/components/select/index.md +3 -0
- package/docs/components/select/overview.md +44 -0
- package/docs/components/select/use-cases.md +55 -0
- package/docs/components/select-rich/examples.md +31 -0
- package/docs/components/select-rich/index.md +3 -0
- package/docs/components/select-rich/overview.md +46 -0
- package/docs/components/select-rich/src/flagStyles.js +1250 -0
- package/docs/components/select-rich/src/flags.png +0 -0
- package/docs/components/select-rich/src/flags@2x.png +0 -0
- package/docs/components/select-rich/src/intl-select-rich.js +194 -0
- package/docs/components/select-rich/src/regionMetaList.js +1717 -0
- package/docs/components/select-rich/use-cases.md +370 -0
- package/docs/components/steps/index.md +3 -0
- package/docs/components/steps/overview.md +63 -0
- package/docs/components/steps/use-cases.md +163 -0
- package/docs/components/switch/index.md +3 -0
- package/docs/components/switch/overview.md +75 -0
- package/docs/components/switch/reference.md +39 -0
- package/docs/components/switch/use-cases.md +76 -0
- package/docs/components/tabs/examples.md +23 -0
- package/docs/components/tabs/index.md +3 -0
- package/docs/components/tabs/overview.md +48 -0
- package/docs/components/tabs/src/lea-tab-panel.js +24 -0
- package/docs/components/tabs/src/lea-tab.js +45 -0
- package/docs/components/tabs/src/lea-tabs.js +28 -0
- package/docs/components/tabs/use-cases.md +219 -0
- package/docs/components/textarea/index.md +3 -0
- package/docs/components/textarea/overview.md +35 -0
- package/docs/components/textarea/use-cases.md +95 -0
- package/docs/components/tooltip/examples.md +39 -0
- package/docs/components/tooltip/index.md +3 -0
- package/docs/components/tooltip/overview.md +44 -0
- package/docs/components/tooltip/use-cases.md +208 -0
- package/docs/fundamentals/index.md +19 -0
- package/docs/fundamentals/node-tools/babel-plugin-extend-docs/index.md +1 -0
- package/docs/fundamentals/node-tools/babel-plugin-extend-docs/overview.md +233 -0
- package/docs/fundamentals/node-tools/index.md +1 -0
- package/docs/fundamentals/node-tools/providence-analytics/LocalConfiguration.md +68 -0
- package/docs/fundamentals/node-tools/providence-analytics/QueryResult.md +111 -0
- package/docs/fundamentals/node-tools/providence-analytics/analyzer.md +69 -0
- package/docs/fundamentals/node-tools/providence-analytics/assets/_mermaid.svg.js +1202 -0
- package/docs/fundamentals/node-tools/providence-analytics/dashboard.md +22 -0
- package/docs/fundamentals/node-tools/providence-analytics/index.md +1 -0
- package/docs/fundamentals/node-tools/providence-analytics/overview.md +192 -0
- package/docs/fundamentals/node-tools/publish-docs/index.md +1 -0
- package/docs/fundamentals/node-tools/publish-docs/overview.md +136 -0
- package/docs/fundamentals/node-tools/remark-extend/index.md +1 -0
- package/docs/fundamentals/node-tools/remark-extend/overview.md +274 -0
- package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/index.md +1 -0
- package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +285 -0
- package/docs/fundamentals/rationales/TypeScript.md +18 -0
- package/docs/fundamentals/rationales/index.md +1 -0
- package/docs/fundamentals/rationales/side-effects.md +203 -0
- package/docs/fundamentals/rationales/versioning.md +35 -0
- package/docs/fundamentals/systems/core/index.md +3 -0
- package/docs/fundamentals/systems/core/overview.md +85 -0
- package/docs/fundamentals/systems/form/assets/FormatMixinDiagram-1.svg +1 -0
- package/docs/fundamentals/systems/form/assets/FormatMixinDiagram-2.svg +1 -0
- package/docs/fundamentals/systems/form/assets/FormatMixinDiagram-3.svg +84 -0
- package/docs/fundamentals/systems/form/assets/h-output.js +155 -0
- package/docs/fundamentals/systems/form/formatting-and-parsing.md +245 -0
- package/docs/fundamentals/systems/form/index.md +3 -0
- package/docs/fundamentals/systems/form/interaction-states.md +177 -0
- package/docs/fundamentals/systems/form/model-value.md +35 -0
- package/docs/fundamentals/systems/form/overview.md +82 -0
- package/docs/fundamentals/systems/form/styling.md +101 -0
- package/docs/fundamentals/systems/form/use-cases.md +156 -0
- package/docs/fundamentals/systems/form/validate.md +929 -0
- package/docs/fundamentals/systems/icon/index.md +3 -0
- package/docs/fundamentals/systems/icon/overview.md +124 -0
- package/docs/fundamentals/systems/index.md +1 -0
- package/docs/fundamentals/systems/localize/assets/all-locales.js +437 -0
- package/docs/fundamentals/systems/localize/assets/en-AU.js +6 -0
- package/docs/fundamentals/systems/localize/assets/en-GB.js +6 -0
- package/docs/fundamentals/systems/localize/assets/en-US.js +6 -0
- package/docs/fundamentals/systems/localize/assets/en.js +4 -0
- package/docs/fundamentals/systems/localize/assets/nl-BE.js +6 -0
- package/docs/fundamentals/systems/localize/assets/nl-NL.js +6 -0
- package/docs/fundamentals/systems/localize/assets/nl.js +4 -0
- package/docs/fundamentals/systems/localize/dates.md +195 -0
- package/docs/fundamentals/systems/localize/index.md +3 -0
- package/docs/fundamentals/systems/localize/numbers.md +217 -0
- package/docs/fundamentals/systems/localize/overview.md +48 -0
- package/docs/fundamentals/systems/localize/rationale.md +62 -0
- package/docs/fundamentals/systems/localize/text.md +125 -0
- package/docs/fundamentals/systems/localize/use-cases.md +319 -0
- package/docs/fundamentals/systems/overlays/assets/applyDemoOverlayStyles.js +22 -0
- package/docs/fundamentals/systems/overlays/assets/demo-overlay-backdrop.js +48 -0
- package/docs/fundamentals/systems/overlays/assets/demo-overlay-system.js +42 -0
- package/docs/fundamentals/systems/overlays/assets/umbrella-form.js +133 -0
- package/docs/fundamentals/systems/overlays/configuration.md +453 -0
- package/docs/fundamentals/systems/overlays/form-integration.md +65 -0
- package/docs/fundamentals/systems/overlays/index.md +3 -0
- package/docs/fundamentals/systems/overlays/overview.md +118 -0
- package/docs/fundamentals/systems/overlays/rationale.md +232 -0
- package/docs/fundamentals/systems/overlays/scope.md +176 -0
- package/docs/fundamentals/systems/overlays/use-cases.md +699 -0
- package/docs/fundamentals/tools/ajax/assets/naga.json +9 -0
- package/docs/fundamentals/tools/ajax/assets/pabu.json +9 -0
- package/docs/fundamentals/tools/ajax/index.md +3 -0
- package/docs/fundamentals/tools/ajax/overview.md +128 -0
- package/docs/fundamentals/tools/ajax/use-cases.md +456 -0
- package/docs/fundamentals/tools/helpers/action-logger.md +165 -0
- package/docs/fundamentals/tools/helpers/index.md +3 -0
- package/docs/fundamentals/tools/helpers/overview.md +30 -0
- package/docs/fundamentals/tools/index.md +1 -0
- package/docs/fundamentals/tools/singleton-manager/index.md +3 -0
- package/docs/fundamentals/tools/singleton-manager/overview.md +304 -0
- package/docs/guides/how-to/create-a-custom-field.md +200 -0
- package/docs/guides/how-to/extend-a-native-input.md +66 -0
- package/docs/guides/how-to/get-started.md +77 -0
- package/docs/guides/how-to/index.md +1 -0
- package/docs/guides/index.md +34 -0
- package/docs/guides/principles/definitions-and-terms.md +41 -0
- package/docs/guides/principles/index.md +26 -0
- package/docs/guides/principles/scoped-elements.md +103 -0
- package/docs/guides/principles/styling.md +32 -0
- package/docs/guides/principles/subclasser-apis.md +28 -0
- package/docs/override.js +15 -0
- package/exports/core.js +2 -0
- package/exports/form-core.js +3 -0
- package/exports/input-tel-dropdown.js +3 -0
- package/exports/input-tel.js +2 -0
- package/exports/localize.js +4 -0
- package/exports/overlays.js +5 -0
- package/package.json +3 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { html,
|
|
1
|
+
import { html, css } from 'lit';
|
|
2
2
|
import { ref, createRef } from 'lit/directives/ref.js';
|
|
3
3
|
|
|
4
4
|
import { LionInputTel } from '@lion/ui/input-tel.js';
|
|
@@ -99,6 +99,7 @@ export class LionInputTelDropdown extends LionInputTel {
|
|
|
99
99
|
},
|
|
100
100
|
},
|
|
101
101
|
};
|
|
102
|
+
|
|
102
103
|
return {
|
|
103
104
|
refs,
|
|
104
105
|
data: {
|
|
@@ -155,7 +156,7 @@ export class LionInputTelDropdown extends LionInputTel {
|
|
|
155
156
|
css`
|
|
156
157
|
/**
|
|
157
158
|
* We need to align the height of the dropdown with the height of the text field.
|
|
158
|
-
* We target the HTMLDivElement
|
|
159
|
+
* We target the HTMLDivElement (render wrapper from SlotMixin) here. Its child,
|
|
159
160
|
* [data-ref=dropdown], recieves a 100% height as well via inline styles (since we
|
|
160
161
|
* can't target from shadow styles).
|
|
161
162
|
*/
|
|
@@ -171,7 +172,17 @@ export class LionInputTelDropdown extends LionInputTel {
|
|
|
171
172
|
get slots() {
|
|
172
173
|
return {
|
|
173
174
|
...super.slots,
|
|
174
|
-
prefix: () =>
|
|
175
|
+
prefix: () => {
|
|
176
|
+
const ctor = /** @type {typeof LionInputTelDropdown} */ (this.constructor);
|
|
177
|
+
const { templates } = ctor;
|
|
178
|
+
|
|
179
|
+
return {
|
|
180
|
+
template: templates.dropdown(this._templateDataDropdown),
|
|
181
|
+
afterRender: () => {
|
|
182
|
+
this.__syncRegionWithDropdown();
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
},
|
|
175
186
|
};
|
|
176
187
|
}
|
|
177
188
|
|
|
@@ -186,7 +197,6 @@ export class LionInputTelDropdown extends LionInputTel {
|
|
|
186
197
|
type: 'region',
|
|
187
198
|
});
|
|
188
199
|
this.__createRegionMeta();
|
|
189
|
-
this._scheduleLightDomRender();
|
|
190
200
|
}
|
|
191
201
|
|
|
192
202
|
/**
|
|
@@ -195,6 +205,8 @@ export class LionInputTelDropdown extends LionInputTel {
|
|
|
195
205
|
_onPhoneNumberUtilReady() {
|
|
196
206
|
super._onPhoneNumberUtilReady();
|
|
197
207
|
this.__createRegionMeta();
|
|
208
|
+
// render dropdown (trigger render of prefix slot via SlotMixin)
|
|
209
|
+
this.requestUpdate();
|
|
198
210
|
}
|
|
199
211
|
|
|
200
212
|
/**
|
|
@@ -219,9 +231,6 @@ export class LionInputTelDropdown extends LionInputTel {
|
|
|
219
231
|
*/
|
|
220
232
|
this._preferredCountriesLabel = '';
|
|
221
233
|
|
|
222
|
-
/** @type {HTMLDivElement} */
|
|
223
|
-
this.__dropdownRenderParent = document.createElement('div');
|
|
224
|
-
|
|
225
234
|
/**
|
|
226
235
|
* Contains everything needed for rendering region options:
|
|
227
236
|
* region code, country code, display name according to locale, display name
|
|
@@ -259,9 +268,6 @@ export class LionInputTelDropdown extends LionInputTel {
|
|
|
259
268
|
updated(changedProperties) {
|
|
260
269
|
super.updated(changedProperties);
|
|
261
270
|
|
|
262
|
-
if (changedProperties.has('_needsLightDomRender')) {
|
|
263
|
-
this.__renderDropdown();
|
|
264
|
-
}
|
|
265
271
|
if (changedProperties.has('activeRegion')) {
|
|
266
272
|
this.__syncRegionWithDropdown();
|
|
267
273
|
}
|
|
@@ -326,6 +332,7 @@ export class LionInputTelDropdown extends LionInputTel {
|
|
|
326
332
|
if (prevActiveRegion !== this.activeRegion && !this.focused && this._phoneUtil) {
|
|
327
333
|
const prevCountryCode = this._phoneUtil.getCountryCodeForRegionCode(prevActiveRegion);
|
|
328
334
|
const countryCode = this._phoneUtil.getCountryCodeForRegionCode(this.activeRegion);
|
|
335
|
+
|
|
329
336
|
if (this.value.includes(`+${prevCountryCode}`)) {
|
|
330
337
|
this.modelValue = this._callParser(
|
|
331
338
|
this.value.replace(`+${prevCountryCode}`, `+${countryCode}`),
|
|
@@ -350,25 +357,6 @@ export class LionInputTelDropdown extends LionInputTel {
|
|
|
350
357
|
}
|
|
351
358
|
}
|
|
352
359
|
|
|
353
|
-
/**
|
|
354
|
-
* Abstract away rendering to light dom, so that we can rerender when needed
|
|
355
|
-
* @private
|
|
356
|
-
*/
|
|
357
|
-
__renderDropdown() {
|
|
358
|
-
const ctor = /** @type {typeof LionInputTelDropdown} */ (this.constructor);
|
|
359
|
-
// If the user locally overrode the templates, get those on the instance
|
|
360
|
-
const templates = this.templates || ctor.templates;
|
|
361
|
-
render(
|
|
362
|
-
templates.dropdown(this._templateDataDropdown),
|
|
363
|
-
this.__dropdownRenderParent,
|
|
364
|
-
/** @type {RenderOptions} */ ({
|
|
365
|
-
scopeName: this.localName,
|
|
366
|
-
eventContext: this,
|
|
367
|
-
}),
|
|
368
|
-
);
|
|
369
|
-
this.__syncRegionWithDropdown();
|
|
370
|
-
}
|
|
371
|
-
|
|
372
360
|
/**
|
|
373
361
|
* @private
|
|
374
362
|
*/
|
|
@@ -411,6 +399,7 @@ export class LionInputTelDropdown extends LionInputTel {
|
|
|
411
399
|
if (!this._allowedOrAllRegions?.length || !this.__namesForLocale) {
|
|
412
400
|
return;
|
|
413
401
|
}
|
|
402
|
+
|
|
414
403
|
this.__regionMetaList = [];
|
|
415
404
|
this.__regionMetaListPreferred = [];
|
|
416
405
|
this._allowedOrAllRegions.forEach(regionCode => {
|
|
@@ -436,4 +425,18 @@ export class LionInputTelDropdown extends LionInputTel {
|
|
|
436
425
|
});
|
|
437
426
|
});
|
|
438
427
|
}
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* Usually, we don't use composition in regular LionFields (non choice-groups). Here we use a LionSelect(Rich) inside.
|
|
431
|
+
* We don't want to repropagate any children, since an Application Developer is not concerned with these internals (see repropate logic in FormControlMixin)
|
|
432
|
+
* Also, we don't want to give (wrong) info to InteractionStateMixin, that will set the wrong interaction states based on child info.
|
|
433
|
+
* TODO: Make "this._repropagationRole !== 'child'" the default for FormControlMixin
|
|
434
|
+
* (so that FormControls used within are never repropagated for LionFields)
|
|
435
|
+
* @protected
|
|
436
|
+
* @configure FormControlMixin: don't repropagate any children
|
|
437
|
+
*/
|
|
438
|
+
// eslint-disable-next-line class-methods-use-this
|
|
439
|
+
_repropagationCondition() {
|
|
440
|
+
return false;
|
|
441
|
+
}
|
|
439
442
|
}
|
|
@@ -91,8 +91,7 @@ export function runInputTelDropdownSuite({ klass } = { klass: LionInputTelDropdo
|
|
|
91
91
|
|
|
92
92
|
it('syncs value of dropdown on init if input has no value does not influence interaction states', async () => {
|
|
93
93
|
const el = await fixture(html` <${tag}></${tag}> `);
|
|
94
|
-
|
|
95
|
-
// expect(el.dirty).to.be.false;
|
|
94
|
+
expect(el.dirty).to.be.false;
|
|
96
95
|
expect(el.prefilled).to.be.false;
|
|
97
96
|
});
|
|
98
97
|
|
|
@@ -111,8 +110,7 @@ export function runInputTelDropdownSuite({ klass } = { klass: LionInputTelDropdo
|
|
|
111
110
|
|
|
112
111
|
it('sets correct interaction states on init if input has a value', async () => {
|
|
113
112
|
const el = await fixture(html` <${tag} .modelValue="${'+31612345678'}"></${tag}> `);
|
|
114
|
-
|
|
115
|
-
// expect(el.dirty).to.be.false;
|
|
113
|
+
expect(el.dirty).to.be.false;
|
|
116
114
|
expect(el.prefilled).to.be.true;
|
|
117
115
|
});
|
|
118
116
|
|
|
@@ -245,10 +243,10 @@ export function runInputTelDropdownSuite({ klass } = { klass: LionInputTelDropdo
|
|
|
245
243
|
const { resolveLoaded } = mockPhoneUtilManager();
|
|
246
244
|
const el = await fixture(html` <${tag} .allowedRegions="${['DE']}"></${tag}> `);
|
|
247
245
|
// @ts-ignore
|
|
248
|
-
const spy = sinon.spy(el, '
|
|
246
|
+
const spy = sinon.spy(el, '__rerenderSlot');
|
|
249
247
|
resolveLoaded(undefined);
|
|
250
248
|
await aTimeout(0);
|
|
251
|
-
expect(spy).to.have.been.
|
|
249
|
+
expect(spy).to.have.been.calledWith('prefix');
|
|
252
250
|
restorePhoneUtilManager();
|
|
253
251
|
spy.restore();
|
|
254
252
|
});
|
|
@@ -323,6 +321,7 @@ export function runInputTelDropdownSuite({ klass } = { klass: LionInputTelDropdo
|
|
|
323
321
|
mimicUserChangingDropdown(el.refs.dropdown.value, 'BE');
|
|
324
322
|
await el.updateComplete;
|
|
325
323
|
await el.updateComplete;
|
|
324
|
+
|
|
326
325
|
expect(el.value).to.equal('+32 612345678');
|
|
327
326
|
});
|
|
328
327
|
|
|
@@ -1,56 +1,35 @@
|
|
|
1
1
|
import { getDecimalSeparator } from './getDecimalSeparator.js';
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* @param {string} value to evaluate
|
|
5
|
-
* @return {boolean} true if value equal . or ,
|
|
6
|
-
*/
|
|
7
|
-
function isDecimalSeparator(value) {
|
|
8
|
-
return value === '.' || value === ',';
|
|
9
|
-
}
|
|
10
|
-
|
|
11
3
|
/**
|
|
12
4
|
* Determines the best possible parsing mode.
|
|
13
5
|
*
|
|
14
|
-
*
|
|
15
|
-
* -
|
|
16
|
-
* -
|
|
17
|
-
* -
|
|
18
|
-
* - [space]123 => xxx123 (heuristic)
|
|
19
|
-
* - ,123 => unclear
|
|
20
|
-
* - if 1.000,123 (we find a different separator) => 1000.123 (heuristic)
|
|
21
|
-
* - if 1,000,123 (we find only same separators) => 1000123 (unparseable)
|
|
22
|
-
* - if 100,123 (we find no more separators) => unclear
|
|
23
|
-
* - if en => 100123 (withLocale)
|
|
24
|
-
* - if nl => 100.123 (withLocale)
|
|
25
|
-
*
|
|
26
|
-
* See also {@link parseAmount}
|
|
6
|
+
* It has 3 "methods" of returning numbers
|
|
7
|
+
* - 'unparseable': becomes just numbers
|
|
8
|
+
* - 'withLocale': result depends on given or global locale
|
|
9
|
+
* - 'heuristic': result depends on considering separators
|
|
27
10
|
*
|
|
28
11
|
* @example
|
|
29
|
-
*
|
|
12
|
+
* parseNumber('1.234.567'); // method: unparseable => 1234567
|
|
13
|
+
* parseNumber('1.234'); // method: withLocale => depending on locale 1234 or 1.234
|
|
14
|
+
* parseNumber('1.234,56'); // method: heuristic => 1234.56
|
|
15
|
+
* parseNumber('1 234.56'); // method: heuristic => 1234.56
|
|
16
|
+
* parseNumber('1,234.56'); // method: heuristic => 1234.56
|
|
30
17
|
*
|
|
31
18
|
* @param {string} value Clean number (only [0-9 ,.]) to be parsed
|
|
19
|
+
* @param {object} options
|
|
20
|
+
* @param {string?} [options.mode] auto|pasted
|
|
32
21
|
* @return {string} unparseable|withLocale|heuristic
|
|
33
22
|
*/
|
|
34
23
|
function getParseMode(value, { mode = 'auto' } = {}) {
|
|
35
24
|
const separators = value.match(/[., ]/g);
|
|
36
25
|
|
|
37
|
-
if (mode === 'auto' && separators
|
|
26
|
+
if (!separators || (mode === 'auto' && separators.length === 1)) {
|
|
38
27
|
return 'withLocale';
|
|
39
28
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const charAtLastSeparatorPosition = value[value.length - 4];
|
|
43
|
-
if (isDecimalSeparator(charAtLastSeparatorPosition)) {
|
|
44
|
-
const firstPart = value.substring(0, value.length - 4);
|
|
45
|
-
const otherSeparators = firstPart.match(/[., ]/g);
|
|
46
|
-
if (otherSeparators) {
|
|
47
|
-
const lastSeparator = charAtLastSeparatorPosition;
|
|
48
|
-
return otherSeparators.indexOf(lastSeparator) === -1 ? 'heuristic' : 'unparseable';
|
|
49
|
-
}
|
|
50
|
-
return 'withLocale';
|
|
51
|
-
}
|
|
29
|
+
if (separators.length === 1 || separators[0] !== separators[separators.length - 1]) {
|
|
30
|
+
return 'heuristic';
|
|
52
31
|
}
|
|
53
|
-
return '
|
|
32
|
+
return 'unparseable';
|
|
54
33
|
}
|
|
55
34
|
|
|
56
35
|
/**
|
|
@@ -72,19 +72,10 @@ describe('parseNumber()', () => {
|
|
|
72
72
|
expect(parseNumber('123456.78', { mode: 'pasted' })).to.equal(123456.78);
|
|
73
73
|
});
|
|
74
74
|
|
|
75
|
-
it('detects separators
|
|
76
|
-
expect(parseNumber('1.234.
|
|
77
|
-
expect(parseNumber('1,234,
|
|
78
|
-
|
|
79
|
-
expect(parseNumber('1.234.56')).to.equal(1234.56);
|
|
80
|
-
expect(parseNumber('1,234,56')).to.equal(1234.56);
|
|
75
|
+
it('detects separators unparseable when there are 2 same ones e.g. 1.234.56', () => {
|
|
76
|
+
expect(parseNumber('1.234.56')).to.equal(123456);
|
|
77
|
+
expect(parseNumber('1,234,56')).to.equal(123456);
|
|
81
78
|
expect(parseNumber('1 234 56')).to.equal(123456);
|
|
82
|
-
|
|
83
|
-
expect(parseNumber('1.234.5678')).to.equal(1234.5678);
|
|
84
|
-
expect(parseNumber('1,234,5678')).to.equal(1234.5678);
|
|
85
|
-
|
|
86
|
-
expect(parseNumber('1.234.56789')).to.equal(1234.56789);
|
|
87
|
-
expect(parseNumber('1,234,56789')).to.equal(1234.56789);
|
|
88
79
|
});
|
|
89
80
|
|
|
90
81
|
it('uses locale to parse amount if there is only one separator e.g. 1.234', () => {
|