igniteui-webcomponents 4.3.1 → 4.5.0-beta.1
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 +59 -0
- package/animations/presets/fade/index.d.ts +2 -2
- package/animations/presets/fade/index.js +4 -6
- package/animations/presets/fade/index.js.map +1 -1
- package/animations/presets/grow/index.d.ts +2 -2
- package/animations/presets/grow/index.js +8 -10
- package/animations/presets/grow/index.js.map +1 -1
- package/animations/presets/index.d.ts +1 -0
- package/animations/presets/index.js +1 -0
- package/animations/presets/index.js.map +1 -1
- package/animations/presets/slide/index.d.ts +3 -0
- package/animations/presets/slide/index.js +16 -0
- package/animations/presets/slide/index.js.map +1 -0
- package/components/avatar/avatar.js +7 -7
- package/components/avatar/avatar.js.map +1 -1
- package/components/avatar/themes/{light/avatar.base.css.js → avatar.base.css.js} +2 -32
- package/components/avatar/themes/avatar.base.css.js.map +1 -0
- package/components/{nav-drawer/themes/dark/nav-drawer-item.base.css.js → avatar/themes/dark/avatar.bootstrap.css.js} +1 -1
- package/components/avatar/themes/dark/avatar.bootstrap.css.js.map +1 -0
- package/components/avatar/themes/dark/{avatar.base.bootstrap.css.js → avatar.fluent.css.js} +1 -1
- package/components/avatar/themes/dark/avatar.fluent.css.js.map +1 -0
- package/components/{nav-drawer/themes/dark/nav-drawer-item.indigo.css.js → avatar/themes/dark/avatar.indigo.css.js} +1 -1
- package/components/avatar/themes/dark/avatar.indigo.css.js.map +1 -0
- package/components/{nav-drawer/themes/dark/nav-drawer-item.fluent.css.js → avatar/themes/dark/avatar.material.css.js} +1 -1
- package/components/avatar/themes/dark/avatar.material.css.js.map +1 -0
- package/components/avatar/themes/light/avatar.bootstrap.css.js +17 -3
- package/components/avatar/themes/light/avatar.bootstrap.css.js.map +1 -1
- package/components/avatar/themes/light/avatar.fluent.css.js +27 -0
- package/components/avatar/themes/light/avatar.fluent.css.js.map +1 -0
- package/components/avatar/themes/light/avatar.indigo.css.js +27 -0
- package/components/avatar/themes/light/avatar.indigo.css.js.map +1 -0
- package/components/avatar/themes/light/avatar.material.css.js +27 -0
- package/components/avatar/themes/light/avatar.material.css.js.map +1 -0
- package/components/button/button-base.d.ts +14 -6
- package/components/button/button-base.js +51 -18
- package/components/button/button-base.js.map +1 -1
- package/components/button/button.d.ts +0 -3
- package/components/button/button.js +1 -4
- package/components/button/button.js.map +1 -1
- package/components/button/themes/button/light/button.base.css.js +4 -16
- package/components/button/themes/button/light/button.base.css.js.map +1 -1
- package/components/button/themes/button/light/button.bootstrap.css.js +64 -32
- package/components/button/themes/button/light/button.bootstrap.css.js.map +1 -1
- package/components/button/themes/button/light/button.fluent.css.js +75 -40
- package/components/button/themes/button/light/button.fluent.css.js.map +1 -1
- package/components/button/themes/button/light/button.indigo.css.js +86 -42
- package/components/button/themes/button/light/button.indigo.css.js.map +1 -1
- package/components/button/themes/button/light/button.material.css.js +88 -38
- 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 +2 -13
- 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 +12 -7
- 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 +4 -3
- 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 +6 -4
- 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 +7 -4
- package/components/button/themes/icon-button/light/icon-button.material.css.js.map +1 -1
- package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js +3 -10
- package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js.map +1 -1
- package/components/calendar/themes/bootstrap/days-view.bootstrap.css.js +2 -2
- package/components/calendar/themes/bootstrap/days-view.bootstrap.css.js.map +1 -1
- package/components/calendar/themes/bootstrap/year-month-view.bootstrap.css.js +2 -2
- package/components/calendar/themes/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
- package/components/calendar/themes/calendar.base.css.js +14 -12
- package/components/calendar/themes/calendar.base.css.js.map +1 -1
- package/components/calendar/themes/fluent/calendar.fluent.css.js +18 -23
- package/components/calendar/themes/fluent/calendar.fluent.css.js.map +1 -1
- package/components/calendar/themes/fluent/days-view.fluent.css.js +7 -23
- package/components/calendar/themes/fluent/days-view.fluent.css.js.map +1 -1
- package/components/calendar/themes/indigo/calendar.indigo.css.js +3 -10
- package/components/calendar/themes/indigo/calendar.indigo.css.js.map +1 -1
- package/components/checkbox/checkbox-base.d.ts +8 -35
- package/components/checkbox/checkbox-base.js +28 -41
- package/components/checkbox/checkbox-base.js.map +1 -1
- package/components/checkbox/checkbox.d.ts +0 -1
- package/components/checkbox/checkbox.js +5 -16
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/checkbox/switch.d.ts +0 -2
- package/components/checkbox/switch.js +4 -16
- package/components/checkbox/switch.js.map +1 -1
- package/components/checkbox/themes/light/checkbox.base.css.js +2 -1
- package/components/checkbox/themes/light/checkbox.base.css.js.map +1 -1
- package/components/checkbox/themes/light/checkbox.bootstrap.css.js +27 -10
- package/components/checkbox/themes/light/checkbox.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/light/checkbox.fluent.css.js +31 -15
- package/components/checkbox/themes/light/checkbox.fluent.css.js.map +1 -1
- package/components/checkbox/themes/light/checkbox.indigo.css.js +47 -21
- package/components/checkbox/themes/light/checkbox.indigo.css.js.map +1 -1
- package/components/checkbox/themes/light/checkbox.material.css.js +24 -12
- package/components/checkbox/themes/light/checkbox.material.css.js.map +1 -1
- package/components/checkbox/themes/light/switch.base.css.js +2 -1
- package/components/checkbox/themes/light/switch.base.css.js.map +1 -1
- package/components/checkbox/themes/light/switch.bootstrap.css.js +12 -4
- package/components/checkbox/themes/light/switch.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/light/switch.fluent.css.js +33 -15
- package/components/checkbox/themes/light/switch.fluent.css.js.map +1 -1
- package/components/checkbox/themes/light/switch.indigo.css.js +26 -11
- package/components/checkbox/themes/light/switch.indigo.css.js.map +1 -1
- package/components/checkbox/themes/light/switch.material.css.js +14 -7
- package/components/checkbox/themes/light/switch.material.css.js.map +1 -1
- package/components/chip/themes/chip.base.css.js +12 -40
- package/components/chip/themes/chip.base.css.js.map +1 -1
- package/components/chip/themes/chip.bootstrap.css.js +14 -40
- package/components/chip/themes/chip.bootstrap.css.js.map +1 -1
- package/components/chip/themes/chip.fluent.css.js +14 -40
- package/components/chip/themes/chip.fluent.css.js.map +1 -1
- package/components/chip/themes/chip.indigo.css.js +14 -40
- package/components/chip/themes/chip.indigo.css.js.map +1 -1
- package/components/chip/themes/chip.material.css.js +14 -40
- package/components/chip/themes/chip.material.css.js.map +1 -1
- package/components/combo/combo.d.ts +7 -32
- package/components/combo/combo.js +57 -49
- package/components/combo/combo.js.map +1 -1
- package/components/combo/controllers/selection.js +1 -3
- package/components/combo/controllers/selection.js.map +1 -1
- package/components/combo/themes/light/combo.base.css.js +5 -0
- package/components/combo/themes/light/combo.base.css.js.map +1 -1
- package/components/combo/themes/light/combo.bootstrap.css.js +27 -24
- package/components/combo/themes/light/combo.bootstrap.css.js.map +1 -1
- package/components/combo/themes/light/combo.fluent.css.js +27 -24
- package/components/combo/themes/light/combo.fluent.css.js.map +1 -1
- package/components/combo/themes/light/combo.indigo.css.js +26 -23
- package/components/combo/themes/light/combo.indigo.css.js.map +1 -1
- package/components/combo/themes/light/combo.material.css.js +32 -23
- package/components/combo/themes/light/combo.material.css.js.map +1 -1
- package/components/combo/themes/light/item/combo-item.base.css.js +0 -1
- package/components/combo/themes/light/item/combo-item.base.css.js.map +1 -1
- package/components/common/localization/validation-en.d.ts +10 -0
- package/components/common/localization/validation-en.js +10 -0
- package/components/common/localization/validation-en.js.map +1 -0
- package/components/common/mixins/form-associated-required.d.ts +16 -0
- package/components/common/mixins/form-associated-required.js +29 -0
- package/components/common/mixins/form-associated-required.js.map +1 -0
- package/components/common/mixins/form-associated.d.ts +92 -0
- package/components/common/mixins/form-associated.js +151 -0
- package/components/common/mixins/form-associated.js.map +1 -0
- package/components/common/mixins/sizable.d.ts +3 -0
- package/components/common/mixins/sizable.js +7 -0
- package/components/common/mixins/sizable.js.map +1 -1
- package/components/common/util.d.ts +38 -0
- package/components/common/util.js +34 -0
- package/components/common/util.js.map +1 -1
- package/components/common/validators.d.ts +45 -0
- package/components/common/validators.js +54 -0
- package/components/common/validators.js.map +1 -0
- package/components/date-time-input/date-time-input.d.ts +30 -11
- package/components/date-time-input/date-time-input.js +147 -135
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/date-util.d.ts +1 -0
- package/components/date-time-input/date-util.js +6 -3
- package/components/date-time-input/date-util.js.map +1 -1
- package/components/dialog/dialog.js +1 -1
- package/components/dialog/dialog.js.map +1 -1
- package/components/dialog/themes/light/dialog.base.css.js +1 -1
- package/components/dialog/themes/light/dialog.base.css.js.map +1 -1
- package/components/dropdown/dropdown-group.js +0 -2
- package/components/dropdown/dropdown-group.js.map +1 -1
- package/components/dropdown/dropdown-item.js +2 -6
- package/components/dropdown/dropdown-item.js.map +1 -1
- package/components/dropdown/dropdown.d.ts +0 -1
- package/components/dropdown/dropdown.js +0 -6
- package/components/dropdown/dropdown.js.map +1 -1
- package/components/dropdown/themes/light/dropdown.base.css.js +0 -12
- package/components/dropdown/themes/light/dropdown.base.css.js.map +1 -1
- package/components/dropdown/themes/light/dropdown.bootstrap.css.js +1 -1
- package/components/dropdown/themes/light/dropdown.bootstrap.css.js.map +1 -1
- package/components/dropdown/themes/light/dropdown.fluent.css.js +1 -1
- package/components/dropdown/themes/light/dropdown.fluent.css.js.map +1 -1
- package/components/dropdown/themes/light/dropdown.indigo.css.js +1 -1
- package/components/dropdown/themes/light/dropdown.indigo.css.js.map +1 -1
- package/components/dropdown/themes/light/dropdown.material.css.js +1 -1
- package/components/dropdown/themes/light/dropdown.material.css.js.map +1 -1
- package/components/dropdown/themes/light/group/dropdown-group.bootstrap.css.js +1 -1
- package/components/dropdown/themes/light/group/dropdown-group.bootstrap.css.js.map +1 -1
- package/components/dropdown/themes/light/group/dropdown-group.fluent.css.js +1 -1
- package/components/dropdown/themes/light/group/dropdown-group.fluent.css.js.map +1 -1
- package/components/dropdown/themes/light/group/dropdown-group.indigo.css.js +1 -1
- package/components/dropdown/themes/light/group/dropdown-group.indigo.css.js.map +1 -1
- package/components/dropdown/themes/light/group/dropdown-group.material.css.js +1 -1
- package/components/dropdown/themes/light/group/dropdown-group.material.css.js.map +1 -1
- package/components/dropdown/themes/light/header/dropdown-header.bootstrap.css.js +1 -1
- package/components/dropdown/themes/light/header/dropdown-header.bootstrap.css.js.map +1 -1
- package/components/dropdown/themes/light/header/dropdown-header.fluent.css.js +1 -1
- package/components/dropdown/themes/light/header/dropdown-header.fluent.css.js.map +1 -1
- package/components/dropdown/themes/light/header/dropdown-header.indigo.css.js +1 -1
- package/components/dropdown/themes/light/header/dropdown-header.indigo.css.js.map +1 -1
- package/components/dropdown/themes/light/header/dropdown-header.material.css.js +1 -1
- package/components/dropdown/themes/light/header/dropdown-header.material.css.js.map +1 -1
- package/components/dropdown/themes/light/item/dropdown-item.bootstrap.css.js +1 -1
- package/components/dropdown/themes/light/item/dropdown-item.bootstrap.css.js.map +1 -1
- package/components/dropdown/themes/light/item/dropdown-item.fluent.css.js +1 -1
- package/components/dropdown/themes/light/item/dropdown-item.fluent.css.js.map +1 -1
- package/components/dropdown/themes/light/item/dropdown-item.indigo.css.js +1 -1
- package/components/dropdown/themes/light/item/dropdown-item.indigo.css.js.map +1 -1
- package/components/dropdown/themes/light/item/dropdown-item.material.css.js +1 -1
- package/components/dropdown/themes/light/item/dropdown-item.material.css.js.map +1 -1
- package/components/expansion-panel/expansion-panel.js +1 -1
- package/components/expansion-panel/expansion-panel.js.map +1 -1
- package/components/expansion-panel/themes/light/expansion-panel.base.css.js +1 -2
- package/components/expansion-panel/themes/light/expansion-panel.base.css.js.map +1 -1
- package/components/form/form.d.ts +3 -0
- package/components/form/form.js.map +1 -1
- package/components/icon/icon.base.css.js +6 -8
- package/components/icon/icon.base.css.js.map +1 -1
- package/components/icon/light/icon.bootstrap.css.js +6 -1
- package/components/icon/light/icon.bootstrap.css.js.map +1 -1
- package/components/icon/light/icon.fluent.css.js +6 -1
- package/components/icon/light/icon.fluent.css.js.map +1 -1
- package/components/icon/light/icon.indigo.css.js +6 -1
- package/components/icon/light/icon.indigo.css.js.map +1 -1
- package/components/icon/light/icon.material.css.js +6 -1
- package/components/icon/light/icon.material.css.js.map +1 -1
- package/components/input/input-base.d.ts +10 -20
- package/components/input/input-base.js +23 -22
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.d.ts +24 -15
- package/components/input/input.js +106 -48
- package/components/input/input.js.map +1 -1
- package/components/input/themes/light/input.base.css.js +0 -15
- package/components/input/themes/light/input.base.css.js.map +1 -1
- package/components/input/themes/light/input.bootstrap.css.js +7 -17
- package/components/input/themes/light/input.bootstrap.css.js.map +1 -1
- package/components/input/themes/light/input.fluent.css.js +6 -19
- package/components/input/themes/light/input.fluent.css.js.map +1 -1
- package/components/input/themes/light/input.indigo.css.js +16 -1
- package/components/input/themes/light/input.indigo.css.js.map +1 -1
- package/components/input/themes/light/input.material.css.js +30 -11
- package/components/input/themes/light/input.material.css.js.map +1 -1
- package/components/list/themes/light/list-header.base.css.js +0 -32
- package/components/list/themes/light/list-header.base.css.js.map +1 -1
- package/components/list/themes/light/list-item.base.css.js +4 -33
- package/components/list/themes/light/list-item.base.css.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 -13
- package/components/list/themes/light/list.base.css.js.map +1 -1
- package/components/list/themes/light/list.bootstrap.css.js +1 -1
- package/components/list/themes/light/list.bootstrap.css.js.map +1 -1
- package/components/mask-input/mask-input-base.d.ts +2 -9
- package/components/mask-input/mask-input-base.js +7 -12
- package/components/mask-input/mask-input-base.js.map +1 -1
- package/components/mask-input/mask-input.d.ts +5 -6
- package/components/mask-input/mask-input.js +42 -51
- package/components/mask-input/mask-input.js.map +1 -1
- package/components/mask-input/mask-parser.js +1 -0
- package/components/mask-input/mask-parser.js.map +1 -1
- package/components/nav-drawer/nav-drawer-header-item.js +6 -4
- package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer-item.js +6 -4
- package/components/nav-drawer/nav-drawer-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer.js +5 -2
- package/components/nav-drawer/nav-drawer.js.map +1 -1
- package/components/nav-drawer/themes/dark/nav-drawer.bootstrap.css.js +3 -0
- package/components/nav-drawer/themes/dark/{nav-drawer-item.base.css.js.map → nav-drawer.bootstrap.css.js.map} +1 -1
- package/components/nav-drawer/themes/dark/nav-drawer.fluent.css.js +3 -0
- package/components/nav-drawer/themes/dark/nav-drawer.fluent.css.js.map +1 -0
- package/components/nav-drawer/themes/dark/nav-drawer.material.css.js +3 -0
- package/components/nav-drawer/themes/dark/nav-drawer.material.css.js.map +1 -0
- package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.base.css.js +7 -0
- package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.base.css.js.map +1 -0
- package/components/nav-drawer/themes/light/{fluent/nav-drawer-header-item.fluent.css.js → header-item/nav-drawer-header-item.bootstrap.css.js} +2 -1
- package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.bootstrap.css.js.map +1 -0
- package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.fluent.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.fluent.css.js +14 -0
- package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.fluent.css.js.map +1 -0
- package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.indigo.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.indigo.css.js +14 -0
- package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.indigo.css.js.map +1 -0
- package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.material.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.material.css.js +14 -0
- package/components/nav-drawer/themes/light/header-item/nav-drawer-header-item.material.css.js.map +1 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.base.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.base.css.js +65 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.base.css.js.map +1 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.bootstrap.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.bootstrap.css.js +54 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.bootstrap.css.js.map +1 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.fluent.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.fluent.css.js +54 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.fluent.css.js.map +1 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.indigo.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/{indigo → item}/nav-drawer-item.indigo.css.js +32 -11
- package/components/nav-drawer/themes/light/item/nav-drawer-item.indigo.css.js.map +1 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.material.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.material.css.js +54 -0
- package/components/nav-drawer/themes/light/item/nav-drawer-item.material.css.js.map +1 -0
- package/components/nav-drawer/themes/light/nav-drawer.base.css.js +11 -19
- package/components/nav-drawer/themes/light/nav-drawer.base.css.js.map +1 -1
- package/components/nav-drawer/themes/light/nav-drawer.bootstrap.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/nav-drawer.bootstrap.css.js +60 -0
- package/components/nav-drawer/themes/light/nav-drawer.bootstrap.css.js.map +1 -0
- package/components/nav-drawer/themes/light/nav-drawer.fluent.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/nav-drawer.fluent.css.js +60 -0
- package/components/nav-drawer/themes/light/nav-drawer.fluent.css.js.map +1 -0
- package/components/nav-drawer/themes/light/nav-drawer.indigo.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/{indigo/nav-drawer.indigo.css.js → nav-drawer.indigo.css.js} +35 -4
- package/components/nav-drawer/themes/light/nav-drawer.indigo.css.js.map +1 -0
- package/components/nav-drawer/themes/light/nav-drawer.material.css.d.ts +1 -0
- package/components/nav-drawer/themes/light/nav-drawer.material.css.js +60 -0
- package/components/nav-drawer/themes/light/nav-drawer.material.css.js.map +1 -0
- package/components/navbar/themes/light/navbar.bootstrap.css.js +0 -32
- package/components/navbar/themes/light/navbar.bootstrap.css.js.map +1 -1
- package/components/navbar/themes/light/navbar.fluent.css.js +0 -32
- package/components/navbar/themes/light/navbar.fluent.css.js.map +1 -1
- package/components/navbar/themes/light/navbar.indigo.css.js +0 -32
- package/components/navbar/themes/light/navbar.indigo.css.js.map +1 -1
- package/components/navbar/themes/light/navbar.material.css.js +0 -32
- package/components/navbar/themes/light/navbar.material.css.js.map +1 -1
- package/components/navbar/themes/navbar.base.css.js +4 -10
- package/components/navbar/themes/navbar.base.css.js.map +1 -1
- package/components/progress/themes/linear/linear.progress.base.css.js +1 -0
- package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
- package/components/progress/themes/linear/linear.progress.indigo.css.js +0 -32
- package/components/progress/themes/linear/linear.progress.indigo.css.js.map +1 -1
- package/components/radio/radio.d.ts +13 -37
- package/components/radio/radio.js +135 -97
- package/components/radio/radio.js.map +1 -1
- package/components/radio/themes/light/radio.bootstrap.css.js +8 -36
- package/components/radio/themes/light/radio.bootstrap.css.js.map +1 -1
- package/components/radio/themes/light/radio.fluent.css.js +0 -32
- package/components/radio/themes/light/radio.fluent.css.js.map +1 -1
- package/components/radio/themes/light/radio.indigo.css.js +11 -37
- package/components/radio/themes/light/radio.indigo.css.js.map +1 -1
- package/components/radio/themes/light/radio.material.css.js +1 -33
- package/components/radio/themes/light/radio.material.css.js.map +1 -1
- package/components/radio-group/radio-group.d.ts +0 -4
- package/components/radio-group/radio-group.js +3 -54
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/rating/dark/rating.fluent.css.d.ts +1 -0
- package/components/rating/dark/rating.fluent.css.js +3 -0
- package/components/rating/dark/rating.fluent.css.js.map +1 -0
- package/components/rating/rating-symbol.base.css.js +1 -1
- package/components/rating/rating-symbol.base.css.js.map +1 -1
- package/components/rating/rating.base.css.js +8 -16
- package/components/rating/rating.base.css.js.map +1 -1
- package/components/rating/rating.d.ts +10 -11
- package/components/rating/rating.fluent.css.js +13 -7
- package/components/rating/rating.fluent.css.js.map +1 -1
- package/components/rating/rating.js +19 -15
- package/components/rating/rating.js.map +1 -1
- package/components/select/select-item.d.ts +0 -2
- package/components/select/select-item.js +0 -3
- package/components/select/select-item.js.map +1 -1
- package/components/select/select.d.ts +7 -34
- package/components/select/select.js +27 -37
- package/components/select/select.js.map +1 -1
- package/components/select/themes/light/select.base.css.js +1 -12
- package/components/select/themes/light/select.base.css.js.map +1 -1
- package/components/select/themes/light/select.bootstrap.css.js +5 -37
- package/components/select/themes/light/select.bootstrap.css.js.map +1 -1
- package/components/select/themes/light/select.fluent.css.js +5 -37
- package/components/select/themes/light/select.fluent.css.js.map +1 -1
- package/components/select/themes/light/select.indigo.css.js +4 -36
- package/components/select/themes/light/select.indigo.css.js.map +1 -1
- package/components/select/themes/light/select.material.css.js +14 -46
- package/components/select/themes/light/select.material.css.js.map +1 -1
- package/components/slider/slider.d.ts +4 -12
- package/components/slider/slider.js +16 -25
- package/components/slider/slider.js.map +1 -1
- package/components/slider/themes/light/slider.base.css.js +17 -8
- package/components/slider/themes/light/slider.base.css.js.map +1 -1
- package/components/slider/themes/light/slider.fluent.css.js +6 -3
- package/components/slider/themes/light/slider.fluent.css.js.map +1 -1
- package/components/slider/themes/light/slider.indigo.css.js +4 -1
- package/components/slider/themes/light/slider.indigo.css.js.map +1 -1
- package/components/snackbar/snackbar.js +1 -1
- package/components/snackbar/snackbar.js.map +1 -1
- package/components/stepper/animations.d.ts +2 -0
- package/components/stepper/animations.js +22 -0
- package/components/stepper/animations.js.map +1 -0
- package/components/stepper/step.d.ts +17 -8
- package/components/stepper/step.js +29 -0
- package/components/stepper/step.js.map +1 -1
- package/components/stepper/stepper.d.ts +19 -3
- package/components/stepper/stepper.js +58 -7
- package/components/stepper/stepper.js.map +1 -1
- package/components/stepper/themes/step/light/step.base.css.js +44 -165
- package/components/stepper/themes/step/light/step.base.css.js.map +1 -1
- package/components/stepper/themes/step/light/step.bootstrap.css.js +116 -19
- package/components/stepper/themes/step/light/step.bootstrap.css.js.map +1 -1
- package/components/stepper/themes/step/light/step.fluent.css.js +112 -12
- package/components/stepper/themes/step/light/step.fluent.css.js.map +1 -1
- package/components/stepper/themes/step/light/step.indigo.css.js +112 -25
- package/components/stepper/themes/step/light/step.indigo.css.js.map +1 -1
- package/components/stepper/themes/step/light/step.material.css.js +112 -4
- package/components/stepper/themes/step/light/step.material.css.js.map +1 -1
- package/components/stepper/themes/stepper/stepper.base.css.js +2 -0
- package/components/stepper/themes/stepper/stepper.base.css.js.map +1 -1
- package/components/tabs/themes/light/tab.base.css.js +3 -4
- package/components/tabs/themes/light/tab.base.css.js.map +1 -1
- package/components/tabs/themes/light/tabs.base.css.js +1 -0
- package/components/tabs/themes/light/tabs.base.css.js.map +1 -1
- package/components/toast/toast.js +1 -1
- package/components/toast/toast.js.map +1 -1
- package/components/tree/themes/light/tree-item.base.css.js +5 -19
- package/components/tree/themes/light/tree-item.base.css.js.map +1 -1
- package/components/tree/themes/light/tree-item.bootstrap.css.js +60 -3
- package/components/tree/themes/light/tree-item.bootstrap.css.js.map +1 -1
- package/components/tree/themes/light/tree-item.fluent.css.js +58 -1
- package/components/tree/themes/light/tree-item.fluent.css.js.map +1 -1
- package/components/tree/themes/light/tree-item.indigo.css.js +58 -1
- package/components/tree/themes/light/tree-item.indigo.css.js.map +1 -1
- package/components/tree/themes/light/tree-item.material.css.d.ts +1 -0
- package/components/tree/themes/light/tree-item.material.css.js +58 -0
- package/components/tree/themes/light/tree-item.material.css.js.map +1 -0
- package/components/tree/themes/light/tree.base.css.js +0 -12
- package/components/tree/themes/light/tree.base.css.js.map +1 -1
- package/components/tree/tree-item.js +10 -17
- package/components/tree/tree-item.js.map +1 -1
- package/components/tree/tree.d.ts +0 -6
- package/components/tree/tree.js +0 -4
- package/components/tree/tree.js.map +1 -1
- package/components/tree/tree.navigation.js +3 -2
- package/components/tree/tree.navigation.js.map +1 -1
- package/custom-elements.json +854 -553
- package/package.json +4 -4
- package/themes/dark/bootstrap.css +277 -66
- package/themes/dark/fluent.css +293 -67
- package/themes/dark/indigo.css +498 -15
- package/themes/dark/material.css +246 -58
- package/themes/light/bootstrap.css +5 -2
- package/themes/light/fluent.css +5 -2
- package/themes/light/indigo.css +229 -2
- package/themes/light/material.css +5 -2
- package/vscode-html-custom-data.json +240 -287
- package/components/avatar/themes/dark/avatar.base.bootstrap.css.js.map +0 -1
- package/components/avatar/themes/light/avatar.base.css.js.map +0 -1
- package/components/common/types.d.ts +0 -1
- package/components/common/types.js +0 -2
- package/components/common/types.js.map +0 -1
- package/components/nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.js +0 -3
- package/components/nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.js.map +0 -1
- package/components/nav-drawer/themes/dark/nav-drawer-item.fluent.css.js.map +0 -1
- package/components/nav-drawer/themes/dark/nav-drawer-item.indigo.css.js.map +0 -1
- package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.js.map +0 -1
- package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js +0 -17
- package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js.map +0 -1
- package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.js +0 -5
- package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.js.map +0 -1
- package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.js.map +0 -1
- package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.js.map +0 -1
- package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.js +0 -49
- package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.js.map +0 -1
- package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js +0 -137
- package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js.map +0 -1
- /package/components/avatar/themes/{light/avatar.base.css.d.ts → avatar.base.css.d.ts} +0 -0
- /package/components/avatar/themes/dark/{avatar.base.bootstrap.css.d.ts → avatar.bootstrap.css.d.ts} +0 -0
- /package/components/{nav-drawer/themes/dark/nav-drawer-item.base.css.d.ts → avatar/themes/dark/avatar.fluent.css.d.ts} +0 -0
- /package/components/{nav-drawer/themes/dark/nav-drawer-item.bootstrap.css.d.ts → avatar/themes/dark/avatar.indigo.css.d.ts} +0 -0
- /package/components/{nav-drawer/themes/dark/nav-drawer-item.fluent.css.d.ts → avatar/themes/dark/avatar.material.css.d.ts} +0 -0
- /package/components/{nav-drawer/themes/dark/nav-drawer-item.indigo.css.d.ts → avatar/themes/light/avatar.fluent.css.d.ts} +0 -0
- /package/components/{nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.d.ts → avatar/themes/light/avatar.indigo.css.d.ts} +0 -0
- /package/components/{nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.d.ts → avatar/themes/light/avatar.material.css.d.ts} +0 -0
- /package/components/nav-drawer/themes/{light/indigo/nav-drawer-header-item.indigo.css.d.ts → dark/nav-drawer.bootstrap.css.d.ts} +0 -0
- /package/components/nav-drawer/themes/{light/indigo/nav-drawer-item.indigo.css.d.ts → dark/nav-drawer.fluent.css.d.ts} +0 -0
- /package/components/nav-drawer/themes/{light/indigo/nav-drawer.indigo.css.d.ts → dark/nav-drawer.material.css.d.ts} +0 -0
- /package/components/nav-drawer/themes/light/{nav-drawer-header-item.base.css.d.ts → header-item/nav-drawer-header-item.base.css.d.ts} +0 -0
- /package/components/nav-drawer/themes/light/{nav-drawer-item.base.css.d.ts → header-item/nav-drawer-header-item.bootstrap.css.d.ts} +0 -0
|
@@ -5,7 +5,7 @@ export interface IgcRatingEventMap {
|
|
|
5
5
|
igcChange: CustomEvent<number>;
|
|
6
6
|
igcHover: CustomEvent<number>;
|
|
7
7
|
}
|
|
8
|
-
declare const IgcRatingComponent_base: Constructor<import("../common/mixins/sizable.js").SizableInterface> & import("../common/mixins/constructor.js").AbstractConstructor<import("../common/mixins/event-emitter.js").EventEmitterInterface<IgcRatingEventMap>> & Constructor<LitElement>;
|
|
8
|
+
declare const IgcRatingComponent_base: Constructor<import("../common/mixins/form-associated.js").FormAssociatedElementInterface> & Constructor<import("../common/mixins/sizable.js").SizableInterface> & import("../common/mixins/constructor.js").AbstractConstructor<import("../common/mixins/event-emitter.js").EventEmitterInterface<IgcRatingEventMap>> & Constructor<LitElement>;
|
|
9
9
|
/**
|
|
10
10
|
* Rating provides insight regarding others' opinions and experiences,
|
|
11
11
|
* and can allow the user to submit a rating of their own
|
|
@@ -55,11 +55,6 @@ export default class IgcRatingComponent extends IgcRatingComponent_base {
|
|
|
55
55
|
* @attr
|
|
56
56
|
*/
|
|
57
57
|
step: number;
|
|
58
|
-
/**
|
|
59
|
-
* The name attribute of the control
|
|
60
|
-
* @attr
|
|
61
|
-
*/
|
|
62
|
-
name: string;
|
|
63
58
|
/**
|
|
64
59
|
* The label of the control.
|
|
65
60
|
* @attr
|
|
@@ -79,20 +74,24 @@ export default class IgcRatingComponent extends IgcRatingComponent_base {
|
|
|
79
74
|
*/
|
|
80
75
|
value: number;
|
|
81
76
|
/**
|
|
82
|
-
* Sets
|
|
77
|
+
* Sets hover preview behavior for the component
|
|
83
78
|
* @attr
|
|
84
79
|
*/
|
|
85
|
-
|
|
80
|
+
hoverPreview: boolean;
|
|
86
81
|
/**
|
|
87
|
-
*
|
|
82
|
+
* Makes the control a readonly field.
|
|
88
83
|
* @attr
|
|
89
84
|
*/
|
|
90
|
-
|
|
85
|
+
readOnly: boolean;
|
|
91
86
|
/**
|
|
92
87
|
* Sets the readonly state of the component
|
|
93
88
|
* @attr
|
|
89
|
+
*
|
|
90
|
+
* @deprecated - since v4.4.0
|
|
91
|
+
* Use the `readOnly` property instead.
|
|
94
92
|
*/
|
|
95
|
-
readonly: boolean;
|
|
93
|
+
get readonly(): boolean;
|
|
94
|
+
set readonly(value: boolean);
|
|
96
95
|
/**
|
|
97
96
|
* Toggles single selection visual mode.
|
|
98
97
|
* @attr
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css
|
|
2
|
+
export const styles = css `:host {
|
|
3
|
+
--symbol-full-color: hsla(var(--ig-warn-900), var(--ig-warn-a));
|
|
4
|
+
--symbol-empty-color: hsla(var(--ig-gray-700), var(--ig-gray-a));
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
[part=base],
|
|
3
8
|
:host {
|
|
4
9
|
gap: 0.375rem;
|
|
5
10
|
}
|
|
@@ -30,14 +35,15 @@ export const styles = css `[part=base],
|
|
|
30
35
|
color: hsla(var(--ig-gray-900), var(--ig-gray-a));
|
|
31
36
|
}
|
|
32
37
|
|
|
33
|
-
:host([disabled])
|
|
34
|
-
|
|
38
|
+
:host([disabled]),
|
|
39
|
+
:host(:disabled) {
|
|
40
|
+
--symbol-full-color: hsla(var(--ig-warn-100), var(--ig-warn-a));
|
|
41
|
+
--symbol-empty-color: hsla(var(--ig-warn-100), var(--ig-warn-a));
|
|
35
42
|
}
|
|
36
43
|
:host([disabled]) [part~=value-label],
|
|
37
|
-
:host([disabled]) [part~=label]
|
|
44
|
+
:host([disabled]) [part~=label],
|
|
45
|
+
:host(:disabled) [part~=value-label],
|
|
46
|
+
:host(:disabled) [part~=label] {
|
|
38
47
|
color: hsla(var(--ig-gray-400), var(--ig-gray-a));
|
|
39
|
-
}
|
|
40
|
-
:host([disabled]) [part="symbols-wrapper selected"] {
|
|
41
|
-
color: hsla(var(--ig-gray-500), var(--ig-gray-a));
|
|
42
48
|
}`;
|
|
43
49
|
//# sourceMappingURL=rating.fluent.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rating.fluent.css.js","sourceRoot":"","sources":["../../../src/components/rating/rating.fluent.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"rating.fluent.css.js","sourceRoot":"","sources":["../../../src/components/rating/rating.fluent.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CvB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host {\n --symbol-full-color: hsla(var(--ig-warn-900), var(--ig-warn-a));\n --symbol-empty-color: hsla(var(--ig-gray-700), var(--ig-gray-a));\n}\n\n[part=base],\n:host {\n gap: 0.375rem;\n}\n\n[part~=label] {\n font-family: var(--ig-subtitle-2-font-family, var(--ig-font-family));\n font-size: var(--ig-subtitle-2-font-size);\n font-weight: var(--ig-subtitle-2-font-weight);\n font-style: var(--ig-subtitle-2-font-style);\n line-height: var(--ig-subtitle-2-line-height);\n letter-spacing: var(--ig-subtitle-2-letter-spacing);\n text-transform: var(--ig-subtitle-2-text-transform);\n margin-top: var(--ig-subtitle-2-margin-top);\n margin-bottom: var(--ig-subtitle-2-margin-bottom);\n color: hsla(var(--ig-gray-900), var(--ig-gray-a));\n}\n\n[part~=value-label] {\n font-family: var(--ig-body-2-font-family, var(--ig-font-family));\n font-size: var(--ig-body-2-font-size);\n font-weight: var(--ig-body-2-font-weight);\n font-style: var(--ig-body-2-font-style);\n line-height: var(--ig-body-2-line-height);\n letter-spacing: var(--ig-body-2-letter-spacing);\n text-transform: var(--ig-body-2-text-transform);\n margin-top: var(--ig-body-2-margin-top);\n margin-bottom: var(--ig-body-2-margin-bottom);\n color: hsla(var(--ig-gray-900), var(--ig-gray-a));\n}\n\n:host([disabled]),\n:host(:disabled) {\n --symbol-full-color: hsla(var(--ig-warn-100), var(--ig-warn-a));\n --symbol-empty-color: hsla(var(--ig-warn-100), var(--ig-warn-a));\n}\n:host([disabled]) [part~=value-label],\n:host([disabled]) [part~=label],\n:host(:disabled) [part~=value-label],\n:host(:disabled) [part~=label] {\n color: hsla(var(--ig-gray-400), var(--ig-gray-a));\n}`;\n"]}
|
|
@@ -13,7 +13,7 @@ import { themes } from '../../theming/theming-decorator.js';
|
|
|
13
13
|
import { watch } from '../common/decorators/watch.js';
|
|
14
14
|
import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
|
|
15
15
|
import { SizableMixin } from '../common/mixins/sizable.js';
|
|
16
|
-
import { clamp, isLTR } from '../common/util.js';
|
|
16
|
+
import { clamp, format, isLTR } from '../common/util.js';
|
|
17
17
|
import { styles } from './rating.base.css.js';
|
|
18
18
|
import { styles as bootstrap } from './rating.bootstrap.css.js';
|
|
19
19
|
import { styles as fluent } from './rating.fluent.css.js';
|
|
@@ -21,8 +21,9 @@ import { styles as indigo } from './rating.indigo.css.js';
|
|
|
21
21
|
import { defineComponents } from '../common/definitions/defineComponents.js';
|
|
22
22
|
import IgcRatingSymbolComponent from './rating-symbol.js';
|
|
23
23
|
import IgcIconComponent from '../icon/icon.js';
|
|
24
|
+
import { FormAssociatedMixin } from '../common/mixins/form-associated.js';
|
|
24
25
|
defineComponents(IgcRatingSymbolComponent, IgcIconComponent);
|
|
25
|
-
let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmitterMixin(LitElement)) {
|
|
26
|
+
let IgcRatingComponent = class IgcRatingComponent extends FormAssociatedMixin(SizableMixin(EventEmitterMixin(LitElement))) {
|
|
26
27
|
get isInteractive() {
|
|
27
28
|
return !(this.readonly || this.disabled);
|
|
28
29
|
}
|
|
@@ -32,11 +33,15 @@ let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmit
|
|
|
32
33
|
get valueText() {
|
|
33
34
|
const value = this.round(this.value);
|
|
34
35
|
return this.valueFormat
|
|
35
|
-
? this.valueFormat
|
|
36
|
-
.replace(/\{0\}/gm, `${value}`)
|
|
37
|
-
.replace(/\{1\}/gm, `${this.max}`)
|
|
36
|
+
? format(this.valueFormat, `${value}`, `${this.max}`)
|
|
38
37
|
: `${value} of ${this.max}`;
|
|
39
38
|
}
|
|
39
|
+
get readonly() {
|
|
40
|
+
return this.readOnly;
|
|
41
|
+
}
|
|
42
|
+
set readonly(value) {
|
|
43
|
+
this.readOnly = value;
|
|
44
|
+
}
|
|
40
45
|
handleMaxChange() {
|
|
41
46
|
this.hasProjectedSymbols
|
|
42
47
|
? (this.max = this.ratingSymbols.length)
|
|
@@ -46,7 +51,10 @@ let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmit
|
|
|
46
51
|
}
|
|
47
52
|
}
|
|
48
53
|
handleValueChange() {
|
|
49
|
-
this.value = clamp(this.value, 0, this.max);
|
|
54
|
+
this.value = clamp(isNaN(this.value) ? 0 : this.value, 0, this.max);
|
|
55
|
+
this.setFormValue(`${this.value}`, `${this.value}`);
|
|
56
|
+
this.updateValidity();
|
|
57
|
+
this.setInvalidState();
|
|
50
58
|
}
|
|
51
59
|
handlePrecisionChange() {
|
|
52
60
|
this.step = !this.single ? clamp(this.step, 0.001, 1) : 1;
|
|
@@ -65,9 +73,8 @@ let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmit
|
|
|
65
73
|
this.max = 5;
|
|
66
74
|
this.step = 1;
|
|
67
75
|
this.value = 0;
|
|
68
|
-
this.disabled = false;
|
|
69
76
|
this.hoverPreview = false;
|
|
70
|
-
this.
|
|
77
|
+
this.readOnly = false;
|
|
71
78
|
this.single = false;
|
|
72
79
|
this.addEventListener('keydown', this.handleKeyDown);
|
|
73
80
|
}
|
|
@@ -273,9 +280,6 @@ __decorate([
|
|
|
273
280
|
__decorate([
|
|
274
281
|
property({ type: Number })
|
|
275
282
|
], IgcRatingComponent.prototype, "step", void 0);
|
|
276
|
-
__decorate([
|
|
277
|
-
property()
|
|
278
|
-
], IgcRatingComponent.prototype, "name", void 0);
|
|
279
283
|
__decorate([
|
|
280
284
|
property()
|
|
281
285
|
], IgcRatingComponent.prototype, "label", void 0);
|
|
@@ -285,15 +289,15 @@ __decorate([
|
|
|
285
289
|
__decorate([
|
|
286
290
|
property({ type: Number })
|
|
287
291
|
], IgcRatingComponent.prototype, "value", void 0);
|
|
288
|
-
__decorate([
|
|
289
|
-
property({ type: Boolean, reflect: true })
|
|
290
|
-
], IgcRatingComponent.prototype, "disabled", void 0);
|
|
291
292
|
__decorate([
|
|
292
293
|
property({ type: Boolean, reflect: true, attribute: 'hover-preview' })
|
|
293
294
|
], IgcRatingComponent.prototype, "hoverPreview", void 0);
|
|
294
295
|
__decorate([
|
|
295
296
|
property({ type: Boolean, reflect: true })
|
|
296
|
-
], IgcRatingComponent.prototype, "
|
|
297
|
+
], IgcRatingComponent.prototype, "readOnly", void 0);
|
|
298
|
+
__decorate([
|
|
299
|
+
property({ attribute: false })
|
|
300
|
+
], IgcRatingComponent.prototype, "readonly", null);
|
|
297
301
|
__decorate([
|
|
298
302
|
property({ type: Boolean })
|
|
299
303
|
], IgcRatingComponent.prototype, "single", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rating.js","sourceRoot":"","sources":["../../../src/components/rating/rating.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, query, queryAssignedNodes, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { guard } from 'lit/directives/guard.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { SizableMixin } from '../common/mixins/sizable.js';\nimport { clamp, isLTR } from '../common/util.js';\nimport { styles } from './rating.base.css.js';\nimport { styles as bootstrap } from './rating.bootstrap.css.js';\nimport { styles as fluent } from './rating.fluent.css.js';\nimport { styles as indigo } from './rating.indigo.css.js';\n\nimport { defineComponents } from '../common/definitions/defineComponents.js';\nimport IgcRatingSymbolComponent from './rating-symbol.js';\nimport IgcIconComponent from '../icon/icon.js';\n\ndefineComponents(IgcRatingSymbolComponent, IgcIconComponent);\n\nexport interface IgcRatingEventMap {\n igcChange: CustomEvent<number>;\n igcHover: CustomEvent<number>;\n}\n\n/**\n * Rating provides insight regarding others' opinions and experiences,\n * and can allow the user to submit a rating of their own\n *\n * @element igc-rating\n *\n * @fires igcChange - Emitted when the value of the control changes.\n * @fires igcHover - Emitted when hover is enabled and the user mouses over a symbol of the rating.\n *\n * @csspart base - The main wrapper which holds all of the rating elements.\n * @csspart label - The label part.\n * @csspart value-label - The value label part.\n * @csspart symbols - A wrapper for all rating symbols.\n * @csspart symbol - The part of the encapsulated default symbol.\n * @csspart full - The part of the encapsulated full symbols.\n * @csspart empty - The part of the encapsulated empty symbols.\n *\n * @cssproperty --symbol-size - The size of the symbols.\n * @cssproperty --symbol-full-color - The color of the filled symbol.\n * @cssproperty --symbol-empty-color - The color of the empty symbol.\n * @cssproperty --symbol-full-filter - The filter(s) used for the filled symbol.\n * @cssproperty --symbol-empty-filter - The filter(s) used for the empty symbol.\n */\n@themes({ fluent, bootstrap, indigo })\nexport default class IgcRatingComponent extends SizableMixin(\n EventEmitterMixin<IgcRatingEventMap, Constructor<LitElement>>(LitElement)\n) {\n public static readonly tagName = 'igc-rating';\n\n public static styles = [styles];\n\n protected ratingSymbols: Array<IgcRatingSymbolComponent> = [];\n\n @query('[part=\"symbols\"]', true)\n protected container!: HTMLElement;\n\n @queryAssignedNodes({ slot: 'value-label', flatten: true })\n protected valueLabel!: Array<Node>;\n\n @state()\n protected hoverValue = -1;\n\n @state()\n protected hoverState = false;\n\n protected get isInteractive() {\n return !(this.readonly || this.disabled);\n }\n\n protected get hasProjectedSymbols() {\n return this.ratingSymbols.length > 0;\n }\n\n protected get valueText() {\n // Skip IEEE 754 representation for screen readers\n const value = this.round(this.value);\n\n return this.valueFormat\n ? this.valueFormat\n .replace(/\\{0\\}/gm, `${value}`)\n .replace(/\\{1\\}/gm, `${this.max}`)\n : `${value} of ${this.max}`;\n }\n\n /**\n * The maximum value for the rating.\n *\n * If there are projected symbols, the maximum value will be resolved\n * based on the number of symbols.\n * @attr\n */\n @property({ type: Number })\n public max = 5;\n\n /**\n * The minimum value change allowed.\n *\n * Valid values are in the interval between 0 and 1 inclusive.\n * @attr\n */\n @property({ type: Number })\n public step = 1;\n\n /**\n * The name attribute of the control\n * @attr\n */\n @property()\n public name!: string;\n\n /**\n * The label of the control.\n * @attr\n */\n @property()\n public label!: string;\n\n /**\n * A format string which sets aria-valuetext. Instances of '{0}' will be replaced\n * with the current value of the control and instances of '{1}' with the maximum value for the control.\n *\n * Important for screen-readers and useful for localization.\n * @attr value-format\n */\n @property({ attribute: 'value-format' })\n public valueFormat!: string;\n\n /**\n * The current value of the component\n * @attr\n */\n @property({ type: Number })\n public value = 0;\n\n /**\n * Sets the disabled state of the component\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n /**\n * Sets hover preview behavior for the component\n * @attr\n */\n @property({ type: Boolean, reflect: true, attribute: 'hover-preview' })\n public hoverPreview = false;\n\n /**\n * Sets the readonly state of the component\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public readonly = false;\n\n /**\n * Toggles single selection visual mode.\n * @attr\n */\n @property({ type: Boolean })\n public single = false;\n\n @watch('max')\n protected handleMaxChange() {\n this.hasProjectedSymbols\n ? (this.max = this.ratingSymbols.length)\n : (this.max = Math.max(0, this.max));\n if (this.max < this.value) {\n this.value = this.max;\n }\n }\n\n @watch('value')\n protected handleValueChange() {\n this.value = clamp(this.value, 0, this.max);\n }\n\n @watch('step')\n protected handlePrecisionChange() {\n this.step = !this.single ? clamp(this.step, 0.001, 1) : 1;\n }\n\n @watch('single')\n protected handleSelectionChange() {\n if (this.single) {\n this.step = 1;\n this.value = Math.ceil(this.value);\n }\n }\n\n constructor() {\n super();\n this.addEventListener('keydown', this.handleKeyDown);\n }\n\n protected handleClick({ clientX }: MouseEvent) {\n if (!this.isInteractive) {\n return;\n }\n\n const value = this.calcNewValue(clientX);\n this.value === value ? (this.value = 0) : (this.value = value);\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected handleMouseMove({ clientX }: MouseEvent) {\n if (!this.isInteractive) {\n return;\n }\n\n const value = this.calcNewValue(clientX);\n\n if (this.hoverValue !== value) {\n // Since mousemove spams a lot, only emit on a value change\n this.hoverValue = value;\n this.emitEvent('igcHover', { detail: this.hoverValue });\n }\n }\n\n protected handleMouseEnter() {\n if (this.isInteractive) {\n this.hoverState = true;\n }\n }\n\n protected handleMouseLeave() {\n if (this.isInteractive) {\n this.hoverState = false;\n }\n }\n\n protected handleKeyDown({ key }: KeyboardEvent) {\n if (!this.isInteractive) {\n return;\n }\n\n let result = this.value;\n const ltr = isLTR(this);\n\n switch (key) {\n case 'ArrowUp':\n case 'ArrowRight':\n result += ltr ? this.step : -this.step;\n break;\n case 'ArrowDown':\n case 'ArrowLeft':\n result -= ltr ? this.step : -this.step;\n break;\n case 'Home':\n result = this.step;\n break;\n case 'End':\n result = this.max;\n break;\n default:\n return;\n }\n\n // Verify new value is in bounds and emit\n this.value = clamp(result, 0, this.max);\n\n if (result === this.value) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n }\n\n protected handleSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n\n this.ratingSymbols = slot\n .assignedElements()\n .filter(\n (el) => el instanceof IgcRatingSymbolComponent\n ) as IgcRatingSymbolComponent[];\n\n if (this.hasProjectedSymbols) {\n this.max = this.ratingSymbols.length;\n }\n\n this.requestUpdate();\n }\n\n protected calcNewValue(x: number) {\n const { width, left, right } = this.container.getBoundingClientRect();\n const percent = isLTR(this) ? (x - left) / width : (right - x) / width;\n const value = this.round(this.max * percent + this.step / 2);\n\n return clamp(value, this.step, this.max);\n }\n\n protected getPrecision(num: number) {\n const [_, decimal] = num.toString().split('.');\n return decimal ? decimal.length : 0;\n }\n\n protected round(value: number) {\n value = Math.round(value / this.step) * this.step;\n return Number(value.toFixed(this.getPrecision(this.step)));\n }\n\n protected clipSymbol(index: number, isLTR = true) {\n const value = this.hoverState ? this.hoverValue : this.value;\n const progress = index + 1 - value;\n const exclusive = progress === 0 || this.value === index + 1 ? 0 : 1;\n const selection = this.single ? exclusive : progress;\n const activate = (p: number) => clamp(p * 100, 0, 100);\n\n const forward = `inset(0 ${activate(\n isLTR ? selection : 1 - selection\n )}% 0 0)`;\n const backward = `inset(0 0 0 ${activate(\n isLTR ? 1 - selection : selection\n )}%)`;\n\n return {\n backward: isLTR ? backward : forward,\n forward: isLTR ? forward : backward,\n };\n }\n\n /**\n * Increments the value of the control by `n` steps multiplied by the\n * step factor.\n */\n public stepUp(n = 1) {\n this.value += this.round(n * this.step);\n }\n\n /**\n * Decrements the value of the control by `n` steps multiplied by\n * the step factor.\n */\n public stepDown(n = 1) {\n this.value -= this.round(n * this.step);\n }\n\n protected *renderSymbols() {\n const ltr = isLTR(this);\n for (let i = 0; i < this.max; i++) {\n const { forward, backward } = this.clipSymbol(i, ltr);\n yield html`<igc-rating-symbol exportparts=\"symbol, full, empty\">\n <igc-icon\n collection=\"internal\"\n name=\"star\"\n style=${styleMap({ clipPath: forward })}\n ></igc-icon>\n <igc-icon\n collection=\"internal\"\n name=\"star_border\"\n style=${styleMap({ clipPath: backward })}\n slot=\"empty\"\n ></igc-icon>\n </igc-rating-symbol>`;\n }\n }\n\n protected clipProjected() {\n if (this.hasProjectedSymbols) {\n const ltr = isLTR(this);\n this.ratingSymbols.forEach((symbol: IgcRatingSymbolComponent, i) => {\n const full = symbol.shadowRoot?.querySelector(\n '[part=\"symbol full\"]'\n ) as HTMLElement;\n\n const empty = symbol.shadowRoot?.querySelector(\n '[part=\"symbol empty\"]'\n ) as HTMLElement;\n const { forward, backward } = this.clipSymbol(i, ltr);\n\n if (full) {\n full.style.clipPath = forward;\n }\n\n if (empty) {\n empty.style.clipPath = backward;\n }\n });\n }\n }\n\n protected override render() {\n const props = [\n this.value,\n this.hoverValue,\n this.max,\n this.step,\n this.single,\n this.hoverState,\n this.ratingSymbols,\n ];\n\n return html`\n <label part=\"label\" id=\"rating-label\" ?hidden=${!this.label}\n >${this.label}</label\n >\n <div\n part=\"base\"\n role=\"slider\"\n tabindex=${ifDefined(this.disabled ? undefined : 0)}\n aria-labelledby=\"rating-label\"\n aria-valuemin=\"0\"\n aria-valuenow=${this.value}\n aria-valuemax=${this.max}\n aria-valuetext=${this.valueText}\n >\n <div\n aria-hidden=\"true\"\n part=\"symbols\"\n @click=${this.handleClick}\n @mouseenter=${this.hoverPreview ? this.handleMouseEnter : nothing}\n @mouseleave=${this.hoverPreview ? this.handleMouseLeave : nothing}\n @mousemove=${this.hoverPreview ? this.handleMouseMove : nothing}\n >\n <slot name=\"symbol\" @slotchange=${this.handleSlotChange}>\n ${guard(props, () => {\n this.clipProjected();\n return this.renderSymbols();\n })}\n </slot>\n </div>\n <label part=\"value-label\" ?hidden=${this.valueLabel.length === 0}>\n <slot name=\"value-label\"></slot>\n </label>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-rating': IgcRatingComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rating.js","sourceRoot":"","sources":["../../../src/components/rating/rating.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, query, queryAssignedNodes, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { guard } from 'lit/directives/guard.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { SizableMixin } from '../common/mixins/sizable.js';\nimport { clamp, format, isLTR } from '../common/util.js';\nimport { styles } from './rating.base.css.js';\nimport { styles as bootstrap } from './rating.bootstrap.css.js';\nimport { styles as fluent } from './rating.fluent.css.js';\nimport { styles as indigo } from './rating.indigo.css.js';\n\nimport { defineComponents } from '../common/definitions/defineComponents.js';\nimport IgcRatingSymbolComponent from './rating-symbol.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport { FormAssociatedMixin } from '../common/mixins/form-associated.js';\n\ndefineComponents(IgcRatingSymbolComponent, IgcIconComponent);\n\nexport interface IgcRatingEventMap {\n igcChange: CustomEvent<number>;\n igcHover: CustomEvent<number>;\n}\n\n/**\n * Rating provides insight regarding others' opinions and experiences,\n * and can allow the user to submit a rating of their own\n *\n * @element igc-rating\n *\n * @fires igcChange - Emitted when the value of the control changes.\n * @fires igcHover - Emitted when hover is enabled and the user mouses over a symbol of the rating.\n *\n * @csspart base - The main wrapper which holds all of the rating elements.\n * @csspart label - The label part.\n * @csspart value-label - The value label part.\n * @csspart symbols - A wrapper for all rating symbols.\n * @csspart symbol - The part of the encapsulated default symbol.\n * @csspart full - The part of the encapsulated full symbols.\n * @csspart empty - The part of the encapsulated empty symbols.\n *\n * @cssproperty --symbol-size - The size of the symbols.\n * @cssproperty --symbol-full-color - The color of the filled symbol.\n * @cssproperty --symbol-empty-color - The color of the empty symbol.\n * @cssproperty --symbol-full-filter - The filter(s) used for the filled symbol.\n * @cssproperty --symbol-empty-filter - The filter(s) used for the empty symbol.\n */\n@themes({ fluent, bootstrap, indigo })\nexport default class IgcRatingComponent extends FormAssociatedMixin(\n SizableMixin(\n EventEmitterMixin<IgcRatingEventMap, Constructor<LitElement>>(LitElement)\n )\n) {\n public static readonly tagName = 'igc-rating';\n public static styles = [styles];\n\n protected ratingSymbols: Array<IgcRatingSymbolComponent> = [];\n\n @query('[part=\"symbols\"]', true)\n protected container!: HTMLElement;\n\n @queryAssignedNodes({ slot: 'value-label', flatten: true })\n protected valueLabel!: Array<Node>;\n\n @state()\n protected hoverValue = -1;\n\n @state()\n protected hoverState = false;\n\n protected get isInteractive() {\n return !(this.readonly || this.disabled);\n }\n\n protected get hasProjectedSymbols() {\n return this.ratingSymbols.length > 0;\n }\n\n protected get valueText() {\n // Skip IEEE 754 representation for screen readers\n const value = this.round(this.value);\n return this.valueFormat\n ? format(this.valueFormat, `${value}`, `${this.max}`)\n : `${value} of ${this.max}`;\n }\n\n /**\n * The maximum value for the rating.\n *\n * If there are projected symbols, the maximum value will be resolved\n * based on the number of symbols.\n * @attr\n */\n @property({ type: Number })\n public max = 5;\n\n /**\n * The minimum value change allowed.\n *\n * Valid values are in the interval between 0 and 1 inclusive.\n * @attr\n */\n @property({ type: Number })\n public step = 1;\n\n /**\n * The label of the control.\n * @attr\n */\n @property()\n public label!: string;\n\n /**\n * A format string which sets aria-valuetext. Instances of '{0}' will be replaced\n * with the current value of the control and instances of '{1}' with the maximum value for the control.\n *\n * Important for screen-readers and useful for localization.\n * @attr value-format\n */\n @property({ attribute: 'value-format' })\n public valueFormat!: string;\n\n /**\n * The current value of the component\n * @attr\n */\n @property({ type: Number })\n public value = 0;\n\n /**\n * Sets hover preview behavior for the component\n * @attr\n */\n @property({ type: Boolean, reflect: true, attribute: 'hover-preview' })\n public hoverPreview = false;\n\n /**\n * Makes the control a readonly field.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public readOnly = false;\n\n /**\n * Sets the readonly state of the component\n * @attr\n *\n * @deprecated - since v4.4.0\n * Use the `readOnly` property instead.\n */\n @property({ attribute: false })\n public get readonly() {\n return this.readOnly;\n }\n\n public set readonly(value: boolean) {\n this.readOnly = value;\n }\n\n /**\n * Toggles single selection visual mode.\n * @attr\n */\n @property({ type: Boolean })\n public single = false;\n\n @watch('max')\n protected handleMaxChange() {\n this.hasProjectedSymbols\n ? (this.max = this.ratingSymbols.length)\n : (this.max = Math.max(0, this.max));\n if (this.max < this.value) {\n this.value = this.max;\n }\n }\n\n @watch('value')\n protected handleValueChange() {\n this.value = clamp(isNaN(this.value) ? 0 : this.value, 0, this.max);\n this.setFormValue(`${this.value}`, `${this.value}`);\n this.updateValidity();\n this.setInvalidState();\n }\n\n @watch('step')\n protected handlePrecisionChange() {\n this.step = !this.single ? clamp(this.step, 0.001, 1) : 1;\n }\n\n @watch('single')\n protected handleSelectionChange() {\n if (this.single) {\n this.step = 1;\n this.value = Math.ceil(this.value);\n }\n }\n\n constructor() {\n super();\n this.addEventListener('keydown', this.handleKeyDown);\n }\n\n protected handleClick({ clientX }: MouseEvent) {\n if (!this.isInteractive) {\n return;\n }\n\n const value = this.calcNewValue(clientX);\n this.value === value ? (this.value = 0) : (this.value = value);\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected handleMouseMove({ clientX }: MouseEvent) {\n if (!this.isInteractive) {\n return;\n }\n\n const value = this.calcNewValue(clientX);\n\n if (this.hoverValue !== value) {\n // Since mousemove spams a lot, only emit on a value change\n this.hoverValue = value;\n this.emitEvent('igcHover', { detail: this.hoverValue });\n }\n }\n\n protected handleMouseEnter() {\n if (this.isInteractive) {\n this.hoverState = true;\n }\n }\n\n protected handleMouseLeave() {\n if (this.isInteractive) {\n this.hoverState = false;\n }\n }\n\n protected handleKeyDown({ key }: KeyboardEvent) {\n if (!this.isInteractive) {\n return;\n }\n\n let result = this.value;\n const ltr = isLTR(this);\n\n switch (key) {\n case 'ArrowUp':\n case 'ArrowRight':\n result += ltr ? this.step : -this.step;\n break;\n case 'ArrowDown':\n case 'ArrowLeft':\n result -= ltr ? this.step : -this.step;\n break;\n case 'Home':\n result = this.step;\n break;\n case 'End':\n result = this.max;\n break;\n default:\n return;\n }\n\n // Verify new value is in bounds and emit\n this.value = clamp(result, 0, this.max);\n\n if (result === this.value) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n }\n\n protected handleSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n\n this.ratingSymbols = slot\n .assignedElements()\n .filter(\n (el) => el instanceof IgcRatingSymbolComponent\n ) as IgcRatingSymbolComponent[];\n\n if (this.hasProjectedSymbols) {\n this.max = this.ratingSymbols.length;\n }\n\n this.requestUpdate();\n }\n\n protected calcNewValue(x: number) {\n const { width, left, right } = this.container.getBoundingClientRect();\n const percent = isLTR(this) ? (x - left) / width : (right - x) / width;\n const value = this.round(this.max * percent + this.step / 2);\n\n return clamp(value, this.step, this.max);\n }\n\n protected getPrecision(num: number) {\n const [_, decimal] = num.toString().split('.');\n return decimal ? decimal.length : 0;\n }\n\n protected round(value: number) {\n value = Math.round(value / this.step) * this.step;\n return Number(value.toFixed(this.getPrecision(this.step)));\n }\n\n protected clipSymbol(index: number, isLTR = true) {\n const value = this.hoverState ? this.hoverValue : this.value;\n const progress = index + 1 - value;\n const exclusive = progress === 0 || this.value === index + 1 ? 0 : 1;\n const selection = this.single ? exclusive : progress;\n const activate = (p: number) => clamp(p * 100, 0, 100);\n\n const forward = `inset(0 ${activate(\n isLTR ? selection : 1 - selection\n )}% 0 0)`;\n const backward = `inset(0 0 0 ${activate(\n isLTR ? 1 - selection : selection\n )}%)`;\n\n return {\n backward: isLTR ? backward : forward,\n forward: isLTR ? forward : backward,\n };\n }\n\n /**\n * Increments the value of the control by `n` steps multiplied by the\n * step factor.\n */\n public stepUp(n = 1) {\n this.value += this.round(n * this.step);\n }\n\n /**\n * Decrements the value of the control by `n` steps multiplied by\n * the step factor.\n */\n public stepDown(n = 1) {\n this.value -= this.round(n * this.step);\n }\n\n protected *renderSymbols() {\n const ltr = isLTR(this);\n for (let i = 0; i < this.max; i++) {\n const { forward, backward } = this.clipSymbol(i, ltr);\n yield html`<igc-rating-symbol exportparts=\"symbol, full, empty\">\n <igc-icon\n collection=\"internal\"\n name=\"star\"\n style=${styleMap({ clipPath: forward })}\n ></igc-icon>\n <igc-icon\n collection=\"internal\"\n name=\"star_border\"\n style=${styleMap({ clipPath: backward })}\n slot=\"empty\"\n ></igc-icon>\n </igc-rating-symbol>`;\n }\n }\n\n protected clipProjected() {\n if (this.hasProjectedSymbols) {\n const ltr = isLTR(this);\n this.ratingSymbols.forEach((symbol: IgcRatingSymbolComponent, i) => {\n const full = symbol.shadowRoot?.querySelector(\n '[part=\"symbol full\"]'\n ) as HTMLElement;\n\n const empty = symbol.shadowRoot?.querySelector(\n '[part=\"symbol empty\"]'\n ) as HTMLElement;\n const { forward, backward } = this.clipSymbol(i, ltr);\n\n if (full) {\n full.style.clipPath = forward;\n }\n\n if (empty) {\n empty.style.clipPath = backward;\n }\n });\n }\n }\n\n protected override render() {\n const props = [\n this.value,\n this.hoverValue,\n this.max,\n this.step,\n this.single,\n this.hoverState,\n this.ratingSymbols,\n ];\n\n return html`\n <label part=\"label\" id=\"rating-label\" ?hidden=${!this.label}\n >${this.label}</label\n >\n <div\n part=\"base\"\n role=\"slider\"\n tabindex=${ifDefined(this.disabled ? undefined : 0)}\n aria-labelledby=\"rating-label\"\n aria-valuemin=\"0\"\n aria-valuenow=${this.value}\n aria-valuemax=${this.max}\n aria-valuetext=${this.valueText}\n >\n <div\n aria-hidden=\"true\"\n part=\"symbols\"\n @click=${this.handleClick}\n @mouseenter=${this.hoverPreview ? this.handleMouseEnter : nothing}\n @mouseleave=${this.hoverPreview ? this.handleMouseLeave : nothing}\n @mousemove=${this.hoverPreview ? this.handleMouseMove : nothing}\n >\n <slot name=\"symbol\" @slotchange=${this.handleSlotChange}>\n ${guard(props, () => {\n this.clipProjected();\n return this.renderSymbols();\n })}\n </slot>\n </div>\n <label part=\"value-label\" ?hidden=${this.valueLabel.length === 0}>\n <slot name=\"value-label\"></slot>\n </label>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-rating': IgcRatingComponent;\n }\n}\n"]}
|
|
@@ -14,9 +14,7 @@ import IgcDropdownItemComponent from '../dropdown/dropdown-item.js';
|
|
|
14
14
|
*/
|
|
15
15
|
export default class IgcSelectItemComponent extends IgcDropdownItemComponent {
|
|
16
16
|
private content;
|
|
17
|
-
/** @private */
|
|
18
17
|
static readonly tagName = "igc-select-item";
|
|
19
|
-
constructor();
|
|
20
18
|
protected activeChange(): void;
|
|
21
19
|
/** Returns the text of the item without the prefix and suffix content. */
|
|
22
20
|
get textContent(): string;
|
|
@@ -8,9 +8,6 @@ import { queryAssignedNodes } from 'lit/decorators.js';
|
|
|
8
8
|
import { watch } from '../common/decorators/watch.js';
|
|
9
9
|
import IgcDropdownItemComponent from '../dropdown/dropdown-item.js';
|
|
10
10
|
class IgcSelectItemComponent extends IgcDropdownItemComponent {
|
|
11
|
-
constructor() {
|
|
12
|
-
super();
|
|
13
|
-
}
|
|
14
11
|
activeChange() {
|
|
15
12
|
this.tabIndex = this.active ? 0 : -1;
|
|
16
13
|
if (this.active) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-item.js","sourceRoot":"","sources":["../../../src/components/select/select-item.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,wBAAwB,MAAM,8BAA8B,CAAC;AAepE,MAAqB,sBAAuB,SAAQ,wBAAwB;
|
|
1
|
+
{"version":3,"file":"select-item.js","sourceRoot":"","sources":["../../../src/components/select/select-item.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,wBAAwB,MAAM,8BAA8B,CAAC;AAepE,MAAqB,sBAAuB,SAAQ,wBAAwB;IAOhE,YAAY;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC;IAGD,IAAoB,WAAW;QAC7B,OAAO,IAAI,CAAC,OAAO;aAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,WAAW,0CAAE,IAAI,EAAE,CAAA,EAAA,CAAC;aACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;aACvB,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAGD,IAAoB,WAAW,CAAC,KAAa;QAC3C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;;AAxB+B,8BAAO,GAAG,iBAAiB,CAAC;AAFpD;IADP,kBAAkB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;uDACL;AAKvB;IADT,KAAK,CAAC,QAAQ,CAAC;0DAOf;eAbkB,sBAAsB","sourcesContent":["import { queryAssignedNodes } from 'lit/decorators.js';\nimport { watch } from '../common/decorators/watch.js';\nimport IgcDropdownItemComponent from '../dropdown/dropdown-item.js';\n\n/**\n * Represents an item in a select list.\n *\n * @element igc-select-item\n *\n * @slot - Renders the all content bar the prefix and suffix.\n * @slot prefix - Renders content before the main content area.\n * @slot suffix - Renders content after the main content area.\n *\n * @csspart prefix - The prefix wrapper.\n * @csspart content - The main content wrapper.\n * @csspart suffix - The suffix wrapper.\n */\nexport default class IgcSelectItemComponent extends IgcDropdownItemComponent {\n @queryAssignedNodes({ flatten: true })\n private content!: Array<Element>;\n\n public static override readonly tagName = 'igc-select-item';\n\n @watch('active')\n protected activeChange() {\n this.tabIndex = this.active ? 0 : -1;\n\n if (this.active) {\n this.focus();\n }\n }\n\n /** Returns the text of the item without the prefix and suffix content. */\n public override get textContent() {\n return this.content\n .map((t) => t.textContent?.trim())\n .filter((t) => t !== '')\n .join(' ');\n }\n\n /** Sets the textContent of the item without touching the prefix and suffix content. */\n public override set textContent(value: string) {\n const text = new Text(value);\n this.content.forEach((n) => n.remove());\n this.appendChild(text);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-select-item': IgcSelectItemComponent;\n }\n}\n"]}
|
|
@@ -4,11 +4,12 @@ import IgcDropdownComponent, { IgcDropdownEventMap } from '../dropdown/dropdown.
|
|
|
4
4
|
import IgcInputComponent from '../input/input.js';
|
|
5
5
|
import IgcSelectGroupComponent from './select-group.js';
|
|
6
6
|
import IgcSelectItemComponent from './select-item.js';
|
|
7
|
+
import { Validator } from '../common/validators.js';
|
|
7
8
|
export interface IgcSelectEventMap extends IgcDropdownEventMap {
|
|
8
9
|
igcFocus: CustomEvent<void>;
|
|
9
10
|
igcBlur: CustomEvent<void>;
|
|
10
11
|
}
|
|
11
|
-
declare const IgcSelectComponent_base: import("../common/mixins/constructor.js").AbstractConstructor<import("../common/mixins/event-emitter.js").EventEmitterInterface<IgcSelectEventMap>> & Constructor<IgcDropdownComponent>;
|
|
12
|
+
declare const IgcSelectComponent_base: Constructor<import("../common/mixins/form-associated-required.js").FormRequiredInterface & import("../common/mixins/form-associated.js").FormAssociatedElementInterface> & import("../common/mixins/constructor.js").AbstractConstructor<import("../common/mixins/event-emitter.js").EventEmitterInterface<IgcSelectEventMap>> & Constructor<IgcDropdownComponent>;
|
|
12
13
|
/**
|
|
13
14
|
* @element igc-select
|
|
14
15
|
*
|
|
@@ -37,11 +38,11 @@ declare const IgcSelectComponent_base: import("../common/mixins/constructor.js")
|
|
|
37
38
|
* @csspart helper-text - The helper text wrapper.
|
|
38
39
|
*/
|
|
39
40
|
export default class IgcSelectComponent extends IgcSelectComponent_base {
|
|
40
|
-
/** @private */
|
|
41
41
|
static readonly tagName = "igc-select";
|
|
42
42
|
static styles: import("lit").CSSResult;
|
|
43
43
|
private searchTerm;
|
|
44
44
|
private lastKeyTime;
|
|
45
|
+
protected validators: Validator<this>[];
|
|
45
46
|
private readonly [themeSymbol];
|
|
46
47
|
private readonly targetKeyHandlers;
|
|
47
48
|
protected items: Array<IgcSelectItemComponent>;
|
|
@@ -55,27 +56,7 @@ export default class IgcSelectComponent extends IgcSelectComponent_base {
|
|
|
55
56
|
* The value attribute of the control.
|
|
56
57
|
* @attr
|
|
57
58
|
*/
|
|
58
|
-
value?: string
|
|
59
|
-
/**
|
|
60
|
-
* The name attribute of the control.
|
|
61
|
-
* @attr
|
|
62
|
-
*/
|
|
63
|
-
name: string;
|
|
64
|
-
/**
|
|
65
|
-
* The disabled attribute of the control.
|
|
66
|
-
* @attr
|
|
67
|
-
*/
|
|
68
|
-
disabled: boolean;
|
|
69
|
-
/**
|
|
70
|
-
* The required attribute of the control.
|
|
71
|
-
* @attr
|
|
72
|
-
*/
|
|
73
|
-
required: boolean;
|
|
74
|
-
/**
|
|
75
|
-
* The invalid attribute of the control.
|
|
76
|
-
* @attr
|
|
77
|
-
*/
|
|
78
|
-
invalid: boolean;
|
|
59
|
+
value?: string;
|
|
79
60
|
/**
|
|
80
61
|
* The outlined attribute of the control.
|
|
81
62
|
* @attr
|
|
@@ -97,13 +78,13 @@ export default class IgcSelectComponent extends IgcSelectComponent_base {
|
|
|
97
78
|
*/
|
|
98
79
|
placeholder: string;
|
|
99
80
|
/**
|
|
100
|
-
* @deprecated since version
|
|
81
|
+
* @deprecated since version 4.3.0
|
|
101
82
|
* @hidden @internal @private
|
|
102
83
|
*/
|
|
103
84
|
positionStrategy: 'absolute' | 'fixed';
|
|
104
85
|
/**
|
|
105
86
|
* Whether the dropdown's width should be the same as the target's one.
|
|
106
|
-
* @deprecated since version
|
|
87
|
+
* @deprecated since version 4.3.0
|
|
107
88
|
* @hidden @internal @private
|
|
108
89
|
* @attr same-width
|
|
109
90
|
*/
|
|
@@ -111,16 +92,11 @@ export default class IgcSelectComponent extends IgcSelectComponent_base {
|
|
|
111
92
|
/**
|
|
112
93
|
* Whether the component should be flipped to the opposite side of the target once it's about to overflow the visible area.
|
|
113
94
|
* When true, once enough space is detected on its preferred side, it will flip back.
|
|
114
|
-
* @deprecated since version
|
|
95
|
+
* @deprecated since version 4.3.0
|
|
115
96
|
* @hidden @internal @private
|
|
116
97
|
* @attr
|
|
117
98
|
*/
|
|
118
99
|
flip: boolean;
|
|
119
|
-
/**
|
|
120
|
-
* The direction attribute of the control.
|
|
121
|
-
* @attr
|
|
122
|
-
*/
|
|
123
|
-
dir: 'ltr' | 'rtl' | 'auto';
|
|
124
100
|
constructor();
|
|
125
101
|
/** Override the dropdown target focusout behavior to prevent the focus from
|
|
126
102
|
* being returned to the target element when the select loses focus. */
|
|
@@ -133,12 +109,9 @@ export default class IgcSelectComponent extends IgcSelectComponent_base {
|
|
|
133
109
|
blur(): void;
|
|
134
110
|
/** Checks the validity of the control and moves the focus to it if it is not valid. */
|
|
135
111
|
reportValidity(): boolean;
|
|
136
|
-
/** Checks the validity of the control. */
|
|
137
|
-
checkValidity(): boolean;
|
|
138
112
|
protected firstUpdated(): Promise<void>;
|
|
139
113
|
protected updateValue(): void;
|
|
140
114
|
protected updateSelected(): void;
|
|
141
|
-
protected validate(): void;
|
|
142
115
|
protected selectNext(): void;
|
|
143
116
|
protected selectPrev(): void;
|
|
144
117
|
protected selectInteractiveItem(index: number): void;
|
|
@@ -7,13 +7,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { html } from 'lit';
|
|
8
8
|
import { property, query, queryAssignedElements, state, } from 'lit/decorators.js';
|
|
9
9
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
10
|
+
import { live } from 'lit/directives/live.js';
|
|
10
11
|
import { styleMap } from 'lit/directives/style-map.js';
|
|
11
12
|
import { themes, themeSymbol } from '../../theming/index.js';
|
|
13
|
+
import { alternateName } from '../common/decorators/alternateName.js';
|
|
12
14
|
import { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';
|
|
13
15
|
import { watch } from '../common/decorators/watch.js';
|
|
14
16
|
import { defineComponents } from '../common/definitions/defineComponents.js';
|
|
15
17
|
import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
|
|
16
18
|
import { partNameMap } from '../common/util.js';
|
|
19
|
+
import { FormAssociatedRequiredMixin } from '../common/mixins/form-associated-required.js';
|
|
17
20
|
import IgcDropdownComponent from '../dropdown/dropdown.js';
|
|
18
21
|
import IgcIconComponent from '../icon/icon.js';
|
|
19
22
|
import IgcInputComponent from '../input/input.js';
|
|
@@ -25,13 +28,14 @@ import { styles as bootstrap } from './themes/light/select.bootstrap.css.js';
|
|
|
25
28
|
import { styles as fluent } from './themes/light/select.fluent.css.js';
|
|
26
29
|
import { styles as indigo } from './themes/light/select.indigo.css.js';
|
|
27
30
|
import { styles as material } from './themes/light/select.material.css.js';
|
|
28
|
-
import {
|
|
31
|
+
import { requiredValidator } from '../common/validators.js';
|
|
29
32
|
defineComponents(IgcIconComponent, IgcInputComponent, IgcSelectGroupComponent, IgcSelectHeaderComponent, IgcSelectItemComponent);
|
|
30
|
-
let IgcSelectComponent = class IgcSelectComponent extends EventEmitterMixin(IgcDropdownComponent) {
|
|
33
|
+
let IgcSelectComponent = class IgcSelectComponent extends FormAssociatedRequiredMixin(EventEmitterMixin(IgcDropdownComponent)) {
|
|
31
34
|
constructor() {
|
|
32
35
|
super();
|
|
33
36
|
this.searchTerm = '';
|
|
34
37
|
this.lastKeyTime = Date.now();
|
|
38
|
+
this.validators = [requiredValidator];
|
|
35
39
|
this.targetKeyHandlers = new Map(Object.entries({
|
|
36
40
|
' ': this.onTargetEnterKey,
|
|
37
41
|
Tab: this.onTargetTabKey,
|
|
@@ -44,14 +48,10 @@ let IgcSelectComponent = class IgcSelectComponent extends EventEmitterMixin(IgcD
|
|
|
44
48
|
Home: this.onTargetHomeKey,
|
|
45
49
|
End: this.onTargetEndKey,
|
|
46
50
|
}));
|
|
47
|
-
this.disabled = false;
|
|
48
|
-
this.required = false;
|
|
49
|
-
this.invalid = false;
|
|
50
51
|
this.outlined = false;
|
|
51
52
|
this.positionStrategy = 'fixed';
|
|
52
53
|
this.sameWidth = true;
|
|
53
54
|
this.flip = true;
|
|
54
|
-
this.dir = 'auto';
|
|
55
55
|
this.size = 'medium';
|
|
56
56
|
this.addEventListener('igcChange', () => {
|
|
57
57
|
if (this.open)
|
|
@@ -70,24 +70,24 @@ let IgcSelectComponent = class IgcSelectComponent extends EventEmitterMixin(IgcD
|
|
|
70
70
|
super.blur();
|
|
71
71
|
}
|
|
72
72
|
reportValidity() {
|
|
73
|
-
const valid =
|
|
73
|
+
const valid = super.reportValidity();
|
|
74
74
|
if (!valid)
|
|
75
75
|
this.target.focus();
|
|
76
76
|
return valid;
|
|
77
77
|
}
|
|
78
|
-
checkValidity() {
|
|
79
|
-
this.invalid = this.required && !this.value;
|
|
80
|
-
return !this.invalid;
|
|
81
|
-
}
|
|
82
78
|
async firstUpdated() {
|
|
83
79
|
super.firstUpdated();
|
|
84
80
|
await this.updateComplete;
|
|
85
81
|
if (!this.selectedItem && this.value) {
|
|
86
82
|
this.updateSelected();
|
|
87
83
|
}
|
|
84
|
+
else if (this.selectedItem && !this.value) {
|
|
85
|
+
this._defaultValue = this.selectedItem.value;
|
|
86
|
+
}
|
|
88
87
|
if (this.autofocus) {
|
|
89
88
|
this.target.focus();
|
|
90
89
|
}
|
|
90
|
+
this.updateValidity();
|
|
91
91
|
}
|
|
92
92
|
updateValue() {
|
|
93
93
|
var _a;
|
|
@@ -95,21 +95,28 @@ let IgcSelectComponent = class IgcSelectComponent extends EventEmitterMixin(IgcD
|
|
|
95
95
|
}
|
|
96
96
|
updateSelected() {
|
|
97
97
|
var _a;
|
|
98
|
-
if (this.allItems.length === 0)
|
|
98
|
+
if (this.allItems.length === 0) {
|
|
99
|
+
this.setFormValue(null);
|
|
100
|
+
this.updateValidity();
|
|
101
|
+
this.setInvalidState();
|
|
99
102
|
return;
|
|
103
|
+
}
|
|
100
104
|
if (((_a = this.selectedItem) === null || _a === void 0 ? void 0 : _a.value) !== this.value) {
|
|
101
105
|
const matches = this.allItems.filter((i) => i.value === this.value);
|
|
102
106
|
const index = this.allItems.indexOf(matches.at(-1));
|
|
103
107
|
if (index === -1) {
|
|
104
108
|
this.value = undefined;
|
|
105
109
|
this.clearSelection();
|
|
110
|
+
this.setFormValue(null);
|
|
111
|
+
this.updateValidity();
|
|
112
|
+
this.setInvalidState();
|
|
106
113
|
return;
|
|
107
114
|
}
|
|
108
115
|
this.select(index);
|
|
109
116
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
this.
|
|
117
|
+
this.setFormValue(this.value);
|
|
118
|
+
this.updateValidity();
|
|
119
|
+
this.setInvalidState();
|
|
113
120
|
}
|
|
114
121
|
selectNext() {
|
|
115
122
|
var _a;
|
|
@@ -152,11 +159,13 @@ let IgcSelectComponent = class IgcSelectComponent extends EventEmitterMixin(IgcD
|
|
|
152
159
|
}
|
|
153
160
|
}
|
|
154
161
|
handleFocus() {
|
|
162
|
+
this._dirty = true;
|
|
155
163
|
if (this.open)
|
|
156
164
|
return;
|
|
157
165
|
this.emitEvent('igcFocus');
|
|
158
166
|
}
|
|
159
167
|
handleBlur() {
|
|
168
|
+
this.setInvalidState();
|
|
160
169
|
if (this.open)
|
|
161
170
|
return;
|
|
162
171
|
this.emitEvent('igcBlur');
|
|
@@ -240,11 +249,10 @@ let IgcSelectComponent = class IgcSelectComponent extends EventEmitterMixin(IgcD
|
|
|
240
249
|
placeholder=${ifDefined(this.placeholder)}
|
|
241
250
|
label=${ifDefined(this.label)}
|
|
242
251
|
size=${this.size}
|
|
243
|
-
dir=${this.dir}
|
|
244
252
|
tabindex="-1"
|
|
245
|
-
.disabled
|
|
253
|
+
.disabled=${this.disabled}
|
|
246
254
|
.required=${this.required}
|
|
247
|
-
.invalid=${this.invalid}
|
|
255
|
+
.invalid=${live(this.invalid)}
|
|
248
256
|
.outlined=${this.outlined}
|
|
249
257
|
@igcBlur=${(e) => e.stopPropagation()}
|
|
250
258
|
@igcFocus=${(e) => e.stopPropagation()}
|
|
@@ -319,20 +327,8 @@ __decorate([
|
|
|
319
327
|
query('div[role="combobox"]')
|
|
320
328
|
], IgcSelectComponent.prototype, "target", void 0);
|
|
321
329
|
__decorate([
|
|
322
|
-
property({ reflect: false
|
|
330
|
+
property({ reflect: false })
|
|
323
331
|
], IgcSelectComponent.prototype, "value", void 0);
|
|
324
|
-
__decorate([
|
|
325
|
-
property()
|
|
326
|
-
], IgcSelectComponent.prototype, "name", void 0);
|
|
327
|
-
__decorate([
|
|
328
|
-
property({ reflect: true, type: Boolean })
|
|
329
|
-
], IgcSelectComponent.prototype, "disabled", void 0);
|
|
330
|
-
__decorate([
|
|
331
|
-
property({ reflect: true, type: Boolean })
|
|
332
|
-
], IgcSelectComponent.prototype, "required", void 0);
|
|
333
|
-
__decorate([
|
|
334
|
-
property({ reflect: true, type: Boolean })
|
|
335
|
-
], IgcSelectComponent.prototype, "invalid", void 0);
|
|
336
332
|
__decorate([
|
|
337
333
|
property({ reflect: true, type: Boolean })
|
|
338
334
|
], IgcSelectComponent.prototype, "outlined", void 0);
|
|
@@ -351,9 +347,6 @@ __decorate([
|
|
|
351
347
|
__decorate([
|
|
352
348
|
property({ type: Boolean })
|
|
353
349
|
], IgcSelectComponent.prototype, "flip", void 0);
|
|
354
|
-
__decorate([
|
|
355
|
-
property({ reflect: true })
|
|
356
|
-
], IgcSelectComponent.prototype, "dir", void 0);
|
|
357
350
|
__decorate([
|
|
358
351
|
alternateName('focusComponent')
|
|
359
352
|
], IgcSelectComponent.prototype, "focus", null);
|
|
@@ -366,9 +359,6 @@ __decorate([
|
|
|
366
359
|
__decorate([
|
|
367
360
|
watch('value')
|
|
368
361
|
], IgcSelectComponent.prototype, "updateSelected", null);
|
|
369
|
-
__decorate([
|
|
370
|
-
watch('value')
|
|
371
|
-
], IgcSelectComponent.prototype, "validate", null);
|
|
372
362
|
IgcSelectComponent = __decorate([
|
|
373
363
|
themes({ bootstrap, material, fluent, indigo }, true),
|
|
374
364
|
blazorAdditionalDependencies('IgcIconComponent, IgcInputComponent, IgcSelectGroupComponent, IgcSelectHeaderComponent, IgcSelectItemComponent')
|