igniteui-webcomponents 3.0.0 → 3.3.0-beta.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/CHANGELOG.md +58 -6
- package/README.md +56 -1
- package/components/avatar/avatar.js +2 -2
- package/components/avatar/avatar.js.map +1 -1
- package/components/badge/badge.js +3 -3
- package/components/badge/badge.js.map +1 -1
- package/components/badge/themes/light/badge.bootstrap.css.js +1 -1
- package/components/badge/themes/light/badge.bootstrap.css.js.map +1 -1
- package/components/button/button-base.d.ts +6 -1
- package/components/button/button-base.js +5 -1
- package/components/button/button-base.js.map +1 -1
- package/components/button/button.js +6 -6
- package/components/button/button.js.map +1 -1
- package/components/button/icon-button.d.ts +1 -1
- package/components/button/icon-button.js +19 -16
- package/components/button/icon-button.js.map +1 -1
- package/components/button/themes/button/light/button.base.css.js +1 -1
- package/components/button/themes/button/light/button.base.css.js.map +1 -1
- package/components/button/themes/button/light/button.material.css.js +1 -1
- package/components/button/themes/button/light/button.material.css.js.map +1 -1
- package/components/button/themes/icon-button/light/icon-button.base.css.js +1 -1
- package/components/button/themes/icon-button/light/icon-button.base.css.js.map +1 -1
- package/components/button/themes/icon-button/light/icon-button.bootstrap.css.js +1 -1
- package/components/button/themes/icon-button/light/icon-button.bootstrap.css.js.map +1 -1
- package/components/button/themes/icon-button/light/icon-button.fluent.css.js +1 -1
- package/components/button/themes/icon-button/light/icon-button.fluent.css.js.map +1 -1
- package/components/button/themes/icon-button/light/icon-button.indigo.css.js +1 -1
- package/components/button/themes/icon-button/light/icon-button.indigo.css.js.map +1 -1
- package/components/button/themes/icon-button/light/icon-button.material.css.js +1 -1
- package/components/button/themes/icon-button/light/icon-button.material.css.js.map +1 -1
- package/components/calendar/calendar.d.ts +8 -8
- package/components/calendar/calendar.js +16 -16
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/common/calendar-base.d.ts +1 -1
- package/components/calendar/common/calendar-base.js +21 -15
- package/components/calendar/common/calendar-base.js.map +1 -1
- package/components/calendar/common/utils.d.ts +1 -1
- package/components/calendar/common/utils.js.map +1 -1
- package/components/calendar/days-view/days-view.d.ts +5 -5
- package/components/calendar/days-view/days-view.js +13 -11
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/calendar/months-view/months-view.d.ts +3 -3
- package/components/calendar/months-view/months-view.js +12 -10
- package/components/calendar/months-view/months-view.js.map +1 -1
- package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js +1 -1
- package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js.map +1 -1
- package/components/calendar/years-view/years-view.d.ts +3 -3
- package/components/calendar/years-view/years-view.js +11 -9
- package/components/calendar/years-view/years-view.js.map +1 -1
- package/components/card/card.actions.js +3 -3
- package/components/card/card.actions.js.map +1 -1
- package/components/card/card.content.js +3 -3
- package/components/card/card.content.js.map +1 -1
- package/components/card/card.header.js +6 -4
- package/components/card/card.header.js.map +1 -1
- package/components/card/card.js +4 -4
- package/components/card/card.js.map +1 -1
- package/components/card/card.media.js +1 -1
- package/components/card/card.media.js.map +1 -1
- package/components/card/themes/light/card.header.bootstrap.css.js +1 -1
- package/components/card/themes/light/card.header.bootstrap.css.js.map +1 -1
- package/components/{nav-drawer/styles/indigo/nav-drawer-header-item.indigo.css.d.ts → card/themes/light/card.header.fluent.css.d.ts} +0 -0
- package/components/card/themes/light/card.header.fluent.css.js +3 -0
- package/components/card/themes/light/card.header.fluent.css.js.map +1 -0
- package/components/checkbox/checkbox-base.d.ts +1 -1
- package/components/checkbox/checkbox-base.js +2 -1
- package/components/checkbox/checkbox-base.js.map +1 -1
- package/components/checkbox/checkbox.js +6 -7
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/checkbox/switch.js +6 -7
- package/components/checkbox/switch.js.map +1 -1
- package/components/checkbox/themes/light/checkbox.base.css.js +1 -1
- package/components/checkbox/themes/light/checkbox.base.css.js.map +1 -1
- package/components/checkbox/themes/light/checkbox.bootstrap.css.js +1 -1
- package/components/checkbox/themes/light/checkbox.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/light/checkbox.fluent.css.js +1 -1
- package/components/checkbox/themes/light/checkbox.fluent.css.js.map +1 -1
- package/components/checkbox/themes/light/checkbox.indigo.css.js +1 -1
- package/components/checkbox/themes/light/checkbox.indigo.css.js.map +1 -1
- package/components/checkbox/themes/light/checkbox.material.css.js +1 -1
- package/components/checkbox/themes/light/checkbox.material.css.js.map +1 -1
- package/components/checkbox/themes/light/switch.base.css.js +1 -1
- package/components/checkbox/themes/light/switch.base.css.js.map +1 -1
- package/components/checkbox/themes/light/switch.fluent.css.js +1 -1
- package/components/checkbox/themes/light/switch.fluent.css.js.map +1 -1
- package/components/chip/chip.d.ts +2 -1
- package/components/chip/chip.js +20 -9
- package/components/chip/chip.js.map +1 -1
- package/components/chip/themes/chip.base.css.js +1 -1
- package/components/chip/themes/chip.base.css.js.map +1 -1
- package/components/chip/themes/chip.bootstrap.css.js +1 -1
- package/components/chip/themes/chip.bootstrap.css.js.map +1 -1
- package/components/chip/themes/chip.fluent.css.js +1 -1
- package/components/chip/themes/chip.fluent.css.js.map +1 -1
- package/components/chip/themes/chip.indigo.css.js +1 -1
- package/components/chip/themes/chip.indigo.css.js.map +1 -1
- package/components/chip/themes/chip.material.css.js +1 -1
- package/components/chip/themes/chip.material.css.js.map +1 -1
- package/components/common/definitions/defineAllComponents.js +57 -41
- package/components/common/definitions/defineAllComponents.js.map +1 -1
- package/components/common/mixins/constructor.d.ts +1 -0
- package/components/common/mixins/constructor.js.map +1 -1
- package/components/common/mixins/event-emitter.d.ts +2 -2
- package/components/common/mixins/event-emitter.js +2 -2
- package/components/common/mixins/event-emitter.js.map +1 -1
- package/components/common/util.d.ts +18 -0
- package/components/common/util.js +17 -0
- package/components/common/util.js.map +1 -1
- package/components/date-time-input/date-time-input.d.ts +108 -0
- package/components/date-time-input/date-time-input.js +495 -0
- package/components/date-time-input/date-time-input.js.map +1 -0
- package/components/date-time-input/date-util.d.ts +89 -0
- package/components/date-time-input/date-util.js +597 -0
- package/components/date-time-input/date-util.js.map +1 -0
- package/components/dropdown/dropdown-group.d.ts +1 -1
- package/components/dropdown/dropdown-group.js +5 -3
- package/components/dropdown/dropdown-group.js.map +1 -1
- package/components/dropdown/dropdown-header.d.ts +1 -1
- package/components/dropdown/dropdown-header.js +3 -3
- package/components/dropdown/dropdown-header.js.map +1 -1
- package/components/dropdown/dropdown-item.js +6 -6
- package/components/dropdown/dropdown-item.js.map +1 -1
- package/components/dropdown/dropdown.d.ts +5 -5
- package/components/dropdown/dropdown.js +11 -10
- package/components/dropdown/dropdown.js.map +1 -1
- package/components/expansion-panel/expansion-panel.d.ts +73 -0
- package/components/expansion-panel/expansion-panel.js +168 -0
- package/components/expansion-panel/expansion-panel.js.map +1 -0
- package/components/{nav-drawer/styles/indigo/nav-drawer-item.indigo.css.d.ts → expansion-panel/themes/light/expansion-panel.base.css.d.ts} +0 -0
- package/components/expansion-panel/themes/light/expansion-panel.base.css.js +3 -0
- package/components/expansion-panel/themes/light/expansion-panel.base.css.js.map +1 -0
- package/components/{nav-drawer/styles/indigo/nav-drawer.indigo.css.d.ts → expansion-panel/themes/light/expansion-panel.bootstrap.css.d.ts} +0 -0
- package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js +3 -0
- package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js.map +1 -0
- package/components/{nav-drawer/styles/nav-drawer-header-item.base.css.d.ts → expansion-panel/themes/light/expansion-panel.fluent.css.d.ts} +0 -0
- package/components/expansion-panel/themes/light/expansion-panel.fluent.css.js +3 -0
- package/components/expansion-panel/themes/light/expansion-panel.fluent.css.js.map +1 -0
- package/components/{nav-drawer/styles/nav-drawer-item.base.css.d.ts → expansion-panel/themes/light/expansion-panel.indigo.css.d.ts} +0 -0
- package/components/expansion-panel/themes/light/expansion-panel.indigo.css.js +3 -0
- package/components/expansion-panel/themes/light/expansion-panel.indigo.css.js.map +1 -0
- package/components/form/form.d.ts +2 -2
- package/components/form/form.js +15 -4
- package/components/form/form.js.map +1 -1
- package/components/icon/icon.d.ts +1 -1
- package/components/icon/icon.js +3 -2
- package/components/icon/icon.js.map +1 -1
- package/components/icon/icon.material.css.js +1 -1
- package/components/icon/icon.material.css.js.map +1 -1
- package/components/icon/icon.registry.js +5 -0
- package/components/icon/icon.registry.js.map +1 -1
- package/components/input/input-base.d.ts +7 -4
- package/components/input/input-base.js +20 -12
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.d.ts +2 -5
- package/components/input/input.js +13 -7
- package/components/input/input.js.map +1 -1
- package/components/input/themes/light/input.base.css.js +1 -1
- package/components/input/themes/light/input.base.css.js.map +1 -1
- package/components/input/themes/light/input.bootstrap.css.js +1 -1
- package/components/input/themes/light/input.bootstrap.css.js.map +1 -1
- package/components/list/list-header.js +3 -3
- package/components/list/list-header.js.map +1 -1
- package/components/list/list-item.js +5 -5
- package/components/list/list-item.js.map +1 -1
- package/components/list/list.d.ts +1 -1
- package/components/list/list.js +4 -4
- package/components/list/list.js.map +1 -1
- package/components/list/themes/light/list-item.bootstrap.css.js +1 -1
- package/components/list/themes/light/list-item.bootstrap.css.js.map +1 -1
- package/components/list/themes/light/list-item.fluent.css.js +1 -1
- package/components/list/themes/light/list-item.fluent.css.js.map +1 -1
- package/components/list/themes/light/list-item.indigo.css.js +1 -1
- package/components/list/themes/light/list-item.indigo.css.js.map +1 -1
- package/components/list/themes/light/list.base.css.js +1 -1
- package/components/list/themes/light/list.base.css.js.map +1 -1
- package/components/mask-input/mask-input-base.d.ts +38 -0
- package/components/mask-input/mask-input-base.js +110 -0
- package/components/mask-input/mask-input-base.js.map +1 -0
- package/components/mask-input/mask-input.d.ts +71 -0
- package/components/mask-input/mask-input.js +182 -0
- package/components/mask-input/mask-input.js.map +1 -0
- package/components/mask-input/mask-parser.d.ts +30 -0
- package/components/mask-input/mask-parser.js +167 -0
- package/components/mask-input/mask-parser.js.map +1 -0
- package/components/nav-drawer/nav-drawer-header-item.js +5 -4
- package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer-item.d.ts +1 -0
- package/components/nav-drawer/nav-drawer-item.js +11 -7
- package/components/nav-drawer/nav-drawer-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer.js +4 -4
- package/components/nav-drawer/nav-drawer.js.map +1 -1
- package/components/nav-drawer/{styles/nav-drawer.base.css.d.ts → themes/dark/nav-drawer-item.base.css.d.ts} +0 -0
- package/components/nav-drawer/themes/dark/nav-drawer-item.base.css.js +3 -0
- package/components/nav-drawer/themes/dark/nav-drawer-item.base.css.js.map +1 -0
- package/components/{snackbar/themes/snackbar.base.css.d.ts → nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.d.ts} +0 -0
- package/components/nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.js +3 -0
- package/components/nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.js.map +1 -0
- package/components/{snackbar/themes/snackbar.bootstrap.css.d.ts → nav-drawer/themes/dark/nav-drawer-item.fluent.css.d.ts} +0 -0
- package/components/nav-drawer/themes/dark/nav-drawer-item.fluent.css.js +3 -0
- package/components/nav-drawer/themes/dark/nav-drawer-item.fluent.css.js.map +1 -0
- package/components/{snackbar/themes/snackbar.fluent.css.d.ts → nav-drawer/themes/dark/nav-drawer-item.indigo.css.d.ts} +0 -0
- package/components/nav-drawer/themes/dark/nav-drawer-item.indigo.css.js +3 -0
- package/components/nav-drawer/themes/dark/nav-drawer-item.indigo.css.js.map +1 -0
- package/components/{snackbar/themes/snackbar.indigo.css.d.ts → nav-drawer/themes/dark/nav-drawer.indigo.css.d.ts} +0 -0
- package/components/nav-drawer/themes/dark/nav-drawer.indigo.css.js +3 -0
- package/components/nav-drawer/themes/dark/nav-drawer.indigo.css.js.map +1 -0
- package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.js +3 -0
- package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.js.map +1 -0
- package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js +3 -0
- package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js.map +1 -0
- package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.d.ts +1 -0
- package/components/nav-drawer/{styles → themes/light}/indigo/nav-drawer-header-item.indigo.css.js +0 -0
- package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.js.map +1 -0
- package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.js +3 -0
- package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.js.map +1 -0
- package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.js +3 -0
- package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.js.map +1 -0
- package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.d.ts +1 -0
- package/components/nav-drawer/{styles → themes/light}/nav-drawer-header-item.base.css.js +1 -1
- package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.js.map +1 -0
- package/components/nav-drawer/themes/light/nav-drawer-item.base.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js +3 -0
- package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js.map +1 -0
- package/components/nav-drawer/themes/light/nav-drawer.base.css.d.ts +1 -0
- package/components/nav-drawer/{styles → themes/light}/nav-drawer.base.css.js +1 -1
- package/components/nav-drawer/themes/light/nav-drawer.base.css.js.map +1 -0
- package/components/navbar/navbar.js +6 -5
- package/components/navbar/navbar.js.map +1 -1
- package/components/navbar/themes/light/navbar.base.css.js +1 -1
- package/components/navbar/themes/light/navbar.base.css.js.map +1 -1
- package/components/navbar/themes/light/navbar.bootstrap.css.js +1 -1
- package/components/navbar/themes/light/navbar.bootstrap.css.js.map +1 -1
- package/components/navbar/themes/light/navbar.fluent.css.d.ts +1 -0
- package/components/navbar/themes/light/navbar.fluent.css.js +3 -0
- package/components/navbar/themes/light/navbar.fluent.css.js.map +1 -0
- package/components/progress/base.js +2 -2
- package/components/progress/base.js.map +1 -1
- package/components/progress/circular-progress.d.ts +2 -2
- package/components/progress/circular-progress.js +6 -6
- package/components/progress/circular-progress.js.map +1 -1
- package/components/progress/linear-progress.d.ts +1 -1
- package/components/progress/linear-progress.js +7 -7
- package/components/progress/linear-progress.js.map +1 -1
- package/components/radio/radio.d.ts +1 -1
- package/components/radio/radio.js +9 -9
- package/components/radio/radio.js.map +1 -1
- package/components/radio/themes/light/radio.base.css.js +1 -1
- package/components/radio/themes/light/radio.base.css.js.map +1 -1
- package/components/radio/themes/light/radio.fluent.css.js +1 -1
- package/components/radio/themes/light/radio.fluent.css.js.map +1 -1
- package/components/radio-group/radio-group.js +1 -1
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/rating/rating.base.css.js +1 -1
- package/components/rating/rating.base.css.js.map +1 -1
- package/components/rating/rating.d.ts +2 -2
- package/components/rating/rating.fluent.css.js +1 -1
- package/components/rating/rating.fluent.css.js.map +1 -1
- package/components/rating/rating.js +10 -10
- package/components/rating/rating.js.map +1 -1
- package/components/ripple/ripple.js +1 -1
- package/components/ripple/ripple.js.map +1 -1
- package/components/slider/range-slider.d.ts +3 -3
- package/components/slider/range-slider.js +2 -2
- package/components/slider/range-slider.js.map +1 -1
- package/components/slider/slider-base.js +8 -7
- package/components/slider/slider-base.js.map +1 -1
- package/components/slider/slider.d.ts +3 -3
- package/components/slider/slider.js +2 -2
- package/components/slider/slider.js.map +1 -1
- package/components/snackbar/snackbar.d.ts +3 -1
- package/components/snackbar/snackbar.js +9 -5
- package/components/snackbar/snackbar.js.map +1 -1
- package/components/snackbar/themes/dark/snackbar.indigo.css.d.ts +1 -0
- package/components/snackbar/themes/dark/snackbar.indigo.css.js +3 -0
- package/components/snackbar/themes/dark/snackbar.indigo.css.js.map +1 -0
- package/components/snackbar/themes/light/snackbar.base.css.d.ts +1 -0
- package/components/snackbar/themes/light/snackbar.base.css.js +3 -0
- package/components/snackbar/themes/light/snackbar.base.css.js.map +1 -0
- package/components/snackbar/themes/light/snackbar.bootstrap.css.d.ts +1 -0
- package/components/snackbar/themes/light/snackbar.bootstrap.css.js +3 -0
- package/components/snackbar/themes/light/snackbar.bootstrap.css.js.map +1 -0
- package/components/snackbar/themes/light/snackbar.fluent.css.d.ts +1 -0
- package/components/snackbar/themes/light/snackbar.fluent.css.js +3 -0
- package/components/snackbar/themes/light/snackbar.fluent.css.js.map +1 -0
- package/components/snackbar/themes/light/snackbar.indigo.css.d.ts +1 -0
- package/components/snackbar/themes/light/snackbar.indigo.css.js +3 -0
- package/components/snackbar/themes/light/snackbar.indigo.css.js.map +1 -0
- package/components/tabs/tab-panel.d.ts +20 -0
- package/components/tabs/tab-panel.js +21 -0
- package/components/tabs/tab-panel.js.map +1 -0
- package/components/tabs/tab.d.ts +37 -0
- package/components/tabs/tab.js +71 -0
- package/components/tabs/tab.js.map +1 -0
- package/components/tabs/tabs.d.ts +80 -0
- package/components/tabs/tabs.js +308 -0
- package/components/tabs/tabs.js.map +1 -0
- package/components/tabs/themes/dark/tab.dark.base.css.d.ts +1 -0
- package/components/tabs/themes/dark/tab.dark.base.css.js +3 -0
- package/components/tabs/themes/dark/tab.dark.base.css.js.map +1 -0
- package/components/tabs/themes/dark/tab.dark.bootstrap.css.d.ts +1 -0
- package/components/tabs/themes/dark/tab.dark.bootstrap.css.js +3 -0
- package/components/tabs/themes/dark/tab.dark.bootstrap.css.js.map +1 -0
- package/components/tabs/themes/light/tab-panel.base.css.d.ts +1 -0
- package/components/tabs/themes/light/tab-panel.base.css.js +3 -0
- package/components/tabs/themes/light/tab-panel.base.css.js.map +1 -0
- package/components/tabs/themes/light/tab.base.css.d.ts +1 -0
- package/components/tabs/themes/light/tab.base.css.js +3 -0
- package/components/tabs/themes/light/tab.base.css.js.map +1 -0
- package/components/tabs/themes/light/tab.bootstrap.css.d.ts +1 -0
- package/components/tabs/themes/light/tab.bootstrap.css.js +3 -0
- package/components/tabs/themes/light/tab.bootstrap.css.js.map +1 -0
- package/components/tabs/themes/light/tab.fluent.css.d.ts +1 -0
- package/components/tabs/themes/light/tab.fluent.css.js +3 -0
- package/components/tabs/themes/light/tab.fluent.css.js.map +1 -0
- package/components/tabs/themes/light/tab.indigo.css.d.ts +1 -0
- package/components/tabs/themes/light/tab.indigo.css.js +3 -0
- package/components/tabs/themes/light/tab.indigo.css.js.map +1 -0
- package/components/tabs/themes/light/tabs.base.css.d.ts +1 -0
- package/components/tabs/themes/light/tabs.base.css.js +3 -0
- package/components/tabs/themes/light/tabs.base.css.js.map +1 -0
- package/components/tabs/themes/light/tabs.bootstrap.css.d.ts +1 -0
- package/components/tabs/themes/light/tabs.bootstrap.css.js +3 -0
- package/components/tabs/themes/light/tabs.bootstrap.css.js.map +1 -0
- package/components/tabs/themes/light/tabs.fluent.css.d.ts +1 -0
- package/components/tabs/themes/light/tabs.fluent.css.js +3 -0
- package/components/tabs/themes/light/tabs.fluent.css.js.map +1 -0
- package/components/tabs/themes/light/tabs.indigo.css.d.ts +1 -0
- package/components/tabs/themes/light/tabs.indigo.css.js +3 -0
- package/components/tabs/themes/light/tabs.indigo.css.js.map +1 -0
- package/components/tabs/utils.d.ts +14 -0
- package/components/tabs/utils.js +32 -0
- package/components/tabs/utils.js.map +1 -0
- package/components/toast/themes/toast.base.css.js +1 -1
- package/components/toast/themes/toast.base.css.js.map +1 -1
- package/components/toast/toast.js +5 -5
- package/components/toast/toast.js.map +1 -1
- package/components/toggle/toggle.controller.d.ts +3 -3
- package/components/toggle/toggle.controller.js +1 -1
- package/components/toggle/toggle.controller.js.map +1 -1
- package/components/toggle/toggle.directive.d.ts +1 -1
- package/components/toggle/toggle.directive.js +5 -4
- package/components/toggle/toggle.directive.js.map +1 -1
- package/components/toggle/{utilities.d.ts → types.d.ts} +0 -0
- package/components/toggle/types.js +2 -0
- package/components/toggle/types.js.map +1 -0
- package/components/tree/themes/dark/tree-item.bootstrap.css.d.ts +1 -0
- package/components/tree/themes/dark/tree-item.bootstrap.css.js +3 -0
- package/components/tree/themes/dark/tree-item.bootstrap.css.js.map +1 -0
- package/components/tree/themes/dark/tree-item.fluent.css.d.ts +1 -0
- package/components/tree/themes/dark/tree-item.fluent.css.js +3 -0
- package/components/tree/themes/dark/tree-item.fluent.css.js.map +1 -0
- package/components/tree/themes/dark/tree-item.indigo.css.d.ts +1 -0
- package/components/tree/themes/dark/tree-item.indigo.css.js +3 -0
- package/components/tree/themes/dark/tree-item.indigo.css.js.map +1 -0
- package/components/tree/themes/light/tree-item.base.css.d.ts +1 -0
- package/components/tree/themes/light/tree-item.base.css.js +3 -0
- package/components/tree/themes/light/tree-item.base.css.js.map +1 -0
- package/components/tree/themes/light/tree-item.bootstrap.css.d.ts +1 -0
- package/components/tree/themes/light/tree-item.bootstrap.css.js +3 -0
- package/components/tree/themes/light/tree-item.bootstrap.css.js.map +1 -0
- package/components/tree/themes/light/tree-item.fluent.css.d.ts +1 -0
- package/components/tree/themes/light/tree-item.fluent.css.js +3 -0
- package/components/tree/themes/light/tree-item.fluent.css.js.map +1 -0
- package/components/tree/themes/light/tree-item.indigo.css.d.ts +1 -0
- package/components/tree/themes/light/tree-item.indigo.css.js +3 -0
- package/components/tree/themes/light/tree-item.indigo.css.js.map +1 -0
- package/components/tree/themes/light/tree.base.css.d.ts +1 -0
- package/components/tree/themes/light/tree.base.css.js +3 -0
- package/components/tree/themes/light/tree.base.css.js.map +1 -0
- package/components/tree/tree-item.d.ts +117 -0
- package/components/tree/tree-item.js +458 -0
- package/components/tree/tree-item.js.map +1 -0
- package/components/tree/tree.common.d.ts +17 -0
- package/components/tree/tree.common.js +2 -0
- package/components/tree/tree.common.js.map +1 -0
- package/components/tree/tree.d.ts +71 -0
- package/components/tree/tree.js +149 -0
- package/components/tree/tree.js.map +1 -0
- package/components/tree/tree.navigation.d.ts +41 -0
- package/components/tree/tree.navigation.js +260 -0
- package/components/tree/tree.navigation.js.map +1 -0
- package/components/tree/tree.selection.d.ts +55 -0
- package/components/tree/tree.selection.js +265 -0
- package/components/tree/tree.selection.js.map +1 -0
- package/custom-elements.json +1260 -125
- package/index.d.ts +62 -52
- package/index.js +60 -51
- package/index.js.map +1 -1
- package/package.json +3 -3
- package/themes/dark/bootstrap.css +1 -1
- package/themes/dark/fluent.css +1 -1
- package/themes/dark/indigo.css +1 -1
- package/themes/dark/material.css +1 -1
- package/themes/light/bootstrap.css +1 -1
- package/themes/light/fluent.css +1 -1
- package/theming/config.d.ts +1 -1
- package/theming/config.js +2 -2
- package/theming/config.js.map +1 -1
- package/theming/index.d.ts +3 -3
- package/theming/index.js +3 -3
- package/theming/index.js.map +1 -1
- package/theming/{theming-controlller.d.ts → theming-controller.d.ts} +1 -1
- package/theming/{theming-controlller.js → theming-controller.js} +3 -3
- package/theming/theming-controller.js.map +1 -0
- package/theming/theming-decorator.js +1 -1
- package/theming/theming-decorator.js.map +1 -1
- package/theming/theming-event.d.ts +1 -1
- package/theming/theming-event.js.map +1 -1
- package/vscode-html-custom-data.json +507 -60
- package/components/nav-drawer/styles/indigo/nav-drawer-header-item.indigo.css.js.map +0 -1
- package/components/nav-drawer/styles/indigo/nav-drawer-item.indigo.css.js +0 -3
- package/components/nav-drawer/styles/indigo/nav-drawer-item.indigo.css.js.map +0 -1
- package/components/nav-drawer/styles/indigo/nav-drawer.indigo.css.js +0 -3
- package/components/nav-drawer/styles/indigo/nav-drawer.indigo.css.js.map +0 -1
- package/components/nav-drawer/styles/nav-drawer-header-item.base.css.js.map +0 -1
- package/components/nav-drawer/styles/nav-drawer-item.base.css.js +0 -3
- package/components/nav-drawer/styles/nav-drawer-item.base.css.js.map +0 -1
- package/components/nav-drawer/styles/nav-drawer.base.css.js.map +0 -1
- package/components/snackbar/themes/snackbar.base.css.js +0 -3
- package/components/snackbar/themes/snackbar.base.css.js.map +0 -1
- package/components/snackbar/themes/snackbar.bootstrap.css.js +0 -3
- package/components/snackbar/themes/snackbar.bootstrap.css.js.map +0 -1
- package/components/snackbar/themes/snackbar.fluent.css.js +0 -3
- package/components/snackbar/themes/snackbar.fluent.css.js.map +0 -1
- package/components/snackbar/themes/snackbar.indigo.css.js +0 -3
- package/components/snackbar/themes/snackbar.indigo.css.js.map +0 -1
- package/components/toggle/utilities.js +0 -2
- package/components/toggle/utilities.js.map +0 -1
- package/theming/theming-controlller.js.map +0 -1
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { property, state } from 'lit/decorators.js';
|
|
8
|
+
import { blazorSuppress } from '../common/decorators/blazorSuppress.js';
|
|
9
|
+
import { IgcInputBaseComponent } from '../input/input-base.js';
|
|
10
|
+
import { MaskParser } from './mask-parser.js';
|
|
11
|
+
export class IgcMaskInputBaseComponent extends IgcInputBaseComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.parser = new MaskParser();
|
|
15
|
+
this.selection = { start: 0, end: 0 };
|
|
16
|
+
this.compositionStart = 0;
|
|
17
|
+
this.hasFocus = false;
|
|
18
|
+
this.maskedValue = '';
|
|
19
|
+
this._mask = '';
|
|
20
|
+
this.invalid = false;
|
|
21
|
+
}
|
|
22
|
+
get inputSelection() {
|
|
23
|
+
return {
|
|
24
|
+
start: this.input.selectionStart || 0,
|
|
25
|
+
end: this.input.selectionEnd || 0,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
get emptyMask() {
|
|
29
|
+
return this.parser.apply();
|
|
30
|
+
}
|
|
31
|
+
connectedCallback() {
|
|
32
|
+
super.connectedCallback();
|
|
33
|
+
this._mask = this._mask || this.parser.mask;
|
|
34
|
+
this.prompt = this.prompt || this.parser.prompt;
|
|
35
|
+
}
|
|
36
|
+
setCustomValidity(message) {
|
|
37
|
+
this.input.setCustomValidity(message);
|
|
38
|
+
this.invalid = !this.input.checkValidity();
|
|
39
|
+
}
|
|
40
|
+
select() {
|
|
41
|
+
this.input.select();
|
|
42
|
+
}
|
|
43
|
+
handleInput({ inputType, isComposing }) {
|
|
44
|
+
const value = this.input.value;
|
|
45
|
+
const start = this.selection.start;
|
|
46
|
+
let end = this.selection.end;
|
|
47
|
+
switch (inputType) {
|
|
48
|
+
case 'deleteContentForward':
|
|
49
|
+
this.updateInput('', start, (end = start === end ? ++end : end));
|
|
50
|
+
return this.updateComplete.then(() => this.input.setSelectionRange(end, end));
|
|
51
|
+
case 'deleteContentBackward':
|
|
52
|
+
if (isComposing)
|
|
53
|
+
return;
|
|
54
|
+
return this.updateInput('', this.inputSelection.start, end);
|
|
55
|
+
case 'deleteByCut':
|
|
56
|
+
return this.updateInput('', start, end);
|
|
57
|
+
case 'insertText':
|
|
58
|
+
return this.updateInput(value.substring(start, this.inputSelection.end), start, end);
|
|
59
|
+
case 'insertFromPaste':
|
|
60
|
+
return this.updateInput(value.substring(start, this.inputSelection.end), start, this.inputSelection.start);
|
|
61
|
+
case 'insertFromDrop':
|
|
62
|
+
return this.updateInput(value.substring(this.inputSelection.start, this.inputSelection.end), this.inputSelection.start, this.inputSelection.end);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
handleKeydown(e) {
|
|
66
|
+
if (!e.key) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
this.selection = this.inputSelection;
|
|
70
|
+
}
|
|
71
|
+
handleCut() {
|
|
72
|
+
this.selection = this.inputSelection;
|
|
73
|
+
}
|
|
74
|
+
handleDragStart() {
|
|
75
|
+
this.selection = this.inputSelection;
|
|
76
|
+
}
|
|
77
|
+
handleCompositionStart() {
|
|
78
|
+
this.compositionStart = this.inputSelection.start;
|
|
79
|
+
}
|
|
80
|
+
handleCompositionEnd({ data }) {
|
|
81
|
+
const start = this.compositionStart, end = this.inputSelection.end;
|
|
82
|
+
this.updateInput(data, start, end);
|
|
83
|
+
}
|
|
84
|
+
handleInvalid() {
|
|
85
|
+
this.invalid = true;
|
|
86
|
+
}
|
|
87
|
+
setSelectionRange(start, end, direction) {
|
|
88
|
+
super.setSelectionRange(start, end, direction);
|
|
89
|
+
this.selection = { start, end };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
__decorate([
|
|
93
|
+
state()
|
|
94
|
+
], IgcMaskInputBaseComponent.prototype, "hasFocus", void 0);
|
|
95
|
+
__decorate([
|
|
96
|
+
state()
|
|
97
|
+
], IgcMaskInputBaseComponent.prototype, "maskedValue", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
state()
|
|
100
|
+
], IgcMaskInputBaseComponent.prototype, "_mask", void 0);
|
|
101
|
+
__decorate([
|
|
102
|
+
property()
|
|
103
|
+
], IgcMaskInputBaseComponent.prototype, "prompt", void 0);
|
|
104
|
+
__decorate([
|
|
105
|
+
property({ reflect: true, type: Boolean })
|
|
106
|
+
], IgcMaskInputBaseComponent.prototype, "invalid", void 0);
|
|
107
|
+
__decorate([
|
|
108
|
+
blazorSuppress()
|
|
109
|
+
], IgcMaskInputBaseComponent.prototype, "setSelectionRange", null);
|
|
110
|
+
//# sourceMappingURL=mask-input-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mask-input-base.js","sourceRoot":"","sources":["../../../src/components/mask-input/mask-input-base.ts"],"names":[],"mappings":"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","sourcesContent":["import { property, state } from 'lit/decorators.js';\nimport { blazorSuppress } from '../common/decorators/blazorSuppress.js';\nimport { IgcInputBaseComponent } from '../input/input-base.js';\nimport { MaskParser } from './mask-parser.js';\ninterface MaskSelection {\n start: number;\n end: number;\n}\n\nexport abstract class IgcMaskInputBaseComponent extends IgcInputBaseComponent {\n protected parser = new MaskParser();\n protected selection: MaskSelection = { start: 0, end: 0 };\n protected compositionStart = 0;\n\n @state()\n protected hasFocus = false;\n\n @state()\n protected maskedValue = '';\n\n @state()\n protected _mask = '';\n\n /** The prompt symbol to use for unfilled parts of the mask. */\n @property()\n public prompt!: string;\n\n /** Controls the validity of the control. */\n @property({ reflect: true, type: Boolean })\n public invalid = false;\n\n protected get inputSelection(): MaskSelection {\n return {\n start: this.input.selectionStart || 0,\n end: this.input.selectionEnd || 0,\n };\n }\n\n protected get emptyMask(): string {\n return this.parser.apply();\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n\n this._mask = this._mask || this.parser.mask;\n this.prompt = this.prompt || this.parser.prompt;\n }\n\n /**\n * Sets a custom validation message for the control.\n * As long as `message` is not empty, the control is considered invalid.\n */\n public setCustomValidity(message: string) {\n this.input.setCustomValidity(message);\n this.invalid = !this.input.checkValidity();\n }\n\n /** Selects all text within the input. */\n public select() {\n this.input.select();\n }\n\n protected handleInput({ inputType, isComposing }: InputEvent) {\n const value = this.input.value;\n const start = this.selection.start;\n let end = this.selection.end;\n\n switch (inputType) {\n case 'deleteContentForward':\n this.updateInput('', start, (end = start === end ? ++end : end));\n return this.updateComplete.then(() =>\n this.input.setSelectionRange(end, end)\n );\n\n case 'deleteContentBackward':\n if (isComposing) return;\n return this.updateInput('', this.inputSelection.start, end);\n\n case 'deleteByCut':\n return this.updateInput('', start, end);\n\n case 'insertText':\n return this.updateInput(\n value.substring(start, this.inputSelection.end),\n start,\n end\n );\n\n case 'insertFromPaste':\n return this.updateInput(\n value.substring(start, this.inputSelection.end),\n start,\n this.inputSelection.start\n );\n\n case 'insertFromDrop':\n return this.updateInput(\n value.substring(this.inputSelection.start, this.inputSelection.end),\n this.inputSelection.start,\n this.inputSelection.end\n );\n }\n }\n\n protected handleKeydown(e: KeyboardEvent) {\n if (!e.key) {\n return;\n }\n this.selection = this.inputSelection;\n }\n\n protected handleCut() {\n this.selection = this.inputSelection;\n }\n\n protected handleDragStart() {\n this.selection = this.inputSelection;\n }\n\n protected handleCompositionStart() {\n this.compositionStart = this.inputSelection.start;\n }\n\n protected handleCompositionEnd({ data }: CompositionEvent) {\n const start = this.compositionStart,\n end = this.inputSelection.end;\n this.updateInput(data, start, end);\n }\n\n protected handleInvalid() {\n this.invalid = true;\n }\n\n @blazorSuppress()\n public override setSelectionRange(\n start: number,\n end: number,\n direction?: 'backward' | 'forward' | 'none'\n ): void {\n super.setSelectionRange(start, end, direction);\n this.selection = { start, end };\n }\n\n protected abstract updateInput(\n part: string,\n start: number,\n finish: number\n ): void;\n}\n"]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { IgcMaskInputBaseComponent } from './mask-input-base.js';
|
|
2
|
+
/**
|
|
3
|
+
* A masked input is an input field where a developer can control user input and format the visible value,
|
|
4
|
+
* based on configurable rules
|
|
5
|
+
*
|
|
6
|
+
* @element igc-mask-input
|
|
7
|
+
*
|
|
8
|
+
* @slot prefix - Renders content before the input
|
|
9
|
+
* @slot suffix - Renders content after the input
|
|
10
|
+
* @slot helper-text - Renders content below the input
|
|
11
|
+
*
|
|
12
|
+
* @fires igcInput - Emitted when the control receives user input
|
|
13
|
+
* @fires igcChange - Emitted when an alteration of the control's value is committed by the user
|
|
14
|
+
* @fires igcFocus - Emitted when the control gains focus
|
|
15
|
+
* @fires igcBlur - Emitted when the control loses focus
|
|
16
|
+
*
|
|
17
|
+
* @csspart container - The main wrapper that holds all main input elements
|
|
18
|
+
* @csspart input - The native input element
|
|
19
|
+
* @csspart label - The native label element
|
|
20
|
+
* @csspart prefix - The prefix wrapper
|
|
21
|
+
* @csspart suffix - The suffix wrapper
|
|
22
|
+
* @csspart helper-text - The helper text wrapper
|
|
23
|
+
*/
|
|
24
|
+
export default class IgcMaskInputComponent extends IgcMaskInputBaseComponent {
|
|
25
|
+
static readonly tagName = "igc-mask-input";
|
|
26
|
+
protected _value: string;
|
|
27
|
+
/**
|
|
28
|
+
* Dictates the behavior when retrieving the value of the control:
|
|
29
|
+
*
|
|
30
|
+
* - `raw` will return the clean user input.
|
|
31
|
+
* - `withFormatting` will return the value with all literals and prompts.
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
valueMode: 'raw' | 'withFormatting';
|
|
35
|
+
/**
|
|
36
|
+
* The value of the input.
|
|
37
|
+
*
|
|
38
|
+
* Regardless of the currently set `value-mode`, an empty value will return an empty string.
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
get value(): string;
|
|
42
|
+
set value(string: string);
|
|
43
|
+
/** The mask pattern to apply on the input. */
|
|
44
|
+
get mask(): string;
|
|
45
|
+
/** The mask pattern to apply on the input. */
|
|
46
|
+
set mask(val: string);
|
|
47
|
+
protected promptChange(): void;
|
|
48
|
+
protected maskChange(): void;
|
|
49
|
+
protected handleInvalidState(): void;
|
|
50
|
+
connectedCallback(): void;
|
|
51
|
+
protected updateInput(part: string, start: number, finish: number): void;
|
|
52
|
+
protected handleDragEnter(): void;
|
|
53
|
+
protected handleDragLeave(): void;
|
|
54
|
+
protected handleFocus(): void;
|
|
55
|
+
protected handleBlur(): void;
|
|
56
|
+
protected handleChange(): void;
|
|
57
|
+
protected handleClick(): void;
|
|
58
|
+
protected updateMaskedValue(): void;
|
|
59
|
+
/** Replaces the selected text in the control and re-applies the mask */
|
|
60
|
+
setRangeText(replacement: string, start: number, end: number, _selectMode?: 'select' | 'start' | 'end' | 'preserve'): void;
|
|
61
|
+
/** Checks for validity of the control and shows the browser message if it's invalid. */
|
|
62
|
+
reportValidity(): boolean;
|
|
63
|
+
/** Check for validity of the control */
|
|
64
|
+
checkValidity(): boolean;
|
|
65
|
+
protected renderInput(): import("lit-html").TemplateResult<1>;
|
|
66
|
+
}
|
|
67
|
+
declare global {
|
|
68
|
+
interface HTMLElementTagNameMap {
|
|
69
|
+
'igc-mask-input': IgcMaskInputComponent;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html } from 'lit';
|
|
8
|
+
import { property } from 'lit/decorators.js';
|
|
9
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
10
|
+
import { live } from 'lit/directives/live.js';
|
|
11
|
+
import { watch } from '../common/decorators/watch.js';
|
|
12
|
+
import { blazorTwoWayBind } from '../common/decorators/blazorTwoWayBind.js';
|
|
13
|
+
import { partNameMap } from '../common/util.js';
|
|
14
|
+
import { IgcMaskInputBaseComponent } from './mask-input-base.js';
|
|
15
|
+
export default class IgcMaskInputComponent extends IgcMaskInputBaseComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this._value = '';
|
|
19
|
+
this.valueMode = 'raw';
|
|
20
|
+
}
|
|
21
|
+
get value() {
|
|
22
|
+
return this._value
|
|
23
|
+
? this.valueMode !== 'raw'
|
|
24
|
+
? this.maskedValue
|
|
25
|
+
: this._value
|
|
26
|
+
: this._value;
|
|
27
|
+
}
|
|
28
|
+
set value(string) {
|
|
29
|
+
this._value = string !== null && string !== void 0 ? string : '';
|
|
30
|
+
this.maskedValue = this.parser.apply(this._value);
|
|
31
|
+
}
|
|
32
|
+
get mask() {
|
|
33
|
+
return this._mask;
|
|
34
|
+
}
|
|
35
|
+
set mask(val) {
|
|
36
|
+
this._mask = val;
|
|
37
|
+
}
|
|
38
|
+
promptChange() {
|
|
39
|
+
this.parser.prompt = this.prompt;
|
|
40
|
+
if (this.value) {
|
|
41
|
+
this.maskedValue = this.parser.apply(this._value);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
maskChange() {
|
|
45
|
+
this.parser.mask = this.mask;
|
|
46
|
+
if (this.value) {
|
|
47
|
+
this.maskedValue = this.parser.apply(this._value);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
handleInvalidState() {
|
|
51
|
+
this.updateComplete.then(() => (this.invalid = !this.checkValidity()));
|
|
52
|
+
}
|
|
53
|
+
connectedCallback() {
|
|
54
|
+
super.connectedCallback();
|
|
55
|
+
this.mask = this.mask || this.parser.mask;
|
|
56
|
+
this.prompt = this.prompt || this.parser.prompt;
|
|
57
|
+
}
|
|
58
|
+
updateInput(part, start, finish) {
|
|
59
|
+
const { value, end } = this.parser.replace(this.maskedValue, part, start, finish);
|
|
60
|
+
this.maskedValue = value;
|
|
61
|
+
this._value = this.parser.parse(value);
|
|
62
|
+
this.requestUpdate();
|
|
63
|
+
if (start !== this.mask.length) {
|
|
64
|
+
this.emitEvent('igcInput', { detail: this.value });
|
|
65
|
+
}
|
|
66
|
+
this.updateComplete.then(() => this.input.setSelectionRange(end, end));
|
|
67
|
+
}
|
|
68
|
+
handleDragEnter() {
|
|
69
|
+
if (!this.hasFocus && !this._value) {
|
|
70
|
+
this.maskedValue = this.parser.apply();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
handleDragLeave() {
|
|
74
|
+
if (!this.hasFocus) {
|
|
75
|
+
this.updateMaskedValue();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
handleFocus() {
|
|
79
|
+
this.hasFocus = true;
|
|
80
|
+
super.handleFocus();
|
|
81
|
+
if (this.readonly) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (!this._value) {
|
|
85
|
+
this.maskedValue = this.parser.apply();
|
|
86
|
+
this.updateComplete.then(() => this.select());
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
handleBlur() {
|
|
90
|
+
this.hasFocus = false;
|
|
91
|
+
this.updateMaskedValue();
|
|
92
|
+
super.handleBlur();
|
|
93
|
+
}
|
|
94
|
+
handleChange() {
|
|
95
|
+
this.emitEvent('igcChange', { detail: this.value });
|
|
96
|
+
this.invalid = !this.checkValidity();
|
|
97
|
+
}
|
|
98
|
+
handleClick() {
|
|
99
|
+
if (this.input.selectionStart === this.input.selectionEnd &&
|
|
100
|
+
this.input.selectionStart === this.maskedValue.length) {
|
|
101
|
+
this.select();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
updateMaskedValue() {
|
|
105
|
+
if (this.maskedValue === this.parser.apply()) {
|
|
106
|
+
this.maskedValue = '';
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
setRangeText(replacement, start, end, _selectMode = 'preserve') {
|
|
110
|
+
this.input.value = this.parser.replace(this.input.value, replacement, start, end).value;
|
|
111
|
+
this.maskedValue = this.parser.apply(this.parser.parse(this.input.value));
|
|
112
|
+
this._value = this.parser.parse(this.maskedValue);
|
|
113
|
+
}
|
|
114
|
+
reportValidity() {
|
|
115
|
+
const state = this._value
|
|
116
|
+
? this.parser.isValidString(this.input.value)
|
|
117
|
+
: this.input.reportValidity();
|
|
118
|
+
this.invalid = !state;
|
|
119
|
+
return state;
|
|
120
|
+
}
|
|
121
|
+
checkValidity() {
|
|
122
|
+
if (this.disabled) {
|
|
123
|
+
return this.input.checkValidity();
|
|
124
|
+
}
|
|
125
|
+
if (!this._value) {
|
|
126
|
+
return !this.required;
|
|
127
|
+
}
|
|
128
|
+
return (this.input.checkValidity() && this.parser.isValidString(this.input.value));
|
|
129
|
+
}
|
|
130
|
+
renderInput() {
|
|
131
|
+
var _a;
|
|
132
|
+
return html `
|
|
133
|
+
<input
|
|
134
|
+
type="text"
|
|
135
|
+
part=${partNameMap(this.resolvePartNames('input'))}
|
|
136
|
+
name=${ifDefined(this.name)}
|
|
137
|
+
.value=${live(this.maskedValue)}
|
|
138
|
+
.placeholder=${live((_a = this.placeholder) !== null && _a !== void 0 ? _a : this.parser.escapedMask)}
|
|
139
|
+
?readonly=${this.readonly}
|
|
140
|
+
?disabled=${this.disabled}
|
|
141
|
+
?required=${this.required}
|
|
142
|
+
@dragenter=${this.handleDragEnter}
|
|
143
|
+
@dragleave=${this.handleDragLeave}
|
|
144
|
+
@dragstart=${this.handleDragStart}
|
|
145
|
+
@blur=${this.handleBlur}
|
|
146
|
+
@focus=${this.handleFocus}
|
|
147
|
+
@cut=${this.handleCut}
|
|
148
|
+
@change=${this.handleChange}
|
|
149
|
+
@click=${this.handleClick}
|
|
150
|
+
@compositionstart=${this.handleCompositionStart}
|
|
151
|
+
@compositionend=${this.handleCompositionEnd}
|
|
152
|
+
@input=${this.handleInput}
|
|
153
|
+
aria-invalid="${this.invalid ? 'true' : 'false'}"
|
|
154
|
+
@invalid="${this.handleInvalid}"
|
|
155
|
+
@keydown=${this.handleKeydown}
|
|
156
|
+
/>
|
|
157
|
+
`;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
IgcMaskInputComponent.tagName = 'igc-mask-input';
|
|
161
|
+
__decorate([
|
|
162
|
+
property({ attribute: 'value-mode' })
|
|
163
|
+
], IgcMaskInputComponent.prototype, "valueMode", void 0);
|
|
164
|
+
__decorate([
|
|
165
|
+
property(),
|
|
166
|
+
blazorTwoWayBind('igcChange', 'detail')
|
|
167
|
+
], IgcMaskInputComponent.prototype, "value", null);
|
|
168
|
+
__decorate([
|
|
169
|
+
property()
|
|
170
|
+
], IgcMaskInputComponent.prototype, "mask", null);
|
|
171
|
+
__decorate([
|
|
172
|
+
watch('prompt')
|
|
173
|
+
], IgcMaskInputComponent.prototype, "promptChange", null);
|
|
174
|
+
__decorate([
|
|
175
|
+
watch('_mask')
|
|
176
|
+
], IgcMaskInputComponent.prototype, "maskChange", null);
|
|
177
|
+
__decorate([
|
|
178
|
+
watch('required', { waitUntilFirstUpdate: true }),
|
|
179
|
+
watch('disabled', { waitUntilFirstUpdate: true }),
|
|
180
|
+
watch('value', { waitUntilFirstUpdate: true })
|
|
181
|
+
], IgcMaskInputComponent.prototype, "handleInvalidState", null);
|
|
182
|
+
//# sourceMappingURL=mask-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mask-input.js","sourceRoot":"","sources":["../../../src/components/mask-input/mask-input.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAwBjE,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,yBAAyB;IAA5E;;QAGY,WAAM,GAAG,EAAE,CAAC;QAUf,cAAS,GAA6B,KAAK,CAAC;IA4MrD,CAAC;IAlMC,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM;YAChB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK;gBACxB,CAAC,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,IAAI,CAAC,MAAM;YACf,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAClB,CAAC;IAED,IAAW,KAAK,CAAC,MAAc;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAID,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAGD,IAAW,IAAI,CAAC,GAAW;QACzB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACnB,CAAC;IAGS,YAAY;QACpB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACnD;IACH,CAAC;IAGS,UAAU;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7B,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACnD;IACH,CAAC;IAKS,kBAAkB;QAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IAEe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAClD,CAAC;IAES,WAAW,CAAC,IAAY,EAAE,KAAa,EAAE,MAAc;QAC/D,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,IAAI,CAAC,WAAW,EAChB,IAAI,EACJ,KAAK,EACL,MAAM,CACP,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEvC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC9B,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACpD;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACzE,CAAC;IAES,eAAe;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAClC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;SACxC;IACH,CAAC;IAES,eAAe;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;IACH,CAAC;IAEkB,WAAW;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAEvC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;SAC/C;IACH,CAAC;IAEkB,UAAU;QAC3B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,KAAK,CAAC,UAAU,EAAE,CAAC;IACrB,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;IAES,WAAW;QAEnB,IACE,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY;YACrD,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,EACrD;YACA,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;IAES,iBAAiB;QACzB,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE;YAC5C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;SACvB;IACH,CAAC;IAGe,YAAY,CAC1B,WAAmB,EACnB,KAAa,EACb,GAAW,EACX,cAAuD,UAAU;QAEjE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACpC,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,WAAW,EACX,KAAK,EACL,GAAG,CACJ,CAAC,KAAK,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IAGM,cAAc;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;YACvB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAGM,aAAa;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;SACnC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;SACvB;QAED,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1E,CAAC;IACJ,CAAC;IAEkB,WAAW;;QAC5B,OAAO,IAAI,CAAA;;;eAGA,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;eAC3C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;iBAClB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;uBAChB,IAAI,CAAC,MAAA,IAAI,CAAC,WAAW,mCAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;oBACpD,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ;qBACZ,IAAI,CAAC,eAAe;qBACpB,IAAI,CAAC,eAAe;qBACpB,IAAI,CAAC,eAAe;gBACzB,IAAI,CAAC,UAAU;iBACd,IAAI,CAAC,WAAW;eAClB,IAAI,CAAC,SAAS;kBACX,IAAI,CAAC,YAAY;iBAClB,IAAI,CAAC,WAAW;4BACL,IAAI,CAAC,sBAAsB;0BAC7B,IAAI,CAAC,oBAAoB;iBAClC,IAAI,CAAC,WAAW;wBACT,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;oBACnC,IAAI,CAAC,aAAa;mBACnB,IAAI,CAAC,aAAa;;KAEhC,CAAC;IACJ,CAAC;;AAvNsB,6BAAO,GAAG,gBAAgB,CAAC;AAYlD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;wDACa;AAUnD;IAFC,QAAQ,EAAE;IACV,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC;kDAOvC;AASD;IADC,QAAQ,EAAE;iDAGV;AAQD;IADC,KAAK,CAAC,QAAQ,CAAC;yDAMf;AAGD;IADC,KAAK,CAAC,OAAO,CAAC;uDAMd;AAKD;IAHC,KAAK,CAAC,UAAU,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;IACjD,KAAK,CAAC,UAAU,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;IACjD,KAAK,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;+DAG9C","sourcesContent":["import { html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { blazorTwoWayBind } from '../common/decorators/blazorTwoWayBind.js';\nimport { partNameMap } from '../common/util.js';\nimport { IgcMaskInputBaseComponent } from './mask-input-base.js';\n\n/**\n * A masked input is an input field where a developer can control user input and format the visible value,\n * based on configurable rules\n *\n * @element igc-mask-input\n *\n * @slot prefix - Renders content before the input\n * @slot suffix - Renders content after the input\n * @slot helper-text - Renders content below the input\n *\n * @fires igcInput - Emitted when the control receives user input\n * @fires igcChange - Emitted when an alteration of the control's value is committed by the user\n * @fires igcFocus - Emitted when the control gains focus\n * @fires igcBlur - Emitted when the control loses focus\n *\n * @csspart container - The main wrapper that holds all main input elements\n * @csspart input - The native input element\n * @csspart label - The native label element\n * @csspart prefix - The prefix wrapper\n * @csspart suffix - The suffix wrapper\n * @csspart helper-text - The helper text wrapper\n */\nexport default class IgcMaskInputComponent extends IgcMaskInputBaseComponent {\n public static readonly tagName = 'igc-mask-input';\n\n protected _value = '';\n\n /**\n * Dictates the behavior when retrieving the value of the control:\n *\n * - `raw` will return the clean user input.\n * - `withFormatting` will return the value with all literals and prompts.\n *\n */\n @property({ attribute: 'value-mode' })\n public valueMode: 'raw' | 'withFormatting' = 'raw';\n\n /**\n * The value of the input.\n *\n * Regardless of the currently set `value-mode`, an empty value will return an empty string.\n *\n */\n @property()\n @blazorTwoWayBind('igcChange', 'detail')\n public get value() {\n return this._value\n ? this.valueMode !== 'raw'\n ? this.maskedValue\n : this._value\n : this._value;\n }\n\n public set value(string: string) {\n this._value = string ?? '';\n this.maskedValue = this.parser.apply(this._value);\n }\n\n /** The mask pattern to apply on the input. */\n @property()\n public get mask() {\n return this._mask;\n }\n\n /** The mask pattern to apply on the input. */\n public set mask(val: string) {\n this._mask = val;\n }\n\n @watch('prompt')\n protected promptChange() {\n this.parser.prompt = this.prompt;\n if (this.value) {\n this.maskedValue = this.parser.apply(this._value);\n }\n }\n\n @watch('_mask')\n protected maskChange() {\n this.parser.mask = this.mask;\n if (this.value) {\n this.maskedValue = this.parser.apply(this._value);\n }\n }\n\n @watch('required', { waitUntilFirstUpdate: true })\n @watch('disabled', { waitUntilFirstUpdate: true })\n @watch('value', { waitUntilFirstUpdate: true })\n protected handleInvalidState() {\n this.updateComplete.then(() => (this.invalid = !this.checkValidity()));\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n\n this.mask = this.mask || this.parser.mask;\n this.prompt = this.prompt || this.parser.prompt;\n }\n\n protected updateInput(part: string, start: number, finish: number) {\n const { value, end } = this.parser.replace(\n this.maskedValue,\n part,\n start,\n finish\n );\n this.maskedValue = value;\n this._value = this.parser.parse(value);\n\n this.requestUpdate();\n if (start !== this.mask.length) {\n this.emitEvent('igcInput', { detail: this.value });\n }\n this.updateComplete.then(() => this.input.setSelectionRange(end, end));\n }\n\n protected handleDragEnter() {\n if (!this.hasFocus && !this._value) {\n this.maskedValue = this.parser.apply();\n }\n }\n\n protected handleDragLeave() {\n if (!this.hasFocus) {\n this.updateMaskedValue();\n }\n }\n\n protected override handleFocus() {\n this.hasFocus = true;\n super.handleFocus();\n\n if (this.readonly) {\n return;\n }\n\n if (!this._value) {\n this.maskedValue = this.parser.apply();\n // In case of empty value, select the whole mask\n this.updateComplete.then(() => this.select());\n }\n }\n\n protected override handleBlur() {\n this.hasFocus = false;\n this.updateMaskedValue();\n super.handleBlur();\n }\n\n protected handleChange() {\n this.emitEvent('igcChange', { detail: this.value });\n this.invalid = !this.checkValidity();\n }\n\n protected handleClick() {\n // Clicking at the end of the input field will select the entire mask\n if (\n this.input.selectionStart === this.input.selectionEnd &&\n this.input.selectionStart === this.maskedValue.length\n ) {\n this.select();\n }\n }\n\n protected updateMaskedValue() {\n if (this.maskedValue === this.parser.apply()) {\n this.maskedValue = '';\n }\n }\n\n /** Replaces the selected text in the control and re-applies the mask */\n public override setRangeText(\n replacement: string,\n start: number,\n end: number,\n _selectMode: 'select' | 'start' | 'end' | 'preserve' = 'preserve'\n ) {\n this.input.value = this.parser.replace(\n this.input.value,\n replacement,\n start,\n end\n ).value;\n this.maskedValue = this.parser.apply(this.parser.parse(this.input.value));\n this._value = this.parser.parse(this.maskedValue);\n }\n\n /** Checks for validity of the control and shows the browser message if it's invalid. */\n public reportValidity() {\n const state = this._value\n ? this.parser.isValidString(this.input.value)\n : this.input.reportValidity();\n this.invalid = !state;\n return state;\n }\n\n /** Check for validity of the control */\n public checkValidity() {\n if (this.disabled) {\n return this.input.checkValidity();\n }\n\n if (!this._value) {\n return !this.required;\n }\n\n return (\n this.input.checkValidity() && this.parser.isValidString(this.input.value)\n );\n }\n\n protected override renderInput() {\n return html`\n <input\n type=\"text\"\n part=${partNameMap(this.resolvePartNames('input'))}\n name=${ifDefined(this.name)}\n .value=${live(this.maskedValue)}\n .placeholder=${live(this.placeholder ?? this.parser.escapedMask)}\n ?readonly=${this.readonly}\n ?disabled=${this.disabled}\n ?required=${this.required}\n @dragenter=${this.handleDragEnter}\n @dragleave=${this.handleDragLeave}\n @dragstart=${this.handleDragStart}\n @blur=${this.handleBlur}\n @focus=${this.handleFocus}\n @cut=${this.handleCut}\n @change=${this.handleChange}\n @click=${this.handleClick}\n @compositionstart=${this.handleCompositionStart}\n @compositionend=${this.handleCompositionEnd}\n @input=${this.handleInput}\n aria-invalid=\"${this.invalid ? 'true' : 'false'}\"\n @invalid=\"${this.handleInvalid}\"\n @keydown=${this.handleKeydown}\n />\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-mask-input': IgcMaskInputComponent;\n }\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
interface MaskOptions {
|
|
2
|
+
format: string;
|
|
3
|
+
promptCharacter: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class MaskParser {
|
|
6
|
+
protected options: MaskOptions;
|
|
7
|
+
constructor(options?: MaskOptions);
|
|
8
|
+
protected literals: Map<number, string>;
|
|
9
|
+
protected _escapedMask: string;
|
|
10
|
+
protected get literalPositions(): number[];
|
|
11
|
+
get escapedMask(): string;
|
|
12
|
+
get mask(): string;
|
|
13
|
+
set mask(value: string);
|
|
14
|
+
get prompt(): string;
|
|
15
|
+
set prompt(value: string);
|
|
16
|
+
protected getMaskLiterals(): void;
|
|
17
|
+
protected isPromptChar(char: string): boolean;
|
|
18
|
+
protected replaceCharAt(string: string, pos: number, char: string): string;
|
|
19
|
+
protected validate(char: string, maskedChar: string): boolean;
|
|
20
|
+
protected getNonLiteralPositions(mask?: string): number[];
|
|
21
|
+
protected getRequiredNonLiteralPositions(mask: string): number[];
|
|
22
|
+
replace(masked: string | undefined, value: string, start: number, end: number): {
|
|
23
|
+
value: string;
|
|
24
|
+
end: number;
|
|
25
|
+
};
|
|
26
|
+
parse(masked?: string): string;
|
|
27
|
+
isValidString(input?: string): boolean;
|
|
28
|
+
apply(input?: string): string;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
const FLAGS = new Set('aACL09#&?');
|
|
2
|
+
const REGEX = new Map([
|
|
3
|
+
['C', /(?!^$)/u],
|
|
4
|
+
['&', /[^\p{Separator}]/u],
|
|
5
|
+
['a', /[\p{Letter}\d\p{Separator}]/u],
|
|
6
|
+
['A', /[\p{Letter}\d]/u],
|
|
7
|
+
['?', /[\p{Letter}\p{Separator}]/u],
|
|
8
|
+
['L', /\p{Letter}/u],
|
|
9
|
+
['0', /\d/],
|
|
10
|
+
['9', /[\d\p{Separator}]/u],
|
|
11
|
+
['#', /[\d\-+]/],
|
|
12
|
+
]);
|
|
13
|
+
const REQUIRED = new Set('0#LA&');
|
|
14
|
+
const replaceIMENumbers = (string) => {
|
|
15
|
+
return string.replace(/[0123456789]/g, (num) => ({
|
|
16
|
+
'1': '1',
|
|
17
|
+
'2': '2',
|
|
18
|
+
'3': '3',
|
|
19
|
+
'4': '4',
|
|
20
|
+
'5': '5',
|
|
21
|
+
'6': '6',
|
|
22
|
+
'7': '7',
|
|
23
|
+
'8': '8',
|
|
24
|
+
'9': '9',
|
|
25
|
+
'0': '0',
|
|
26
|
+
}[num]));
|
|
27
|
+
};
|
|
28
|
+
export class MaskParser {
|
|
29
|
+
constructor(options = { format: 'CCCCCCCCCC', promptCharacter: '_' }) {
|
|
30
|
+
this.literals = new Map();
|
|
31
|
+
this.options = options;
|
|
32
|
+
}
|
|
33
|
+
get literalPositions() {
|
|
34
|
+
this.getMaskLiterals();
|
|
35
|
+
return Array.from(this.literals.keys());
|
|
36
|
+
}
|
|
37
|
+
get escapedMask() {
|
|
38
|
+
this.getMaskLiterals();
|
|
39
|
+
return this._escapedMask;
|
|
40
|
+
}
|
|
41
|
+
get mask() {
|
|
42
|
+
return this.options.format;
|
|
43
|
+
}
|
|
44
|
+
set mask(value) {
|
|
45
|
+
this.options.format = value || this.options.format;
|
|
46
|
+
this.getMaskLiterals();
|
|
47
|
+
}
|
|
48
|
+
get prompt() {
|
|
49
|
+
return this.options.promptCharacter;
|
|
50
|
+
}
|
|
51
|
+
set prompt(value) {
|
|
52
|
+
this.options.promptCharacter = value
|
|
53
|
+
? value.substring(0, 1)
|
|
54
|
+
: this.options.promptCharacter;
|
|
55
|
+
}
|
|
56
|
+
getMaskLiterals() {
|
|
57
|
+
this.literals.clear();
|
|
58
|
+
this._escapedMask = this.mask;
|
|
59
|
+
for (let i = 0, j = 0; i < this.mask.length; i++, j++) {
|
|
60
|
+
const [current, next] = [this.mask.charAt(i), this.mask.charAt(i + 1)];
|
|
61
|
+
if (current === '\\' && FLAGS.has(next)) {
|
|
62
|
+
this._escapedMask = this.replaceCharAt(this._escapedMask, j, '');
|
|
63
|
+
this.literals.set(j, next);
|
|
64
|
+
i++;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
if (!FLAGS.has(current)) {
|
|
68
|
+
this.literals.set(j, current);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
isPromptChar(char) {
|
|
74
|
+
return char === this.prompt;
|
|
75
|
+
}
|
|
76
|
+
replaceCharAt(string, pos, char) {
|
|
77
|
+
return `${string.substring(0, pos)}${char}${string.substring(pos + 1)}`;
|
|
78
|
+
}
|
|
79
|
+
validate(char, maskedChar) {
|
|
80
|
+
const regex = REGEX.get(maskedChar);
|
|
81
|
+
return regex ? regex.test(char) : false;
|
|
82
|
+
}
|
|
83
|
+
getNonLiteralPositions(mask = '') {
|
|
84
|
+
const positions = this.literalPositions;
|
|
85
|
+
return Array.from(mask)
|
|
86
|
+
.map((_, pos) => (!positions.includes(pos) ? pos : -1))
|
|
87
|
+
.filter((pos) => pos > -1);
|
|
88
|
+
}
|
|
89
|
+
getRequiredNonLiteralPositions(mask) {
|
|
90
|
+
const positions = this.literalPositions;
|
|
91
|
+
return Array.from(mask)
|
|
92
|
+
.map((char, pos) => REQUIRED.has(char) && !positions.includes(pos) ? pos : -1)
|
|
93
|
+
.filter((pos) => pos > -1);
|
|
94
|
+
}
|
|
95
|
+
replace(masked = '', value, start, end) {
|
|
96
|
+
const chars = Array.from(replaceIMENumbers(value));
|
|
97
|
+
const positions = this.literalPositions;
|
|
98
|
+
end = Math.min(end, masked.length);
|
|
99
|
+
let cursor = start;
|
|
100
|
+
for (let i = start; i < end || (chars.length && i < masked.length); i++) {
|
|
101
|
+
if (positions.includes(i)) {
|
|
102
|
+
if (chars[0] === masked[i]) {
|
|
103
|
+
cursor = i + 1;
|
|
104
|
+
chars.shift();
|
|
105
|
+
}
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (chars[0] &&
|
|
109
|
+
!this.validate(chars[0], this._escapedMask[i]) &&
|
|
110
|
+
!this.isPromptChar(chars[0])) {
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
let char = this.prompt;
|
|
114
|
+
if (chars.length) {
|
|
115
|
+
cursor = i + 1;
|
|
116
|
+
char = chars.shift();
|
|
117
|
+
}
|
|
118
|
+
masked = this.replaceCharAt(masked, i, char);
|
|
119
|
+
}
|
|
120
|
+
return { value: masked, end: cursor };
|
|
121
|
+
}
|
|
122
|
+
parse(masked = '') {
|
|
123
|
+
return Array.from(masked).reduce((prev, char, pos) => {
|
|
124
|
+
return `${prev}${!this.literalPositions.includes(pos) && !this.isPromptChar(char)
|
|
125
|
+
? char
|
|
126
|
+
: ''}`;
|
|
127
|
+
}, '');
|
|
128
|
+
}
|
|
129
|
+
isValidString(input = '') {
|
|
130
|
+
const required = this.getRequiredNonLiteralPositions(this._escapedMask);
|
|
131
|
+
if (required.length > this.parse(input).length) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
return required.every((pos) => {
|
|
135
|
+
const char = input.charAt(pos);
|
|
136
|
+
return (char !== undefined &&
|
|
137
|
+
this.validate(char, this._escapedMask.charAt(pos)) &&
|
|
138
|
+
!this.isPromptChar(char));
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
apply(input = '') {
|
|
142
|
+
const nonLiteralPositions = this.getNonLiteralPositions(this._escapedMask);
|
|
143
|
+
let output = new Array(this._escapedMask.length).fill(this.prompt).join('');
|
|
144
|
+
this.literals.forEach((char, pos) => {
|
|
145
|
+
output = this.replaceCharAt(output, pos, char);
|
|
146
|
+
});
|
|
147
|
+
if (!input) {
|
|
148
|
+
return output;
|
|
149
|
+
}
|
|
150
|
+
const values = nonLiteralPositions.map((pos, index) => {
|
|
151
|
+
const char = input.charAt(index);
|
|
152
|
+
return !this.validate(char, this._escapedMask.charAt(pos)) &&
|
|
153
|
+
!this.isPromptChar(char)
|
|
154
|
+
? this.prompt
|
|
155
|
+
: char;
|
|
156
|
+
});
|
|
157
|
+
if (values.length > nonLiteralPositions.length) {
|
|
158
|
+
values.splice(nonLiteralPositions.length);
|
|
159
|
+
}
|
|
160
|
+
let pos = 0;
|
|
161
|
+
for (const each of values) {
|
|
162
|
+
output = this.replaceCharAt(output, nonLiteralPositions[pos++], each);
|
|
163
|
+
}
|
|
164
|
+
return output;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=mask-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mask-parser.js","sourceRoot":"","sources":["../../../src/components/mask-input/mask-parser.ts"],"names":[],"mappings":"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","sourcesContent":["interface MaskOptions {\n format: string;\n promptCharacter: string;\n}\n\nconst FLAGS = new Set('aACL09#&?');\nconst REGEX = new Map([\n ['C', /(?!^$)/u], // Non-empty\n ['&', /[^\\p{Separator}]/u], // Whitespace\n ['a', /[\\p{Letter}\\d\\p{Separator}]/u], // Alphanumeric & whitespace\n ['A', /[\\p{Letter}\\d]/u], // Alphanumeric\n ['?', /[\\p{Letter}\\p{Separator}]/u], // Alpha & whitespace\n ['L', /\\p{Letter}/u], // Alpha\n ['0', /\\d/], // Numeric\n ['9', /[\\d\\p{Separator}]/u], // Numeric & whitespace\n ['#', /[\\d\\-+]/], // Numeric and sign\n]);\nconst REQUIRED = new Set('0#LA&');\n\nconst replaceIMENumbers = (string: string) => {\n return string.replace(\n /[0123456789]/g,\n (num) =>\n ({\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0',\n }[num] as string)\n );\n};\n\nexport class MaskParser {\n protected options!: MaskOptions;\n\n constructor(\n options: MaskOptions = { format: 'CCCCCCCCCC', promptCharacter: '_' }\n ) {\n this.options = options;\n }\n\n protected literals = new Map<number, string>();\n protected _escapedMask!: string;\n\n protected get literalPositions() {\n this.getMaskLiterals();\n return Array.from(this.literals.keys());\n }\n\n public get escapedMask() {\n this.getMaskLiterals();\n return this._escapedMask;\n }\n\n public get mask() {\n return this.options.format;\n }\n\n public set mask(value: string) {\n this.options.format = value || this.options.format;\n this.getMaskLiterals();\n }\n\n public get prompt() {\n return this.options.promptCharacter;\n }\n\n public set prompt(value: string) {\n this.options.promptCharacter = value\n ? value.substring(0, 1)\n : this.options.promptCharacter;\n }\n\n protected getMaskLiterals() {\n this.literals.clear();\n this._escapedMask = this.mask;\n\n for (let i = 0, j = 0; i < this.mask.length; i++, j++) {\n const [current, next] = [this.mask.charAt(i), this.mask.charAt(i + 1)];\n\n if (current === '\\\\' && FLAGS.has(next)) {\n this._escapedMask = this.replaceCharAt(this._escapedMask, j, '');\n this.literals.set(j, next);\n i++;\n } else {\n if (!FLAGS.has(current)) {\n this.literals.set(j, current);\n }\n }\n }\n }\n\n protected isPromptChar(char: string) {\n return char === this.prompt;\n }\n\n protected replaceCharAt(string: string, pos: number, char: string) {\n return `${string.substring(0, pos)}${char}${string.substring(pos + 1)}`;\n }\n\n protected validate(char: string, maskedChar: string) {\n const regex = REGEX.get(maskedChar);\n return regex ? regex.test(char) : false;\n }\n\n protected getNonLiteralPositions(mask = '') {\n const positions = this.literalPositions;\n return Array.from(mask)\n .map((_, pos) => (!positions.includes(pos) ? pos : -1))\n .filter((pos) => pos > -1);\n }\n\n protected getRequiredNonLiteralPositions(mask: string) {\n const positions = this.literalPositions;\n return Array.from(mask)\n .map((char, pos) =>\n REQUIRED.has(char) && !positions.includes(pos) ? pos : -1\n )\n .filter((pos) => pos > -1);\n }\n\n public replace(masked = '', value: string, start: number, end: number) {\n const chars = Array.from(replaceIMENumbers(value));\n const positions = this.literalPositions;\n end = Math.min(end, masked.length);\n let cursor = start;\n\n for (let i = start; i < end || (chars.length && i < masked.length); i++) {\n if (positions.includes(i)) {\n if (chars[0] === masked[i]) {\n cursor = i + 1;\n chars.shift();\n }\n continue;\n }\n\n if (\n chars[0] &&\n !this.validate(chars[0], this._escapedMask[i]) &&\n !this.isPromptChar(chars[0])\n ) {\n break;\n }\n\n let char = this.prompt;\n if (chars.length) {\n cursor = i + 1;\n char = chars.shift() as string;\n }\n masked = this.replaceCharAt(masked, i, char);\n }\n\n return { value: masked, end: cursor };\n }\n\n public parse(masked = '') {\n return Array.from(masked).reduce((prev, char, pos) => {\n return `${prev}${\n !this.literalPositions.includes(pos) && !this.isPromptChar(char)\n ? char\n : ''\n }`;\n }, '');\n }\n\n public isValidString(input = '') {\n const required = this.getRequiredNonLiteralPositions(this._escapedMask);\n\n if (required.length > this.parse(input).length) {\n return false;\n }\n return required.every((pos) => {\n const char = input.charAt(pos);\n return (\n char !== undefined &&\n this.validate(char, this._escapedMask.charAt(pos)) &&\n !this.isPromptChar(char)\n );\n });\n }\n\n public apply(input = '') {\n const nonLiteralPositions = this.getNonLiteralPositions(this._escapedMask);\n let output = new Array(this._escapedMask.length).fill(this.prompt).join('');\n\n this.literals.forEach((char, pos) => {\n output = this.replaceCharAt(output, pos, char);\n });\n\n if (!input) {\n return output;\n }\n\n const values = nonLiteralPositions.map((pos, index) => {\n const char = input.charAt(index);\n return !this.validate(char, this._escapedMask.charAt(pos)) &&\n !this.isPromptChar(char)\n ? this.prompt\n : char;\n });\n\n if (values.length > nonLiteralPositions.length) {\n values.splice(nonLiteralPositions.length);\n }\n\n let pos = 0;\n for (const each of values) {\n output = this.replaceCharAt(output, nonLiteralPositions[pos++], each);\n }\n\n return output;\n }\n}\n"]}
|
|
@@ -5,9 +5,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { html, LitElement } from 'lit';
|
|
8
|
-
import { themes } from '../../theming';
|
|
9
|
-
import { styles as
|
|
10
|
-
import { styles } from './
|
|
8
|
+
import { themes } from '../../theming/theming-decorator.js';
|
|
9
|
+
import { styles as fluent } from './themes/light/fluent/nav-drawer-header-item.fluent.css.js';
|
|
10
|
+
import { styles as indigo } from './themes/light/indigo/nav-drawer-header-item.indigo.css.js';
|
|
11
|
+
import { styles } from './themes/light/nav-drawer-header-item.base.css.js';
|
|
11
12
|
let IgcNavDrawerHeaderItemComponent = class IgcNavDrawerHeaderItemComponent extends LitElement {
|
|
12
13
|
render() {
|
|
13
14
|
return html `<slot></slot>`;
|
|
@@ -16,7 +17,7 @@ let IgcNavDrawerHeaderItemComponent = class IgcNavDrawerHeaderItemComponent exte
|
|
|
16
17
|
IgcNavDrawerHeaderItemComponent.tagName = 'igc-nav-drawer-header-item';
|
|
17
18
|
IgcNavDrawerHeaderItemComponent.styles = styles;
|
|
18
19
|
IgcNavDrawerHeaderItemComponent = __decorate([
|
|
19
|
-
themes({ indigo })
|
|
20
|
+
themes({ fluent, indigo })
|
|
20
21
|
], IgcNavDrawerHeaderItemComponent);
|
|
21
22
|
export default IgcNavDrawerHeaderItemComponent;
|
|
22
23
|
//# sourceMappingURL=nav-drawer-header-item.js.map
|