igniteui-webcomponents 6.1.0 → 6.1.1-alpha.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/components/accordion/accordion.js +3 -3
- package/components/accordion/accordion.js.map +1 -1
- package/components/avatar/avatar.d.ts +8 -10
- package/components/avatar/avatar.js +26 -26
- package/components/avatar/avatar.js.map +1 -1
- package/components/badge/badge.d.ts +3 -4
- package/components/badge/badge.js +13 -13
- package/components/badge/badge.js.map +1 -1
- package/components/banner/banner.d.ts +2 -3
- package/components/banner/banner.js +8 -4
- package/components/banner/banner.js.map +1 -1
- package/components/button/button-base.d.ts +4 -11
- package/components/button/button-base.js +14 -15
- package/components/button/button-base.js.map +1 -1
- package/components/button/button.js.map +1 -1
- package/components/button/icon-button.d.ts +2 -2
- package/components/button/icon-button.js +1 -1
- package/components/button/icon-button.js.map +1 -1
- package/components/button-group/button-group.js +2 -2
- package/components/button-group/button-group.js.map +1 -1
- package/components/button-group/toggle-button.d.ts +0 -6
- package/components/button-group/toggle-button.js +4 -6
- package/components/button-group/toggle-button.js.map +1 -1
- package/components/calendar/calendar.js +1 -1
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.js +3 -3
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/calendar/months-view/months-view.js +5 -5
- package/components/calendar/months-view/months-view.js.map +1 -1
- package/components/calendar/years-view/years-view.js +5 -5
- package/components/calendar/years-view/years-view.js.map +1 -1
- package/components/card/card.actions.js +1 -1
- package/components/card/card.actions.js.map +1 -1
- package/components/card/card.content.js +1 -1
- package/components/card/card.content.js.map +1 -1
- package/components/card/card.header.js +1 -1
- package/components/card/card.header.js.map +1 -1
- package/components/card/card.js +1 -1
- 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/carousel/carousel-indicator-container.js +1 -1
- package/components/carousel/carousel-indicator-container.js.map +1 -1
- package/components/carousel/carousel-indicator.d.ts +5 -7
- package/components/carousel/carousel-indicator.js +19 -19
- package/components/carousel/carousel-indicator.js.map +1 -1
- package/components/carousel/carousel-slide.d.ts +2 -3
- package/components/carousel/carousel-slide.js +17 -11
- package/components/carousel/carousel-slide.js.map +1 -1
- package/components/carousel/carousel.d.ts +0 -1
- package/components/carousel/carousel.js +15 -11
- package/components/carousel/carousel.js.map +1 -1
- package/components/chat/chat-input.d.ts +41 -0
- package/components/chat/chat-input.js +254 -0
- package/components/chat/chat-input.js.map +1 -0
- package/components/chat/chat-message-list.d.ts +24 -0
- package/components/chat/chat-message-list.js +88 -0
- package/components/chat/chat-message-list.js.map +1 -0
- package/components/chat/chat-message.d.ts +21 -0
- package/components/chat/chat-message.js +52 -0
- package/components/chat/chat-message.js.map +1 -0
- package/components/chat/chat.d.ts +41 -0
- package/components/chat/chat.js +98 -0
- package/components/chat/chat.js.map +1 -0
- package/components/chat/markdown-util.d.ts +2 -0
- package/components/chat/markdown-util.js +22 -0
- package/components/chat/markdown-util.js.map +1 -0
- package/components/chat/message-attachments.d.ts +28 -0
- package/components/chat/message-attachments.js +168 -0
- package/components/chat/message-attachments.js.map +1 -0
- package/components/chat/themes/chat.base.css.d.ts +1 -0
- package/components/chat/themes/chat.base.css.js +3 -0
- package/components/chat/themes/chat.base.css.js.map +1 -0
- package/components/chat/themes/input.base.css.d.ts +1 -0
- package/components/chat/themes/input.base.css.js +3 -0
- package/components/chat/themes/input.base.css.js.map +1 -0
- package/components/chat/themes/message-attachments.base.css.d.ts +1 -0
- package/components/chat/themes/message-attachments.base.css.js +3 -0
- package/components/chat/themes/message-attachments.base.css.js.map +1 -0
- package/components/chat/themes/message-list.base.css.d.ts +1 -0
- package/components/chat/themes/message-list.base.css.js +3 -0
- package/components/chat/themes/message-list.base.css.js.map +1 -0
- package/components/chat/themes/message.base.css.d.ts +1 -0
- package/components/chat/themes/message.base.css.js +3 -0
- package/components/chat/themes/message.base.css.js.map +1 -0
- package/components/chat/types.d.ts +46 -0
- package/components/chat/types.js +8 -0
- package/components/chat/types.js.map +1 -0
- package/components/checkbox/checkbox-base.js.map +1 -1
- package/components/checkbox/checkbox.js +1 -1
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/checkbox/switch.js +1 -1
- package/components/checkbox/switch.js.map +1 -1
- package/components/checkbox/validators.js.map +1 -1
- package/components/chip/chip.js +1 -1
- package/components/chip/chip.js.map +1 -1
- package/components/combo/combo-header.js +1 -1
- package/components/combo/combo-header.js.map +1 -1
- package/components/combo/combo-item.d.ts +4 -6
- package/components/combo/combo-item.js +20 -18
- package/components/combo/combo-item.js.map +1 -1
- package/components/combo/combo.d.ts +1 -1
- package/components/combo/combo.js +14 -14
- package/components/combo/combo.js.map +1 -1
- package/components/common/abort-handler.d.ts +39 -0
- package/components/common/abort-handler.js +19 -0
- package/components/common/abort-handler.js.map +1 -0
- package/components/common/context.d.ts +5 -1
- package/components/common/context.js +2 -1
- package/components/common/context.js.map +1 -1
- package/components/common/controllers/drag.d.ts +3 -2
- package/components/common/controllers/drag.js +7 -6
- package/components/common/controllers/drag.js.map +1 -1
- package/components/common/controllers/focus-ring.d.ts +1 -0
- package/components/common/controllers/focus-ring.js +5 -4
- package/components/common/controllers/focus-ring.js.map +1 -1
- package/components/common/controllers/gestures.d.ts +6 -2
- package/components/common/controllers/gestures.js +15 -11
- package/components/common/controllers/gestures.js.map +1 -1
- package/components/common/controllers/internals.d.ts +33 -0
- package/components/common/controllers/internals.js +25 -0
- package/components/common/controllers/internals.js.map +1 -0
- package/components/common/controllers/key-bindings.d.ts +1 -0
- package/components/common/controllers/key-bindings.js +6 -4
- package/components/common/controllers/key-bindings.js.map +1 -1
- package/components/common/controllers/mutation-observer.d.ts +25 -15
- package/components/common/controllers/mutation-observer.js +23 -12
- package/components/common/controllers/mutation-observer.js.map +1 -1
- package/components/common/controllers/resize-observer.js.map +1 -1
- package/components/common/controllers/root-click.d.ts +58 -13
- package/components/common/controllers/root-click.js +47 -35
- package/components/common/controllers/root-click.js.map +1 -1
- package/components/common/decorators/shadow-options.d.ts +10 -0
- package/components/common/decorators/shadow-options.js +10 -0
- package/components/common/decorators/shadow-options.js.map +1 -0
- package/components/common/definitions/defineAllComponents.js +14 -12
- package/components/common/definitions/defineAllComponents.js.map +1 -1
- package/components/common/mixins/alert.d.ts +1 -2
- package/components/common/mixins/alert.js +13 -9
- package/components/common/mixins/alert.js.map +1 -1
- package/components/common/mixins/combo-box.d.ts +2 -1
- package/components/common/mixins/combo-box.js +0 -2
- package/components/common/mixins/combo-box.js.map +1 -1
- package/components/common/mixins/forms/associated.js +2 -2
- package/components/common/mixins/forms/associated.js.map +1 -1
- package/components/common/mixins/option.d.ts +1 -2
- package/components/common/mixins/option.js +13 -11
- package/components/common/mixins/option.js.map +1 -1
- package/components/common/part-map.js +1 -1
- package/components/common/part-map.js.map +1 -1
- package/components/common/util.d.ts +9 -0
- package/components/common/util.js +9 -1
- package/components/common/util.js.map +1 -1
- package/components/date-picker/date-picker.d.ts +1 -6
- package/components/date-picker/date-picker.js +11 -10
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/date-picker/validators.js.map +1 -1
- package/components/date-range-picker/date-range-picker.d.ts +2 -7
- package/components/date-range-picker/date-range-picker.js +11 -10
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-range-picker/predefined-ranges-area.js +1 -1
- package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/validators.js.map +1 -1
- package/components/dialog/dialog.js +1 -1
- package/components/dialog/dialog.js.map +1 -1
- package/components/divider/divider.d.ts +5 -3
- package/components/divider/divider.js +17 -15
- package/components/divider/divider.js.map +1 -1
- package/components/dropdown/dropdown-group.d.ts +0 -1
- package/components/dropdown/dropdown-group.js +7 -3
- package/components/dropdown/dropdown-group.js.map +1 -1
- package/components/dropdown/dropdown-header.js +1 -1
- package/components/dropdown/dropdown-header.js.map +1 -1
- package/components/dropdown/dropdown.d.ts +2 -1
- package/components/dropdown/dropdown.js +5 -2
- package/components/dropdown/dropdown.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/file-input/file-input.js.map +1 -1
- package/components/file-input/validators.js.map +1 -1
- package/components/focus-trap/focus-trap.js +4 -4
- package/components/focus-trap/focus-trap.js.map +1 -1
- package/components/icon/icon.d.ts +1 -1
- package/components/icon/icon.js +7 -5
- package/components/icon/icon.js.map +1 -1
- package/components/input/input-base.d.ts +1 -7
- package/components/input/input-base.js +4 -6
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.js.map +1 -1
- package/components/input/themes/shared/input.material.css.js +1 -1
- package/components/input/themes/shared/input.material.css.js.map +1 -1
- package/components/input/validators.js.map +1 -1
- package/components/list/list-header.d.ts +0 -1
- package/components/list/list-header.js +5 -3
- package/components/list/list-header.js.map +1 -1
- package/components/list/list-item.d.ts +0 -1
- package/components/list/list-item.js +7 -3
- package/components/list/list-item.js.map +1 -1
- package/components/list/list.d.ts +0 -1
- package/components/list/list.js +7 -3
- package/components/list/list.js.map +1 -1
- package/components/mask-input/mask-input.js.map +1 -1
- package/components/mask-input/validators.js.map +1 -1
- package/components/nav-drawer/nav-drawer-header-item.js +1 -1
- package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer-item.js +1 -1
- package/components/nav-drawer/nav-drawer-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer.js +1 -1
- package/components/nav-drawer/nav-drawer.js.map +1 -1
- package/components/navbar/navbar.js +1 -1
- package/components/navbar/navbar.js.map +1 -1
- package/components/popover/popover.js +1 -1
- package/components/popover/popover.js.map +1 -1
- package/components/progress/base.d.ts +1 -2
- package/components/progress/base.js +28 -26
- package/components/progress/base.js.map +1 -1
- package/components/radio/radio.js +1 -1
- package/components/radio/radio.js.map +1 -1
- package/components/radio/utils.js.map +1 -1
- package/components/radio-group/radio-group.d.ts +1 -1
- package/components/radio-group/radio-group.js +9 -8
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/rating/rating-symbol.js +1 -1
- package/components/rating/rating-symbol.js.map +1 -1
- package/components/rating/rating.js +1 -1
- package/components/rating/rating.js.map +1 -1
- package/components/resize-container/resize-container.js +1 -1
- package/components/resize-container/resize-container.js.map +1 -1
- package/components/resize-container/resize-controller.d.ts +3 -2
- package/components/resize-container/resize-controller.js +6 -4
- package/components/resize-container/resize-controller.js.map +1 -1
- package/components/ripple/ripple.js +3 -2
- package/components/ripple/ripple.js.map +1 -1
- package/components/select/select-group.d.ts +1 -1
- package/components/select/select-group.js +9 -5
- package/components/select/select-group.js.map +1 -1
- package/components/select/select-header.js +1 -1
- package/components/select/select-header.js.map +1 -1
- package/components/select/select.d.ts +1 -0
- package/components/select/select.js +9 -6
- package/components/select/select.js.map +1 -1
- package/components/select/validators.js.map +1 -1
- package/components/slider/slider-base.js +6 -6
- package/components/slider/slider-base.js.map +1 -1
- package/components/slider/slider-label.js +1 -1
- package/components/slider/slider-label.js.map +1 -1
- package/components/slider/slider.js.map +1 -1
- package/components/snackbar/snackbar.js.map +1 -1
- package/components/stepper/step.js +1 -1
- package/components/stepper/step.js.map +1 -1
- package/components/stepper/stepper.js +1 -1
- package/components/stepper/stepper.js.map +1 -1
- package/components/tabs/tab.js +2 -2
- package/components/tabs/tab.js.map +1 -1
- package/components/tabs/tabs.js +4 -4
- package/components/tabs/tabs.js.map +1 -1
- package/components/textarea/textarea.d.ts +1 -7
- package/components/textarea/textarea.js +7 -9
- package/components/textarea/textarea.js.map +1 -1
- package/components/textarea/themes/shared/textarea.material.css.js +1 -1
- package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
- package/components/textarea/validators.js.map +1 -1
- package/components/tile-manager/position.d.ts +1 -1
- package/components/tile-manager/position.js.map +1 -1
- package/components/tile-manager/themes/container.js.map +1 -1
- package/components/tile-manager/tile-manager.d.ts +0 -1
- package/components/tile-manager/tile-manager.js +4 -6
- package/components/tile-manager/tile-manager.js.map +1 -1
- package/components/tile-manager/tile.js +1 -1
- package/components/tile-manager/tile.js.map +1 -1
- package/components/tooltip/controller.d.ts +2 -4
- package/components/tooltip/controller.js +11 -20
- package/components/tooltip/controller.js.map +1 -1
- package/components/tooltip/themes/themes.js +1 -1
- package/components/tooltip/themes/themes.js.map +1 -1
- package/components/tooltip/tooltip.d.ts +0 -1
- package/components/tooltip/tooltip.js +37 -33
- package/components/tooltip/tooltip.js.map +1 -1
- package/components/tree/tree-item.d.ts +1 -0
- package/components/tree/tree-item.js +24 -24
- package/components/tree/tree-item.js.map +1 -1
- package/components/tree/tree.d.ts +1 -1
- package/components/tree/tree.js +4 -3
- package/components/tree/tree.js.map +1 -1
- package/components/tree/tree.navigation.d.ts +1 -1
- package/components/tree/tree.navigation.js.map +1 -1
- package/components/tree/tree.selection.d.ts +1 -1
- package/components/tree/tree.selection.js.map +1 -1
- package/components/validation-container/themes/themes.js.map +1 -1
- package/components/validation-container/validation-container.d.ts +1 -1
- package/components/validation-container/validation-container.js +1 -1
- package/components/validation-container/validation-container.js.map +1 -1
- package/custom-elements.json +20068 -19253
- package/igniteui-webcomponents.css-data.json +1 -1
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +7 -0
- package/index.js +5 -0
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/theming/theming-controller.d.ts +1 -1
- package/theming/theming-controller.js +1 -1
- package/theming/theming-controller.js.map +1 -1
- package/web-types.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rating.js","sourceRoot":"","sources":["../../../src/components/rating/rating.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,EACL,QAAQ,EACR,KAAK,EACL,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,GACN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,OAAO,EACP,MAAM,EACN,OAAO,GACR,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAEL,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,gBAAgB,MAAM,iBAAiB,CAAC;AAC/C,OAAO,wBAAwB,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AA+B1B,IAAM,kBAAkB,0BAAxB,MAAM,kBAAmB,SAAQ,mBAAmB,CACjE,iBAAiB,CACf,UAAU,CACX,CACF;IAKQ,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CACf,oBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,CACzB,CAAC;IACJ,CAAC;IA8BD,IAAc,aAAa;QACzB,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,IAAc,mBAAmB;QAC/B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,IAAc,SAAS;QAErB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,WAAW;YACrB,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;YACjD,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IAChC,CAAC;IAWD,IAAW,GAAG,CAAC,KAAa;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB;YAClC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM;YAC3B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAUD,IAAW,IAAI,CAAC,KAAa;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IA0BD,IAAW,KAAK,CAAC,MAAc;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU;YAC3B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC/B,CAAC;IAsBD,IAAW,MAAM,CAAC,KAAc;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IASD;QACE,KAAK,EAAE,CAAC;QAhKkB,eAAU,GACpC,oBAAoB,CAAC,IAAI,EAAE;YACzB,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,yBAAyB;SACxC,CAAC,CAAC;QAEG,SAAI,GAAG,CAAC,CAAC;QACT,UAAK,GAAG,CAAC,CAAC;QACV,YAAO,GAAG,KAAK,CAAC;QAed,eAAU,GAAG,CAAC,CAAC,CAAC;QAGhB,eAAU,GAAG,KAAK,CAAC;QAkGtB,iBAAY,GAAG,KAAK,CAAC;QAOrB,aAAQ,GAAG,KAAK,CAAC;QA0BjB,eAAU,GAAG,KAAK,CAAC;QAKxB,cAAc,CAAC,IAAI,EAAE;YACnB,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa;YAC/B,eAAe,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1C,CAAC;aACC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;aAChE,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,CACpB,IAAI,CAAC,eAAe,CAClB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAC9D,CACF;aACA,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;aAClE,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CACnB,IAAI,CAAC,eAAe,CAClB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAC9D,CACF;aACA,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnD,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IAEkB,KAAK,CAAC,YAAY;QACnC,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAES,WAAW,CAAC,EAAE,OAAO,EAAgB;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;QAEvC,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAES,iBAAiB,CAAC,EAAE,OAAO,EAAgB;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YAE9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAES,eAAe,CAAC,KAAa;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAES,gBAAgB;QACxB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YACrC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAES,mBAAmB;QAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAES,YAAY,CAAC,CAAS;QAC9B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;QACtE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC;QAE7C,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAES,KAAK,CAAC,KAAa;QAC3B,OAAO,YAAY,CACjB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EACxC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5B,CAAC;IACJ,CAAC;IAES,UAAU,CAAC,KAAa,EAAE,KAAK,GAAG,IAAI;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7D,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;QACnC,MAAM,SAAS,GAAG,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QACrD,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAEvD,MAAM,OAAO,GAAG,WAAW,QAAQ,CACjC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAClC,QAAQ,CAAC;QACV,MAAM,QAAQ,GAAG,eAAe,QAAQ,CACtC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAClC,IAAI,CAAC;QAEN,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;YACpC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;SACpC,CAAC;IACJ,CAAC;IAMM,MAAM,CAAC,CAAC,GAAG,CAAC;QACjB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAMM,QAAQ,CAAC,CAAC,GAAG,CAAC;QACnB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAES,CAAC,aAAa;QACtB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACtD,MAAM,IAAI,CAAA;;;;kBAIE,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;;;;;kBAK/B,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;;;2BAGvB,CAAC;QACxB,CAAC;IACH,CAAC;IAES,aAAa;QACrB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,sBAAsB,CAAC;QACxC,MAAM,SAAS,GAAG,uBAAuB,CAAC;QAE1C,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAc,QAAQ,CAAC,CAAC;YACpE,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAc,SAAS,CAAC,CAAC;YACtE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAEtD,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;YAChC,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAEkB,MAAM;QACvB,MAAM,KAAK,GAAG;YACZ,IAAI,CAAC,KAAK;YACV,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,GAAG;YACR,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,aAAa;SACnB,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC;QAE5D,OAAO,IAAI,CAAA;sDACuC,CAAC,IAAI,CAAC,KAAK;WACtD,IAAI,CAAC,KAAK;;;;;mBAKF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;;;wBAGnC,IAAI,CAAC,KAAK;wBACV,IAAI,CAAC,GAAG;yBACP,IAAI,CAAC,SAAS;;;;;mBAKpB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO;0BACxC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO;0BAC/C,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO;yBACjD,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO;;4CAE3B,IAAI,CAAC,gBAAgB;cACnD,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAClB,IAAI,CAAC,mBAAmB;YACtB,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;YACtB,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CACzB;;;4CAG+B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;;;;KAI/D,CAAC;IACJ,CAAC;;AA9XsB,0BAAO,GAAG,YAAY,AAAf,CAAgB;AAChC,yBAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;AAyB9B;IAJT,qBAAqB,CAAC;QACrB,QAAQ,EAAE,wBAAwB,CAAC,OAAO;QAC1C,IAAI,EAAE,QAAQ;KACf,CAAC;yDACmD;AAG3C;IADT,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC;qDACE;AAGxB;IADT,kBAAkB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sDAC7B;AAGpB;IADT,KAAK,EAAE;sDACkB;AAGhB;IADT,KAAK,EAAE;sDACqB;AA2B7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAS1B;AAcD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CAG1B;AAWM;IADN,QAAQ,EAAE;iDACW;AAUf;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;uDACZ;AAS5B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;+CAO1B;AAWM;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;wDAC3C;AAOrB;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;oDAC1C;AAQxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gDAQ1C;AAWM;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;sDAC3C;AA9KP,kBAAkB;IADtC,MAAM,CAAC,GAAG,CAAC;GACS,kBAAkB,CAoYtC;eApYoB,kBAAkB","sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n queryAssignedNodes,\n state,\n} from 'lit/decorators.js';\nimport { guard } from 'lit/directives/guard.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n endKey,\n homeKey,\n} from '../common/controllers/key-bindings.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedMixin } from '../common/mixins/forms/associated.js';\nimport {\n type FormValueOf,\n createFormValueState,\n defaultNumberTransformers,\n} from '../common/mixins/forms/form-value.js';\nimport {\n asNumber,\n clamp,\n formatString,\n isEmpty,\n isLTR,\n numberOfDecimals,\n roundPrecise,\n} from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcRatingSymbolComponent from './rating-symbol.js';\nimport { styles } from './themes/rating.base.css.js';\nimport { styles as shared } from './themes/shared/rating.common.css.js';\nimport { all } from './themes/themes.js';\n\nexport interface IgcRatingComponentEventMap {\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(all)\nexport default class IgcRatingComponent extends FormAssociatedMixin(\n EventEmitterMixin<IgcRatingComponentEventMap, Constructor<LitElement>>(\n LitElement\n )\n) {\n public static readonly tagName = 'igc-rating';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcRatingComponent,\n IgcIconComponent,\n IgcRatingSymbolComponent\n );\n }\n\n protected override readonly _formValue: FormValueOf<number> =\n createFormValueState(this, {\n initialValue: 0,\n transformers: defaultNumberTransformers,\n });\n\n private _max = 5;\n private _step = 1;\n private _single = false;\n\n @queryAssignedElements({\n selector: IgcRatingSymbolComponent.tagName,\n slot: 'symbol',\n })\n protected ratingSymbols!: IgcRatingSymbolComponent[];\n\n @query('[part=\"symbols\"]', true)\n protected container!: HTMLElement;\n\n @queryAssignedNodes({ slot: 'value-label', flatten: true })\n protected valueLabel!: 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 ? formatString(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 max\n * @default 5\n */\n @property({ type: Number })\n public set max(value: number) {\n this._max = this.hasProjectedSymbols\n ? this.ratingSymbols.length\n : Math.max(0, value);\n\n if (this._max < this.value) {\n this.value = this._max;\n }\n }\n\n public get max(): number {\n return this._max;\n }\n\n /**\n * The minimum value change allowed.\n *\n * Valid values are in the interval between 0 and 1 inclusive.\n * @attr step\n * @default 1\n */\n @property({ type: Number })\n public set step(value: number) {\n this._step = this.single ? 1 : clamp(value, 0.001, 1);\n }\n\n public get step(): number {\n return this._step;\n }\n\n /**\n * The label of the control.\n * @attr label\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 /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The current value of the component\n * @attr value\n * @default 0\n */\n @property({ type: Number })\n public set value(number: number) {\n const value = this.hasUpdated\n ? clamp(asNumber(number), 0, this.max)\n : Math.max(asNumber(number), 0);\n this._formValue.setValueAndFormState(value);\n this._validate();\n }\n\n public get value(): number {\n return this._formValue.value;\n }\n\n /**\n * Sets hover preview behavior for the component\n * @attr hover-preview\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 readonly\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /**\n * Toggles single selection visual mode.\n * @attr single\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public set single(value: boolean) {\n this._single = Boolean(value);\n\n if (this._single) {\n this.step = 1;\n this.value = Math.ceil(this.value);\n }\n }\n\n public get single(): boolean {\n return this._single;\n }\n\n /**\n * Whether to reset the rating when the user selects the same value.\n * @attr allow-reset\n */\n @property({ type: Boolean, reflect: true, attribute: 'allow-reset' })\n public allowReset = false;\n\n constructor() {\n super();\n\n addKeybindings(this, {\n skip: () => !this.isInteractive,\n bindingDefaults: { preventDefault: true },\n })\n .set(arrowUp, () => this.emitValueUpdate(this.value + this.step))\n .set(arrowRight, () =>\n this.emitValueUpdate(\n isLTR(this) ? this.value + this.step : this.value - this.step\n )\n )\n .set(arrowDown, () => this.emitValueUpdate(this.value - this.step))\n .set(arrowLeft, () =>\n this.emitValueUpdate(\n isLTR(this) ? this.value - this.step : this.value + this.step\n )\n )\n .set(homeKey, () => this.emitValueUpdate(this.step))\n .set(endKey, () => this.emitValueUpdate(this.max));\n }\n\n protected override async firstUpdated() {\n await this.updateComplete;\n this._formValue.setValueAndFormState(clamp(this.value, 0, this.max));\n this._pristine = true;\n }\n\n protected handleClick({ clientX }: PointerEvent) {\n const value = this.calcNewValue(clientX);\n const sameValue = this.value === value;\n\n if (this.allowReset && sameValue) {\n this.emitValueUpdate(0);\n } else if (!sameValue) {\n this.emitValueUpdate(value);\n }\n }\n\n protected handlePointerMove({ clientX }: PointerEvent) {\n const value = this.calcNewValue(clientX);\n\n if (this.hoverValue !== value) {\n // Since pointermove 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 emitValueUpdate(value: number) {\n this.value = clamp(value, 0, this.max);\n if (value === this.value) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n }\n\n protected handleSlotChange() {\n if (this.hasProjectedSymbols) {\n this.max = this.ratingSymbols.length;\n this.requestUpdate();\n }\n }\n\n protected handleHoverEnabled() {\n this.hoverState = true;\n }\n\n protected handleHoverDisabled() {\n this.hoverState = false;\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);\n\n return clamp(value, this.step, this.max);\n }\n\n protected round(value: number) {\n return roundPrecise(\n Math.ceil(value / this.step) * this.step,\n numberOfDecimals(this.step)\n );\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=\"default\"\n name=\"star_filled\"\n style=${styleMap({ clipPath: forward })}\n ></igc-icon>\n <igc-icon\n collection=\"default\"\n name=\"star_outlined\"\n style=${styleMap({ clipPath: backward })}\n slot=\"empty\"\n ></igc-icon>\n </igc-rating-symbol>`;\n }\n }\n\n protected clipProjected() {\n const ltr = isLTR(this);\n const partFull = '[part=\"symbol full\"]';\n const partEmpty = '[part=\"symbol empty\"]';\n\n for (const [i, symbol] of this.ratingSymbols.entries()) {\n const full = symbol.renderRoot.querySelector<HTMLElement>(partFull);\n const empty = symbol.renderRoot.querySelector<HTMLElement>(partEmpty);\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 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 const hoverActive = this.hoverPreview && this.isInteractive;\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.isInteractive ? this.handleClick : nothing}\n @pointerenter=${hoverActive ? this.handleHoverEnabled : nothing}\n @pointerleave=${hoverActive ? this.handleHoverDisabled : nothing}\n @pointermove=${hoverActive ? this.handlePointerMove : nothing}\n >\n <slot name=\"symbol\" @slotchange=${this.handleSlotChange}>\n ${guard(props, () =>\n this.hasProjectedSymbols\n ? this.clipProjected()\n : this.renderSymbols()\n )}\n </slot>\n </div>\n <label part=\"value-label\" ?hidden=${isEmpty(this.valueLabel)}>\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 {\n property,\n query,\n queryAssignedElements,\n queryAssignedNodes,\n state,\n} from 'lit/decorators.js';\nimport { guard } from 'lit/directives/guard.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n endKey,\n homeKey,\n} from '../common/controllers/key-bindings.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedMixin } from '../common/mixins/forms/associated.js';\nimport {\n createFormValueState,\n defaultNumberTransformers,\n type FormValueOf,\n} from '../common/mixins/forms/form-value.js';\nimport {\n asNumber,\n clamp,\n formatString,\n isEmpty,\n isLTR,\n numberOfDecimals,\n roundPrecise,\n} from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcRatingSymbolComponent from './rating-symbol.js';\nimport { styles } from './themes/rating.base.css.js';\nimport { styles as shared } from './themes/shared/rating.common.css.js';\nimport { all } from './themes/themes.js';\n\nexport interface IgcRatingComponentEventMap {\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(all)\nexport default class IgcRatingComponent extends FormAssociatedMixin(\n EventEmitterMixin<IgcRatingComponentEventMap, Constructor<LitElement>>(\n LitElement\n )\n) {\n public static readonly tagName = 'igc-rating';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcRatingComponent,\n IgcIconComponent,\n IgcRatingSymbolComponent\n );\n }\n\n protected override readonly _formValue: FormValueOf<number> =\n createFormValueState(this, {\n initialValue: 0,\n transformers: defaultNumberTransformers,\n });\n\n private _max = 5;\n private _step = 1;\n private _single = false;\n\n @queryAssignedElements({\n selector: IgcRatingSymbolComponent.tagName,\n slot: 'symbol',\n })\n protected ratingSymbols!: IgcRatingSymbolComponent[];\n\n @query('[part=\"symbols\"]', true)\n protected container!: HTMLElement;\n\n @queryAssignedNodes({ slot: 'value-label', flatten: true })\n protected valueLabel!: 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 ? formatString(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 max\n * @default 5\n */\n @property({ type: Number })\n public set max(value: number) {\n this._max = this.hasProjectedSymbols\n ? this.ratingSymbols.length\n : Math.max(0, value);\n\n if (this._max < this.value) {\n this.value = this._max;\n }\n }\n\n public get max(): number {\n return this._max;\n }\n\n /**\n * The minimum value change allowed.\n *\n * Valid values are in the interval between 0 and 1 inclusive.\n * @attr step\n * @default 1\n */\n @property({ type: Number })\n public set step(value: number) {\n this._step = this.single ? 1 : clamp(value, 0.001, 1);\n }\n\n public get step(): number {\n return this._step;\n }\n\n /**\n * The label of the control.\n * @attr label\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 /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The current value of the component\n * @attr value\n * @default 0\n */\n @property({ type: Number })\n public set value(number: number) {\n const value = this.hasUpdated\n ? clamp(asNumber(number), 0, this.max)\n : Math.max(asNumber(number), 0);\n this._formValue.setValueAndFormState(value);\n this._validate();\n }\n\n public get value(): number {\n return this._formValue.value;\n }\n\n /**\n * Sets hover preview behavior for the component\n * @attr hover-preview\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 readonly\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /**\n * Toggles single selection visual mode.\n * @attr single\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public set single(value: boolean) {\n this._single = Boolean(value);\n\n if (this._single) {\n this.step = 1;\n this.value = Math.ceil(this.value);\n }\n }\n\n public get single(): boolean {\n return this._single;\n }\n\n /**\n * Whether to reset the rating when the user selects the same value.\n * @attr allow-reset\n */\n @property({ type: Boolean, reflect: true, attribute: 'allow-reset' })\n public allowReset = false;\n\n constructor() {\n super();\n\n addKeybindings(this, {\n skip: () => !this.isInteractive,\n bindingDefaults: { preventDefault: true },\n })\n .set(arrowUp, () => this.emitValueUpdate(this.value + this.step))\n .set(arrowRight, () =>\n this.emitValueUpdate(\n isLTR(this) ? this.value + this.step : this.value - this.step\n )\n )\n .set(arrowDown, () => this.emitValueUpdate(this.value - this.step))\n .set(arrowLeft, () =>\n this.emitValueUpdate(\n isLTR(this) ? this.value - this.step : this.value + this.step\n )\n )\n .set(homeKey, () => this.emitValueUpdate(this.step))\n .set(endKey, () => this.emitValueUpdate(this.max));\n }\n\n protected override async firstUpdated() {\n await this.updateComplete;\n this._formValue.setValueAndFormState(clamp(this.value, 0, this.max));\n this._pristine = true;\n }\n\n protected handleClick({ clientX }: PointerEvent) {\n const value = this.calcNewValue(clientX);\n const sameValue = this.value === value;\n\n if (this.allowReset && sameValue) {\n this.emitValueUpdate(0);\n } else if (!sameValue) {\n this.emitValueUpdate(value);\n }\n }\n\n protected handlePointerMove({ clientX }: PointerEvent) {\n const value = this.calcNewValue(clientX);\n\n if (this.hoverValue !== value) {\n // Since pointermove 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 emitValueUpdate(value: number) {\n this.value = clamp(value, 0, this.max);\n if (value === this.value) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n }\n\n protected handleSlotChange() {\n if (this.hasProjectedSymbols) {\n this.max = this.ratingSymbols.length;\n this.requestUpdate();\n }\n }\n\n protected handleHoverEnabled() {\n this.hoverState = true;\n }\n\n protected handleHoverDisabled() {\n this.hoverState = false;\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);\n\n return clamp(value, this.step, this.max);\n }\n\n protected round(value: number) {\n return roundPrecise(\n Math.ceil(value / this.step) * this.step,\n numberOfDecimals(this.step)\n );\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=\"default\"\n name=\"star_filled\"\n style=${styleMap({ clipPath: forward })}\n ></igc-icon>\n <igc-icon\n collection=\"default\"\n name=\"star_outlined\"\n style=${styleMap({ clipPath: backward })}\n slot=\"empty\"\n ></igc-icon>\n </igc-rating-symbol>`;\n }\n }\n\n protected clipProjected() {\n const ltr = isLTR(this);\n const partFull = '[part=\"symbol full\"]';\n const partEmpty = '[part=\"symbol empty\"]';\n\n for (const [i, symbol] of this.ratingSymbols.entries()) {\n const full = symbol.renderRoot.querySelector<HTMLElement>(partFull);\n const empty = symbol.renderRoot.querySelector<HTMLElement>(partEmpty);\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 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 const hoverActive = this.hoverPreview && this.isInteractive;\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.isInteractive ? this.handleClick : nothing}\n @pointerenter=${hoverActive ? this.handleHoverEnabled : nothing}\n @pointerleave=${hoverActive ? this.handleHoverDisabled : nothing}\n @pointermove=${hoverActive ? this.handlePointerMove : nothing}\n >\n <slot name=\"symbol\" @slotchange=${this.handleSlotChange}>\n ${guard(props, () =>\n this.hasProjectedSymbols\n ? this.clipProjected()\n : this.renderSymbols()\n )}\n </slot>\n </div>\n <label part=\"value-label\" ?hidden=${isEmpty(this.valueLabel)}>\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"]}
|
|
@@ -5,7 +5,7 @@ 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
|
var IgcResizeContainerComponent_1;
|
|
8
|
-
import {
|
|
8
|
+
import { html, LitElement, nothing } from 'lit';
|
|
9
9
|
import { property, state } from 'lit/decorators.js';
|
|
10
10
|
import { createRef, ref } from 'lit/directives/ref.js';
|
|
11
11
|
import { themes } from '../../theming/theming-decorator.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize-container.js","sourceRoot":"","sources":["../../../src/components/resize-container/resize-container.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { type Ref, createRef, ref } from 'lit/directives/ref.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { partMap } from '../common/part-map.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport { addResizeController } from './resize-controller.js';\nimport { styles } from './themes/resize-container.base.css.js';\nimport { styles as shared } from './themes/shared/resize-container.common.css.js';\nimport { all } from './themes/themes.js';\nimport type {\n ResizeCallbackParams,\n ResizeGhostFactory,\n ResizeMode,\n ResizeState,\n} from './types.js';\n\n/** @ignore */\nexport interface IgcResizeContainerComponentEventMap {\n igcResizeStart: CustomEvent<ResizeCallbackParams>;\n igcResize: CustomEvent<ResizeCallbackParams>;\n igcResizeEnd: CustomEvent<ResizeCallbackParams>;\n igcResizeCancel: CustomEvent<unknown>;\n}\n\n/* blazorSuppress */\n/**\n * @element igc-resize\n *\n * @slot - renders the element(s) that should be resized\n * @slot side-adorner - renders the side resize handle.\n * @slot corner-adorner - renders the corner resize handle.\n * @slot bottom-adorner - renders the bottom resize handle.\n *\n */\n@themes(all)\nexport default class IgcResizeContainerComponent extends EventEmitterMixin<\n IgcResizeContainerComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-resize';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcResizeContainerComponent, IgcIconComponent);\n }\n\n private _controller: ReturnType<typeof addResizeController>;\n\n private _mode: ResizeMode = 'immediate';\n private _ghostFactory?: ResizeGhostFactory;\n\n /** The DOM container doing the actual resizing */\n private _container: Ref<HTMLElement> = createRef();\n\n /** Resize component adorners */\n private _adorners: Record<'side' | 'corner' | 'bottom', Ref<HTMLElement>> = {\n side: createRef(),\n corner: createRef(),\n bottom: createRef(),\n };\n\n @state()\n private _isActive = false;\n\n /**\n * Whether to always show the resize element adorners.\n */\n @property({ type: Boolean, reflect: true })\n public active = false;\n\n @property({ attribute: false })\n public set ghostFactory(value: ResizeGhostFactory) {\n this._ghostFactory = value;\n this._controller.set({ deferredFactory: this._ghostFactory });\n }\n\n public get ghostFactory(): ResizeGhostFactory | undefined {\n return this._ghostFactory;\n }\n\n /** Get/Set the mode of the resizing operation. */\n @property()\n public set mode(value: ResizeMode) {\n this._mode = value;\n this._controller.set({ mode: this._mode });\n }\n\n public get mode(): ResizeMode {\n return this._mode;\n }\n\n constructor() {\n super();\n\n this._controller = addResizeController(this, {\n ref: [this._adorners.side, this._adorners.corner, this._adorners.bottom],\n mode: this._mode,\n deferredFactory: this._ghostFactory,\n start: this._handleResizeStart,\n resize: this._handleResize,\n end: this._handleResizeEnd,\n cancel: this._handleResizeCancel,\n resizeTarget: () => this._container.value!,\n });\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', () => this.requestUpdate());\n return root;\n }\n\n private _updateResizingState(params: ResizeCallbackParams): void {\n const { initial, current, trigger } = params.state;\n const { side, bottom } = this._adorners;\n\n if (trigger === side.value) {\n current.height = initial.height;\n } else if (trigger === bottom.value) {\n current.width = initial.width;\n }\n }\n\n private _handlePointerEnter(): void {\n this._isActive = true;\n }\n\n private _handlePointerLeave(): void {\n this._isActive = false;\n }\n\n private _handleResizeStart(params: ResizeCallbackParams) {\n params.event.preventDefault();\n\n return this.emitEvent('igcResizeStart', {\n bubbles: false,\n cancelable: true,\n detail: params,\n });\n }\n\n private _handleResize(params: ResizeCallbackParams): void {\n this._updateResizingState(params);\n this.emitEvent('igcResize', { bubbles: false, detail: params });\n }\n\n private _handleResizeEnd(params: ResizeCallbackParams): void {\n this.emitEvent('igcResizeEnd', { bubbles: false, detail: params });\n }\n\n private _handleResizeCancel({ initial }: ResizeState): void {\n this._controller.dispose();\n\n if (this.mode !== 'deferred') {\n Object.assign(this._container.value!.style, {\n width: `${initial.width}px`,\n height: `${initial.height}px`,\n });\n }\n\n this.emitEvent('igcResizeCancel', { bubbles: false, cancelable: false });\n }\n\n protected _renderAdorner(name: 'side' | 'corner' | 'bottom', part: string) {\n return html`\n <slot ${ref(this._adorners[name])} part=${part} name=\"${name}-adorner\">\n </slot>\n `;\n }\n\n protected _renderAdorners() {\n if (!this._isActive && !this.active) {\n return nothing;\n }\n\n return html`\n ${this._renderAdorner('side', 'trigger-side')}\n ${this._renderAdorner('corner', 'trigger')}\n ${this._renderAdorner('bottom', 'trigger-bottom')}\n `;\n }\n\n protected override render() {\n const parts = {\n 'resize-base': true,\n active: this._isActive || this.active,\n };\n\n return html`\n <div\n ${ref(this._container)}\n part=${partMap(parts)}\n @pointerenter=${this.active ? nothing : this._handlePointerEnter}\n @pointerleave=${this.active ? nothing : this._handlePointerLeave}\n >\n <slot></slot>\n ${this._renderAdorners()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-resize': IgcResizeContainerComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"resize-container.js","sourceRoot":"","sources":["../../../src/components/resize-container/resize-container.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { createRef, type Ref, ref } from 'lit/directives/ref.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { partMap } from '../common/part-map.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport { addResizeController } from './resize-controller.js';\nimport { styles } from './themes/resize-container.base.css.js';\nimport { styles as shared } from './themes/shared/resize-container.common.css.js';\nimport { all } from './themes/themes.js';\nimport type {\n ResizeCallbackParams,\n ResizeGhostFactory,\n ResizeMode,\n ResizeState,\n} from './types.js';\n\n/** @ignore */\nexport interface IgcResizeContainerComponentEventMap {\n igcResizeStart: CustomEvent<ResizeCallbackParams>;\n igcResize: CustomEvent<ResizeCallbackParams>;\n igcResizeEnd: CustomEvent<ResizeCallbackParams>;\n igcResizeCancel: CustomEvent<unknown>;\n}\n\n/* blazorSuppress */\n/**\n * @element igc-resize\n *\n * @slot - renders the element(s) that should be resized\n * @slot side-adorner - renders the side resize handle.\n * @slot corner-adorner - renders the corner resize handle.\n * @slot bottom-adorner - renders the bottom resize handle.\n *\n */\n@themes(all)\nexport default class IgcResizeContainerComponent extends EventEmitterMixin<\n IgcResizeContainerComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-resize';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcResizeContainerComponent, IgcIconComponent);\n }\n\n private _controller: ReturnType<typeof addResizeController>;\n\n private _mode: ResizeMode = 'immediate';\n private _ghostFactory?: ResizeGhostFactory;\n\n /** The DOM container doing the actual resizing */\n private _container: Ref<HTMLElement> = createRef();\n\n /** Resize component adorners */\n private _adorners: Record<'side' | 'corner' | 'bottom', Ref<HTMLElement>> = {\n side: createRef(),\n corner: createRef(),\n bottom: createRef(),\n };\n\n @state()\n private _isActive = false;\n\n /**\n * Whether to always show the resize element adorners.\n */\n @property({ type: Boolean, reflect: true })\n public active = false;\n\n @property({ attribute: false })\n public set ghostFactory(value: ResizeGhostFactory) {\n this._ghostFactory = value;\n this._controller.set({ deferredFactory: this._ghostFactory });\n }\n\n public get ghostFactory(): ResizeGhostFactory | undefined {\n return this._ghostFactory;\n }\n\n /** Get/Set the mode of the resizing operation. */\n @property()\n public set mode(value: ResizeMode) {\n this._mode = value;\n this._controller.set({ mode: this._mode });\n }\n\n public get mode(): ResizeMode {\n return this._mode;\n }\n\n constructor() {\n super();\n\n this._controller = addResizeController(this, {\n ref: [this._adorners.side, this._adorners.corner, this._adorners.bottom],\n mode: this._mode,\n deferredFactory: this._ghostFactory,\n start: this._handleResizeStart,\n resize: this._handleResize,\n end: this._handleResizeEnd,\n cancel: this._handleResizeCancel,\n resizeTarget: () => this._container.value!,\n });\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', () => this.requestUpdate());\n return root;\n }\n\n private _updateResizingState(params: ResizeCallbackParams): void {\n const { initial, current, trigger } = params.state;\n const { side, bottom } = this._adorners;\n\n if (trigger === side.value) {\n current.height = initial.height;\n } else if (trigger === bottom.value) {\n current.width = initial.width;\n }\n }\n\n private _handlePointerEnter(): void {\n this._isActive = true;\n }\n\n private _handlePointerLeave(): void {\n this._isActive = false;\n }\n\n private _handleResizeStart(params: ResizeCallbackParams) {\n params.event.preventDefault();\n\n return this.emitEvent('igcResizeStart', {\n bubbles: false,\n cancelable: true,\n detail: params,\n });\n }\n\n private _handleResize(params: ResizeCallbackParams): void {\n this._updateResizingState(params);\n this.emitEvent('igcResize', { bubbles: false, detail: params });\n }\n\n private _handleResizeEnd(params: ResizeCallbackParams): void {\n this.emitEvent('igcResizeEnd', { bubbles: false, detail: params });\n }\n\n private _handleResizeCancel({ initial }: ResizeState): void {\n this._controller.dispose();\n\n if (this.mode !== 'deferred') {\n Object.assign(this._container.value!.style, {\n width: `${initial.width}px`,\n height: `${initial.height}px`,\n });\n }\n\n this.emitEvent('igcResizeCancel', { bubbles: false, cancelable: false });\n }\n\n protected _renderAdorner(name: 'side' | 'corner' | 'bottom', part: string) {\n return html`\n <slot ${ref(this._adorners[name])} part=${part} name=\"${name}-adorner\">\n </slot>\n `;\n }\n\n protected _renderAdorners() {\n if (!this._isActive && !this.active) {\n return nothing;\n }\n\n return html`\n ${this._renderAdorner('side', 'trigger-side')}\n ${this._renderAdorner('corner', 'trigger')}\n ${this._renderAdorner('bottom', 'trigger-bottom')}\n `;\n }\n\n protected override render() {\n const parts = {\n 'resize-base': true,\n active: this._isActive || this.active,\n };\n\n return html`\n <div\n ${ref(this._container)}\n part=${partMap(parts)}\n @pointerenter=${this.active ? nothing : this._handlePointerEnter}\n @pointerleave=${this.active ? nothing : this._handlePointerLeave}\n >\n <slot></slot>\n ${this._renderAdorners()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-resize': IgcResizeContainerComponent;\n }\n}\n"]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
2
2
|
import type { ResizeControllerConfiguration } from './types.js';
|
|
3
3
|
declare class ResizeController implements ReactiveController {
|
|
4
|
-
private _host;
|
|
5
|
-
private
|
|
4
|
+
private readonly _host;
|
|
5
|
+
private readonly _abortHandle;
|
|
6
|
+
private readonly _options;
|
|
6
7
|
private _id;
|
|
7
8
|
private _hasPointerCapture;
|
|
8
9
|
private _state;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createAbortHandle } from '../common/abort-handler.js';
|
|
1
2
|
import { findElementFromEventPath } from '../common/util.js';
|
|
2
3
|
import { createDefaultGhostElement, getDefaultLayer } from './default-ghost.js';
|
|
3
4
|
const additionalEvents = [
|
|
@@ -33,6 +34,7 @@ class ResizeController {
|
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
constructor(host, options) {
|
|
37
|
+
this._abortHandle = createAbortHandle();
|
|
36
38
|
this._options = {
|
|
37
39
|
enabled: true,
|
|
38
40
|
layer: getDefaultLayer,
|
|
@@ -57,12 +59,12 @@ class ResizeController {
|
|
|
57
59
|
this._activeRef = null;
|
|
58
60
|
}
|
|
59
61
|
hostConnected() {
|
|
60
|
-
this.
|
|
61
|
-
this._host.addEventListener('
|
|
62
|
+
const { signal } = this._abortHandle;
|
|
63
|
+
this._host.addEventListener('pointerdown', this, { signal });
|
|
64
|
+
this._host.addEventListener('touchstart', this, { passive: false, signal });
|
|
62
65
|
}
|
|
63
66
|
hostDisconnected() {
|
|
64
|
-
this.
|
|
65
|
-
this._host.removeEventListener('touchstart', this);
|
|
67
|
+
this._abortHandle.abort();
|
|
66
68
|
this._setResizeCancelListener(false);
|
|
67
69
|
this._removeGhostElement();
|
|
68
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize-controller.js","sourceRoot":"","sources":["../../../src/components/resize-container/resize-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\n\nimport { findElementFromEventPath } from '../common/util.js';\nimport { createDefaultGhostElement, getDefaultLayer } from './default-ghost.js';\nimport type { ResizeControllerConfiguration, ResizeState } from './types.js';\n\nconst additionalEvents = [\n 'pointermove',\n 'lostpointercapture',\n 'contextmenu',\n] as const;\n\ntype State = {\n initial: DOMRect;\n current: DOMRect;\n};\n\nclass ResizeController implements ReactiveController {\n private _host: ReactiveControllerHost & HTMLElement;\n private _options: ResizeControllerConfiguration = {\n enabled: true,\n layer: getDefaultLayer,\n };\n\n private _id = -1;\n private _hasPointerCapture = false;\n private _state!: State;\n\n private _activeRef: HTMLElement | null = null;\n private _ghost: HTMLElement | null = null;\n\n private get _element(): HTMLElement {\n return this._activeRef ?? this._host;\n }\n\n private get _resizeTarget(): HTMLElement {\n return this._options.resizeTarget?.call(this._host) ?? this._host;\n }\n\n private get _layer(): HTMLElement {\n if (!this._isDeferred) {\n return this._host;\n }\n\n return this._options.layer?.() ?? this._host;\n }\n\n /** Whether the controller is in deferred mode. */\n private get _isDeferred(): boolean {\n return this._options.mode === 'deferred';\n }\n\n private get _stateParameters(): ResizeState {\n const { initial, current } = this._state;\n\n return {\n initial,\n current,\n deltaX: current.width - initial.width,\n deltaY: current.height - initial.height,\n ghost: this._ghost,\n trigger: this._activeRef,\n };\n }\n\n constructor(\n host: ReactiveControllerHost & HTMLElement,\n options?: ResizeControllerConfiguration\n ) {\n this._host = host;\n this._host.addController(this);\n\n this.set(options);\n }\n\n // #region Public API\n\n /** Whether the controller is enabled and will listen for events. */\n public get enabled(): boolean {\n return Boolean(this._options.enabled);\n }\n\n /** Updates the configuration of the resize controller. */\n public set(options?: ResizeControllerConfiguration): void {\n Object.assign(this._options, options);\n }\n\n /** Stops any resizing operation, cleaning up any additional elements and event listeners. */\n public dispose(): void {\n this._setResizeState(false);\n this._removeGhostElement();\n this._activeRef = null;\n }\n\n /** @internal */\n public hostConnected(): void {\n this._host.addEventListener('pointerdown', this);\n this._host.addEventListener('touchstart', this, { passive: false });\n }\n\n /** @internal */\n public hostDisconnected(): void {\n this._host.removeEventListener('pointerdown', this);\n this._host.removeEventListener('touchstart', this);\n this._setResizeCancelListener(false);\n this._removeGhostElement();\n }\n\n /** @internal */\n public handleEvent(event: PointerEvent & KeyboardEvent): void {\n if (!this.enabled) {\n return;\n }\n\n switch (event.type) {\n case 'touchstart':\n // Prevent contextmenu default behavior during resize\n case 'contextmenu':\n event.preventDefault();\n break;\n case 'keydown':\n this._handleCancel(event);\n break;\n case 'pointerdown':\n this._handlePointerDown(event);\n break;\n case 'pointermove':\n this._handlePointerMove(event);\n break;\n case 'lostpointercapture':\n this._handlePointerEnd(event);\n break;\n }\n }\n // #endregion\n\n // #region Event handlers\n\n private _handlePointerDown(event: PointerEvent): void {\n // Non-primary buttons are ignored\n if (event.button || this._shouldSkip(event)) {\n return;\n }\n\n this._setInitialState(event);\n this._createGhostElement();\n const parameters = { event, state: this._stateParameters };\n\n if (this._options.start?.call(this._host, parameters) === false) {\n this.dispose();\n return;\n }\n\n this._setResizeState();\n }\n\n private _handlePointerMove(event: PointerEvent): void {\n if (!this._hasPointerCapture) {\n return;\n }\n\n this._updateState(event);\n\n const parameters = { event, state: this._stateParameters };\n this._options.resize?.call(this._host, parameters);\n this._state.current = parameters.state.current;\n this._updatePosition(this._isDeferred ? this._ghost : this._resizeTarget);\n }\n\n private _handlePointerEnd(event: PointerEvent): void {\n const parameters = { event, state: this._stateParameters };\n\n this._options.end?.call(this._host, parameters);\n this._state.current = parameters.state.current;\n\n parameters.state.commit?.() ?? this._updatePosition(this._resizeTarget);\n this.dispose();\n }\n\n private _handleCancel(event: KeyboardEvent): void {\n const key = event.key.toLowerCase();\n\n if (this._hasPointerCapture && key === 'escape') {\n this._options.cancel?.call(this._host, this._stateParameters);\n }\n }\n\n // #endregion\n\n // #region Internal API\n\n private _shouldSkip(event: PointerEvent): boolean {\n this._setActiveRef(event);\n return !this._activeRef;\n }\n\n private _setActiveRef(event: Event): void {\n const refs = this._options.ref?.map(({ value }) => value) ?? [this._host];\n\n this._activeRef =\n findElementFromEventPath<HTMLElement>(\n (e) => refs.includes(e as HTMLElement),\n event\n ) ?? null;\n }\n\n private _setResizeState(enabled = true): void {\n this._hasPointerCapture = enabled;\n\n enabled\n ? this._element.setPointerCapture(this._id)\n : this._element.releasePointerCapture(this._id);\n\n this._setResizeCancelListener(enabled);\n\n // Toggle additional event listeners\n for (const type of additionalEvents) {\n enabled\n ? this._host.addEventListener(type, this)\n : this._host.removeEventListener(type, this);\n }\n }\n\n private _setResizeCancelListener(enabled = true): void {\n enabled\n ? globalThis.addEventListener('keydown', this)\n : globalThis.removeEventListener('keydown', this);\n }\n\n private _setInitialState({ pointerId }: PointerEvent): void {\n const dimensions = this._resizeTarget.getBoundingClientRect();\n\n this._id = pointerId;\n this._state = {\n initial: dimensions,\n current: structuredClone(dimensions),\n };\n }\n\n private _updateState({ clientX, clientY }: PointerEvent): void {\n this._state.current.width = clientX - this._state.initial.x;\n this._state.current.height = clientY - this._state.initial.y;\n }\n\n private _updatePosition(element: HTMLElement | null): void {\n if (element) {\n Object.assign(element.style, {\n width: `${this._state.current.width}px`,\n height: `${this._state.current.height}px`,\n });\n }\n }\n\n private _createGhostElement(): void {\n if (!this._isDeferred) {\n return;\n }\n\n this._ghost =\n this._options.deferredFactory?.call(this._host) ??\n createDefaultGhostElement(this._resizeTarget.getBoundingClientRect());\n\n this._ghost.setAttribute('data-resize-ghost', '');\n this._layer.append(this._ghost);\n }\n\n private _removeGhostElement(): void {\n this._ghost?.remove();\n this._ghost = null;\n }\n\n // #endregion\n}\n\nexport function addResizeController(\n host: ReactiveControllerHost & HTMLElement,\n options?: ResizeControllerConfiguration\n): ResizeController {\n return new ResizeController(host, options);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"resize-controller.js","sourceRoot":"","sources":["../../../src/components/resize-container/resize-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport { createAbortHandle } from '../common/abort-handler.js';\nimport { findElementFromEventPath } from '../common/util.js';\nimport { createDefaultGhostElement, getDefaultLayer } from './default-ghost.js';\nimport type { ResizeControllerConfiguration, ResizeState } from './types.js';\n\nconst additionalEvents = [\n 'pointermove',\n 'lostpointercapture',\n 'contextmenu',\n] as const;\n\ntype State = {\n initial: DOMRect;\n current: DOMRect;\n};\n\nclass ResizeController implements ReactiveController {\n private readonly _host: ReactiveControllerHost & HTMLElement;\n private readonly _abortHandle = createAbortHandle();\n\n private readonly _options: ResizeControllerConfiguration = {\n enabled: true,\n layer: getDefaultLayer,\n };\n\n private _id = -1;\n private _hasPointerCapture = false;\n private _state!: State;\n\n private _activeRef: HTMLElement | null = null;\n private _ghost: HTMLElement | null = null;\n\n private get _element(): HTMLElement {\n return this._activeRef ?? this._host;\n }\n\n private get _resizeTarget(): HTMLElement {\n return this._options.resizeTarget?.call(this._host) ?? this._host;\n }\n\n private get _layer(): HTMLElement {\n if (!this._isDeferred) {\n return this._host;\n }\n\n return this._options.layer?.() ?? this._host;\n }\n\n /** Whether the controller is in deferred mode. */\n private get _isDeferred(): boolean {\n return this._options.mode === 'deferred';\n }\n\n private get _stateParameters(): ResizeState {\n const { initial, current } = this._state;\n\n return {\n initial,\n current,\n deltaX: current.width - initial.width,\n deltaY: current.height - initial.height,\n ghost: this._ghost,\n trigger: this._activeRef,\n };\n }\n\n constructor(\n host: ReactiveControllerHost & HTMLElement,\n options?: ResizeControllerConfiguration\n ) {\n this._host = host;\n this._host.addController(this);\n\n this.set(options);\n }\n\n // #region Public API\n\n /** Whether the controller is enabled and will listen for events. */\n public get enabled(): boolean {\n return Boolean(this._options.enabled);\n }\n\n /** Updates the configuration of the resize controller. */\n public set(options?: ResizeControllerConfiguration): void {\n Object.assign(this._options, options);\n }\n\n /** Stops any resizing operation, cleaning up any additional elements and event listeners. */\n public dispose(): void {\n this._setResizeState(false);\n this._removeGhostElement();\n this._activeRef = null;\n }\n\n /** @internal */\n public hostConnected(): void {\n const { signal } = this._abortHandle;\n this._host.addEventListener('pointerdown', this, { signal });\n this._host.addEventListener('touchstart', this, { passive: false, signal });\n }\n\n /** @internal */\n public hostDisconnected(): void {\n this._abortHandle.abort();\n this._setResizeCancelListener(false);\n this._removeGhostElement();\n }\n\n /** @internal */\n public handleEvent(event: PointerEvent & KeyboardEvent): void {\n if (!this.enabled) {\n return;\n }\n\n switch (event.type) {\n case 'touchstart':\n // Prevent contextmenu default behavior during resize\n case 'contextmenu':\n event.preventDefault();\n break;\n case 'keydown':\n this._handleCancel(event);\n break;\n case 'pointerdown':\n this._handlePointerDown(event);\n break;\n case 'pointermove':\n this._handlePointerMove(event);\n break;\n case 'lostpointercapture':\n this._handlePointerEnd(event);\n break;\n }\n }\n // #endregion\n\n // #region Event handlers\n\n private _handlePointerDown(event: PointerEvent): void {\n // Non-primary buttons are ignored\n if (event.button || this._shouldSkip(event)) {\n return;\n }\n\n this._setInitialState(event);\n this._createGhostElement();\n const parameters = { event, state: this._stateParameters };\n\n if (this._options.start?.call(this._host, parameters) === false) {\n this.dispose();\n return;\n }\n\n this._setResizeState();\n }\n\n private _handlePointerMove(event: PointerEvent): void {\n if (!this._hasPointerCapture) {\n return;\n }\n\n this._updateState(event);\n\n const parameters = { event, state: this._stateParameters };\n this._options.resize?.call(this._host, parameters);\n this._state.current = parameters.state.current;\n this._updatePosition(this._isDeferred ? this._ghost : this._resizeTarget);\n }\n\n private _handlePointerEnd(event: PointerEvent): void {\n const parameters = { event, state: this._stateParameters };\n\n this._options.end?.call(this._host, parameters);\n this._state.current = parameters.state.current;\n\n parameters.state.commit?.() ?? this._updatePosition(this._resizeTarget);\n this.dispose();\n }\n\n private _handleCancel(event: KeyboardEvent): void {\n const key = event.key.toLowerCase();\n\n if (this._hasPointerCapture && key === 'escape') {\n this._options.cancel?.call(this._host, this._stateParameters);\n }\n }\n\n // #endregion\n\n // #region Internal API\n\n private _shouldSkip(event: PointerEvent): boolean {\n this._setActiveRef(event);\n return !this._activeRef;\n }\n\n private _setActiveRef(event: Event): void {\n const refs = this._options.ref?.map(({ value }) => value) ?? [this._host];\n\n this._activeRef =\n findElementFromEventPath<HTMLElement>(\n (e) => refs.includes(e as HTMLElement),\n event\n ) ?? null;\n }\n\n private _setResizeState(enabled = true): void {\n this._hasPointerCapture = enabled;\n\n enabled\n ? this._element.setPointerCapture(this._id)\n : this._element.releasePointerCapture(this._id);\n\n this._setResizeCancelListener(enabled);\n\n // Toggle additional event listeners\n for (const type of additionalEvents) {\n enabled\n ? this._host.addEventListener(type, this)\n : this._host.removeEventListener(type, this);\n }\n }\n\n private _setResizeCancelListener(enabled = true): void {\n enabled\n ? globalThis.addEventListener('keydown', this)\n : globalThis.removeEventListener('keydown', this);\n }\n\n private _setInitialState({ pointerId }: PointerEvent): void {\n const dimensions = this._resizeTarget.getBoundingClientRect();\n\n this._id = pointerId;\n this._state = {\n initial: dimensions,\n current: structuredClone(dimensions),\n };\n }\n\n private _updateState({ clientX, clientY }: PointerEvent): void {\n this._state.current.width = clientX - this._state.initial.x;\n this._state.current.height = clientY - this._state.initial.y;\n }\n\n private _updatePosition(element: HTMLElement | null): void {\n if (element) {\n Object.assign(element.style, {\n width: `${this._state.current.width}px`,\n height: `${this._state.current.height}px`,\n });\n }\n }\n\n private _createGhostElement(): void {\n if (!this._isDeferred) {\n return;\n }\n\n this._ghost =\n this._options.deferredFactory?.call(this._host) ??\n createDefaultGhostElement(this._resizeTarget.getBoundingClientRect());\n\n this._ghost.setAttribute('data-resize-ghost', '');\n this._layer.append(this._ghost);\n }\n\n private _removeGhostElement(): void {\n this._ghost?.remove();\n this._ghost = null;\n }\n\n // #endregion\n}\n\nexport function addResizeController(\n host: ReactiveControllerHost & HTMLElement,\n options?: ResizeControllerConfiguration\n): ResizeController {\n return new ResizeController(host, options);\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { html, LitElement } from 'lit';
|
|
2
2
|
import { registerComponent } from '../common/definitions/register.js';
|
|
3
|
+
import { addSafeEventListener } from '../common/util.js';
|
|
3
4
|
import { styles } from './ripple.material.css.js';
|
|
4
5
|
const rippleFrames = [
|
|
5
6
|
{ opacity: 0.5, transform: 'scale(.3)' },
|
|
@@ -48,7 +49,7 @@ class IgcRippleComponent extends LitElement {
|
|
|
48
49
|
.animate(rippleFrames, rippleAnimation)
|
|
49
50
|
.finished.then(() => element.remove());
|
|
50
51
|
};
|
|
51
|
-
this
|
|
52
|
+
addSafeEventListener(this, 'pointerdown', this.handler);
|
|
52
53
|
}
|
|
53
54
|
getDimensions(x, y) {
|
|
54
55
|
const rect = this.getBoundingClientRect();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../src/components/ripple/ripple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../src/components/ripple/ripple.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\n\nimport { registerComponent } from '../common/definitions/register.js';\nimport { addSafeEventListener } from '../common/util.js';\nimport { styles } from './ripple.material.css.js';\n\nconst rippleFrames: Keyframe[] = [\n { opacity: 0.5, transform: 'scale(.3)' },\n { opacity: 0, transform: 'scale(2)' },\n];\n\nconst rippleAnimation: KeyframeAnimationOptions = {\n duration: 600, // --igc-ripple-duration,\n fill: 'forwards',\n easing: 'linear', // --igc-ripple-easing\n};\n\nlet rippleElement: HTMLElement;\n\nfunction getRippleElement() {\n if (!rippleElement) {\n rippleElement = document.createElement('span');\n }\n return rippleElement.cloneNode() as HTMLElement;\n}\n\n/**\n * A ripple can be applied to an element to represent\n * interactive surface.\n *\n * @element igc-ripple\n */\nexport default class IgcRippleComponent extends LitElement {\n public static readonly tagName = 'igc-ripple';\n public static override styles = styles;\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcRippleComponent);\n }\n\n constructor() {\n super();\n addSafeEventListener(this, 'pointerdown', this.handler);\n }\n\n private handler = ({ clientX, clientY }: PointerEvent) => {\n const element = getRippleElement();\n const { radius, top, left } = this.getDimensions(clientX, clientY);\n\n const styles: Partial<CSSStyleDeclaration> = {\n position: 'absolute',\n display: 'block',\n pointerEvents: 'none',\n transformOrigin: 'center',\n transform: 'translate3d(0, 0, 0) scale(0)',\n willChange: 'opacity, transform',\n margin: '0 !important',\n border: 'none !important',\n width: `${radius}px`,\n height: `${radius}px`,\n borderRadius: '50%',\n top: `${top}px`,\n left: `${left}px`,\n background: 'var(--color, var(--ig-gray-800))',\n };\n\n Object.assign(element.style, styles);\n this.renderRoot.appendChild(element);\n\n element\n .animate(rippleFrames, rippleAnimation)\n .finished.then(() => element.remove());\n };\n\n private getDimensions(x: number, y: number) {\n const rect = this.getBoundingClientRect();\n const radius = Math.max(rect.width, rect.height);\n const halfRadius = radius / 2;\n\n return {\n radius,\n top: Math.round(y - rect.top - halfRadius),\n left: Math.round(x - rect.left - halfRadius),\n };\n }\n\n protected override render() {\n return html``;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-ripple': IgcRippleComponent;\n }\n}\n"]}
|
|
@@ -12,7 +12,7 @@ export default class IgcSelectGroupComponent extends LitElement {
|
|
|
12
12
|
static readonly tagName = "igc-select-group";
|
|
13
13
|
static styles: import("lit").CSSResult[];
|
|
14
14
|
static register(): void;
|
|
15
|
-
private _internals;
|
|
15
|
+
private readonly _internals;
|
|
16
16
|
private controlledItems;
|
|
17
17
|
/** All child `igc-select-item`s. */
|
|
18
18
|
items: Array<IgcSelectItemComponent>;
|
|
@@ -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
|
var IgcSelectGroupComponent_1;
|
|
8
|
-
import {
|
|
8
|
+
import { html, LitElement } from 'lit';
|
|
9
9
|
import { property, queryAssignedElements } from 'lit/decorators.js';
|
|
10
10
|
import { themes } from '../../theming/theming-decorator.js';
|
|
11
|
+
import { addInternalsController } from '../common/controllers/internals.js';
|
|
11
12
|
import { createMutationController, } from '../common/controllers/mutation-observer.js';
|
|
12
13
|
import { watch } from '../common/decorators/watch.js';
|
|
13
14
|
import { registerComponent } from '../common/definitions/register.js';
|
|
@@ -20,7 +21,7 @@ let IgcSelectGroupComponent = IgcSelectGroupComponent_1 = class IgcSelectGroupCo
|
|
|
20
21
|
registerComponent(IgcSelectGroupComponent_1);
|
|
21
22
|
}
|
|
22
23
|
_observerCallback({ changes: { attributes }, }) {
|
|
23
|
-
for (const item of attributes) {
|
|
24
|
+
for (const { node: item } of attributes) {
|
|
24
25
|
if (!this.disabled) {
|
|
25
26
|
this.controlledItems = this.activeItems;
|
|
26
27
|
}
|
|
@@ -31,9 +32,12 @@ let IgcSelectGroupComponent = IgcSelectGroupComponent_1 = class IgcSelectGroupCo
|
|
|
31
32
|
}
|
|
32
33
|
constructor() {
|
|
33
34
|
super();
|
|
35
|
+
this._internals = addInternalsController(this, {
|
|
36
|
+
initialARIA: {
|
|
37
|
+
role: 'group',
|
|
38
|
+
},
|
|
39
|
+
});
|
|
34
40
|
this.disabled = false;
|
|
35
|
-
this._internals = this.attachInternals();
|
|
36
|
-
this._internals.role = 'group';
|
|
37
41
|
createMutationController(this, {
|
|
38
42
|
callback: this._observerCallback,
|
|
39
43
|
filter: [IgcSelectItemComponent.tagName],
|
|
@@ -49,7 +53,7 @@ let IgcSelectGroupComponent = IgcSelectGroupComponent_1 = class IgcSelectGroupCo
|
|
|
49
53
|
this.disabledChange();
|
|
50
54
|
}
|
|
51
55
|
disabledChange() {
|
|
52
|
-
this._internals.ariaDisabled
|
|
56
|
+
this._internals.setARIA({ ariaDisabled: this.disabled.toString() });
|
|
53
57
|
for (const item of this.controlledItems) {
|
|
54
58
|
item.disabled = this.disabled;
|
|
55
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-group.js","sourceRoot":"","sources":["../../../src/components/select/select-group.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"select-group.js","sourceRoot":"","sources":["../../../src/components/select/select-group.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property, queryAssignedElements } from 'lit/decorators.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport { addInternalsController } from '../common/controllers/internals.js';\nimport {\n createMutationController,\n type MutationControllerParams,\n} from '../common/controllers/mutation-observer.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { styles } from '../dropdown/themes/dropdown-group.base.css.js';\nimport { all } from '../dropdown/themes/group.js';\nimport { styles as shared } from '../dropdown/themes/shared/group/dropdown-group.common.css.js';\nimport IgcSelectItemComponent from './select-item.js';\n\n/**\n * @element igc-select-group - A container for a group of `igc-select-item` components.\n *\n * @slot label - Contains the group's label.\n * @slot - Intended to contain the items belonging to this group.\n *\n * @csspart label - The native label element.\n */\n@themes(all)\nexport default class IgcSelectGroupComponent extends LitElement {\n public static readonly tagName = 'igc-select-group';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcSelectGroupComponent);\n }\n\n private readonly _internals = addInternalsController(this, {\n initialARIA: {\n role: 'group',\n },\n });\n\n private controlledItems!: Array<IgcSelectItemComponent>;\n\n /** All child `igc-select-item`s. */\n @queryAssignedElements({\n flatten: true,\n selector: IgcSelectItemComponent.tagName,\n })\n public items!: Array<IgcSelectItemComponent>;\n\n @queryAssignedElements({\n flatten: true,\n selector: `${IgcSelectItemComponent.tagName}:not([disabled])`,\n })\n protected activeItems!: Array<IgcSelectItemComponent>;\n\n private _observerCallback({\n changes: { attributes },\n }: MutationControllerParams<IgcSelectItemComponent>) {\n for (const { node: item } of attributes) {\n if (!this.disabled) {\n this.controlledItems = this.activeItems;\n }\n\n if (this.disabled && !item.disabled) {\n item.disabled = true;\n }\n }\n }\n\n /**\n * Whether the group item and all its children are disabled.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public disabled = false;\n\n constructor() {\n super();\n\n createMutationController(this, {\n callback: this._observerCallback,\n filter: [IgcSelectItemComponent.tagName],\n config: {\n attributeFilter: ['disabled'],\n subtree: true,\n },\n });\n }\n\n protected override async firstUpdated() {\n await this.updateComplete;\n this.controlledItems = this.activeItems;\n\n this.disabledChange();\n }\n\n @watch('disabled', { waitUntilFirstUpdate: true })\n protected disabledChange() {\n this._internals.setARIA({ ariaDisabled: this.disabled.toString() });\n\n for (const item of this.controlledItems) {\n item.disabled = this.disabled;\n }\n }\n\n protected override render() {\n return html`\n <label part=\"label\">\n <slot name=\"label\"></slot>\n </label>\n <slot></slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-select-group': IgcSelectGroupComponent;\n }\n}\n"]}
|
|
@@ -5,7 +5,7 @@ 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
|
var IgcSelectHeaderComponent_1;
|
|
8
|
-
import {
|
|
8
|
+
import { html, LitElement } from 'lit';
|
|
9
9
|
import { themes } from '../../theming/theming-decorator.js';
|
|
10
10
|
import { registerComponent } from '../common/definitions/register.js';
|
|
11
11
|
import { styles } from '../dropdown/themes/dropdown-header.base.css.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-header.js","sourceRoot":"","sources":["../../../src/components/select/select-header.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"select-header.js","sourceRoot":"","sources":["../../../src/components/select/select-header.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,gDAAgD,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AACnD,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,gEAAgE,CAAC;AAUnF,IAAM,wBAAwB,gCAA9B,MAAM,wBAAyB,SAAQ,UAAU;IAKvD,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,0BAAwB,CAAC,CAAC;IAC9C,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC;;AAVsB,gCAAO,GAAG,mBAAmB,AAAtB,CAAuB;AAC9B,+BAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;AAF9B,wBAAwB;IAD5C,MAAM,CAAC,GAAG,CAAC;GACS,wBAAwB,CAY5C;eAZoB,wBAAwB","sourcesContent":["import { html, LitElement } from 'lit';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { styles } from '../dropdown/themes/dropdown-header.base.css.js';\nimport { all } from '../dropdown/themes/header.js';\nimport { styles as shared } from '../dropdown/themes/shared/header/dropdown-header.common.css.js';\n\n/**\n * Represents a header item in an igc-select component.\n *\n * @element igc-select-header\n *\n * @slot - Renders the header.\n */\n@themes(all)\nexport default class IgcSelectHeaderComponent extends LitElement {\n public static readonly tagName = 'igc-select-header';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcSelectHeaderComponent);\n }\n\n protected override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-select-header': IgcSelectHeaderComponent;\n }\n}\n"]}
|
|
@@ -52,6 +52,7 @@ export default class IgcSelectComponent extends IgcSelectComponent_base {
|
|
|
52
52
|
static readonly tagName = "igc-select";
|
|
53
53
|
static styles: import("lit").CSSResult[];
|
|
54
54
|
static register(): void;
|
|
55
|
+
protected readonly _rootClickController: import("../common/controllers/root-click.js").RootClickController;
|
|
55
56
|
protected readonly _formValue: FormValueOf<string | undefined>;
|
|
56
57
|
private _searchTerm;
|
|
57
58
|
private _lastKeyTime;
|
|
@@ -10,16 +10,17 @@ import { property, query, queryAssignedElements, state, } from 'lit/decorators.j
|
|
|
10
10
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
11
11
|
import { themes } from '../../theming/theming-decorator.js';
|
|
12
12
|
import { addKeybindings, altKey, arrowDown, arrowLeft, arrowRight, arrowUp, endKey, enterKey, escapeKey, homeKey, spaceBar, tabKey, } from '../common/controllers/key-bindings.js';
|
|
13
|
+
import { addRootClickController } from '../common/controllers/root-click.js';
|
|
13
14
|
import { addRootScrollHandler } from '../common/controllers/root-scroll.js';
|
|
14
15
|
import { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';
|
|
15
16
|
import { watch } from '../common/decorators/watch.js';
|
|
16
17
|
import { registerComponent } from '../common/definitions/register.js';
|
|
17
|
-
import {
|
|
18
|
+
import { getActiveItems, getItems, getNextActiveItem, getPreviousActiveItem, IgcBaseComboBoxLikeComponent, setInitialSelectionState, } from '../common/mixins/combo-box.js';
|
|
18
19
|
import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
|
|
19
20
|
import { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';
|
|
20
21
|
import { createFormValueState, } from '../common/mixins/forms/form-value.js';
|
|
21
22
|
import { partMap } from '../common/part-map.js';
|
|
22
|
-
import { findElementFromEventPath, isEmpty, isString } from '../common/util.js';
|
|
23
|
+
import { addSafeEventListener, findElementFromEventPath, isEmpty, isString, } from '../common/util.js';
|
|
23
24
|
import IgcIconComponent from '../icon/icon.js';
|
|
24
25
|
import IgcInputComponent from '../input/input.js';
|
|
25
26
|
import IgcPopoverComponent from '../popover/popover.js';
|
|
@@ -67,6 +68,9 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
|
|
|
67
68
|
}
|
|
68
69
|
constructor() {
|
|
69
70
|
super();
|
|
71
|
+
this._rootClickController = addRootClickController(this, {
|
|
72
|
+
onHide: this.handleClosing,
|
|
73
|
+
});
|
|
70
74
|
this._formValue = createFormValueState(this, {
|
|
71
75
|
initialValue: undefined,
|
|
72
76
|
transformers: {
|
|
@@ -84,7 +88,6 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
|
|
|
84
88
|
this.distance = 0;
|
|
85
89
|
this.placement = 'bottom-start';
|
|
86
90
|
this.scrollStrategy = 'scroll';
|
|
87
|
-
this._rootClickController.update({ hideCallback: this.handleClosing });
|
|
88
91
|
addKeybindings(this, {
|
|
89
92
|
skip: () => this.disabled,
|
|
90
93
|
bindingDefaults: { preventDefault: true, triggers: ['keydownRepeat'] },
|
|
@@ -101,9 +104,9 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
|
|
|
101
104
|
.set(endKey, this.onEndKey)
|
|
102
105
|
.set(spaceBar, this.onSpaceBarKey)
|
|
103
106
|
.set(enterKey, this.onEnterKey);
|
|
104
|
-
this
|
|
105
|
-
this
|
|
106
|
-
this
|
|
107
|
+
addSafeEventListener(this, 'keydown', this.handleSearch);
|
|
108
|
+
addSafeEventListener(this, 'focusin', this.handleFocusIn);
|
|
109
|
+
addSafeEventListener(this, 'focusout', this.handleFocusOut);
|
|
107
110
|
}
|
|
108
111
|
createRenderRoot() {
|
|
109
112
|
const root = super.createRenderRoot();
|