@taiga-ui/cdk 2.46.0 → 2.49.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/abstract/controller.d.ts +6 -0
- package/abstract/taiga-ui-cdk-abstract.metadata.json +1 -1
- package/bundles/taiga-ui-cdk-abstract.umd.js +62 -20
- package/bundles/taiga-ui-cdk-abstract.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-abstract.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-abstract.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-components-alert-host.umd.js +50 -20
- package/bundles/taiga-ui-cdk-components-alert-host.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-components-alert-host.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-components-alert-host.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-components-dialog-host.umd.js +50 -20
- package/bundles/taiga-ui-cdk-components-dialog-host.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-components-dialog-host.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-components-dialog-host.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-components-dropdown-host.umd.js +50 -20
- package/bundles/taiga-ui-cdk-components-dropdown-host.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-components-dropdown-host.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-components-dropdown-host.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-components-portal-host.umd.js +50 -20
- package/bundles/taiga-ui-cdk-components-portal-host.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-components-portal-host.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-components-portal-host.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-constants.umd.js +28 -1
- package/bundles/taiga-ui-cdk-constants.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-constants.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-constants.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-date-time.umd.js +50 -20
- package/bundles/taiga-ui-cdk-date-time.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-date-time.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-date-time.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-decorators.umd.js +50 -20
- package/bundles/taiga-ui-cdk-decorators.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-decorators.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-decorators.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-active-zone.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-active-zone.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-active-zone.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-active-zone.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js +146 -55
- package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-auto-focus.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-auto-focus.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-autofilled.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-autofilled.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-autofilled.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-autofilled.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-checked.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-checked.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-checked.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-checked.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-copy-processor.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-copy-processor.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-copy-processor.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-copy-processor.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-drag.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-drag.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-drag.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-drag.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-droppable.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-droppable.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-droppable.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-droppable.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-element.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-element.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-element.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-element.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-focus-trap.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-focus-trap.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-focus-trap.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-focus-trap.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-focus-visible.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-focus-visible.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-focus-visible.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-focus-visible.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-focusable.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-focusable.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-focusable.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-focusable.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-focused.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-focused.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-focused.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-focused.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-for-async.umd.js +325 -0
- package/bundles/taiga-ui-cdk-directives-for-async.umd.js.map +1 -0
- package/bundles/taiga-ui-cdk-directives-for-async.umd.min.js +2 -0
- package/bundles/taiga-ui-cdk-directives-for-async.umd.min.js.map +1 -0
- package/bundles/taiga-ui-cdk-directives-for.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-for.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-for.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-for.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-high-dpi.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-high-dpi.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-high-dpi.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-high-dpi.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-hovered.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-hovered.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-hovered.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-hovered.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-input-mode.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-input-mode.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-input-mode.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-input-mode.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-item.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-item.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-item.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-item.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-let.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-let.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-let.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-let.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-media.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-media.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-media.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-media.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-obscured.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-obscured.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-obscured.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-obscured.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-overscroll.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-overscroll.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-overscroll.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-overscroll.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-pan.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-pan.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-pan.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-pan.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-portal.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-portal.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-portal.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-portal.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-pressed.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-pressed.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-pressed.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-pressed.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-prevent-default.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-prevent-default.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-prevent-default.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-prevent-default.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-repeat-times.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-repeat-times.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-repeat-times.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-repeat-times.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-resize.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-resize.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-resize.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-resize.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-swipe.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-swipe.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-swipe.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-swipe.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-validator.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-validator.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-validator.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-validator.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-zoom.umd.js +50 -20
- package/bundles/taiga-ui-cdk-directives-zoom.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-zoom.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-directives-zoom.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives.umd.js +12 -4
- package/bundles/taiga-ui-cdk-directives.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-enums.umd.js +12 -0
- package/bundles/taiga-ui-cdk-enums.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-enums.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-enums.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-exceptions.umd.js +50 -20
- package/bundles/taiga-ui-cdk-exceptions.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-exceptions.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-exceptions.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-pipes-filter.umd.js +50 -20
- package/bundles/taiga-ui-cdk-pipes-filter.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-pipes-filter.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-pipes-filter.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-pipes-mapper.umd.js +50 -20
- package/bundles/taiga-ui-cdk-pipes-mapper.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-pipes-mapper.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-pipes-mapper.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-services.umd.js +50 -20
- package/bundles/taiga-ui-cdk-services.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-services.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-services.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-tokens.umd.js +68 -20
- package/bundles/taiga-ui-cdk-tokens.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-tokens.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-tokens.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-utils-browser.umd.js +2 -2
- package/bundles/taiga-ui-cdk-utils-browser.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-utils-browser.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-utils-browser.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-utils-focus.umd.js +1 -1
- package/bundles/taiga-ui-cdk-utils-focus.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-utils-focus.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-utils-focus.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-utils-os.umd.js +17 -3
- package/bundles/taiga-ui-cdk-utils-os.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-utils-os.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-utils-os.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-utils-svg.umd.js +50 -20
- package/bundles/taiga-ui-cdk-utils-svg.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-utils-svg.umd.min.js +1 -15
- package/bundles/taiga-ui-cdk-utils-svg.umd.min.js.map +1 -1
- package/constants/taiga-ui-cdk-constants.metadata.json +1 -1
- package/constants/unicode-chars.d.ts +25 -1
- package/directives/auto-focus/autofocus.options.d.ts +1 -1
- package/directives/auto-focus/handlers/ios.handler.d.ts +26 -1
- package/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.metadata.json +1 -1
- package/directives/for-async/for-async.directive.d.ts +13 -0
- package/directives/for-async/for-async.module.d.ts +5 -0
- package/directives/for-async/index.d.ts +2 -0
- package/directives/for-async/package.json +13 -0
- package/directives/for-async/taiga-ui-cdk-directives-for-async.d.ts +4 -0
- package/directives/for-async/taiga-ui-cdk-directives-for-async.metadata.json +1 -0
- package/directives/index.d.ts +1 -0
- package/directives/taiga-ui-cdk-directives.metadata.json +1 -1
- package/enums/autocomplete.d.ts +10 -0
- package/enums/taiga-ui-cdk-enums.metadata.json +1 -1
- package/esm2015/abstract/controller.js +7 -1
- package/esm2015/constants/unicode-chars.js +26 -2
- package/esm2015/directives/auto-focus/autofocus.options.js +7 -6
- package/esm2015/directives/auto-focus/handlers/ios.handler.js +80 -29
- package/esm2015/directives/for-async/for-async.directive.js +48 -0
- package/esm2015/directives/for-async/for-async.module.js +16 -0
- package/esm2015/directives/for-async/index.js +3 -0
- package/esm2015/directives/for-async/taiga-ui-cdk-directives-for-async.js +5 -0
- package/esm2015/directives/index.js +2 -1
- package/esm2015/enums/autocomplete.js +12 -1
- package/esm2015/tokens/index.js +4 -1
- package/esm2015/tokens/is-chromium.js +6 -0
- package/esm2015/tokens/is-firefox.js +9 -0
- package/esm2015/tokens/is-webkit.js +6 -0
- package/esm2015/utils/browser/is-edge-older-than.js +2 -2
- package/esm2015/utils/browser/is-safari.js +2 -2
- package/esm2015/utils/focus/get-native-focused.js +2 -2
- package/esm2015/utils/os/index.js +2 -1
- package/esm2015/utils/os/is-apple-platform.js +14 -0
- package/esm2015/utils/os/is-ios.js +4 -4
- package/esm5/abstract/controller.js +14 -1
- package/esm5/constants/unicode-chars.js +26 -2
- package/esm5/directives/auto-focus/autofocus.options.js +7 -6
- package/esm5/directives/auto-focus/handlers/ios.handler.js +92 -30
- package/esm5/directives/for-async/for-async.directive.js +53 -0
- package/esm5/directives/for-async/for-async.module.js +19 -0
- package/esm5/directives/for-async/index.js +3 -0
- package/esm5/directives/for-async/taiga-ui-cdk-directives-for-async.js +5 -0
- package/esm5/directives/index.js +2 -1
- package/esm5/enums/autocomplete.js +12 -1
- package/esm5/tokens/index.js +4 -1
- package/esm5/tokens/is-chromium.js +6 -0
- package/esm5/tokens/is-firefox.js +9 -0
- package/esm5/tokens/is-webkit.js +6 -0
- package/esm5/utils/browser/is-edge-older-than.js +2 -2
- package/esm5/utils/browser/is-safari.js +2 -2
- package/esm5/utils/focus/get-native-focused.js +2 -2
- package/esm5/utils/os/index.js +2 -1
- package/esm5/utils/os/is-apple-platform.js +14 -0
- package/esm5/utils/os/is-ios.js +4 -4
- package/fesm2015/taiga-ui-cdk-abstract.js +7 -1
- package/fesm2015/taiga-ui-cdk-abstract.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-constants.js +26 -2
- package/fesm2015/taiga-ui-cdk-constants.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-directives-auto-focus.js +84 -33
- package/fesm2015/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-directives-for-async.js +66 -0
- package/fesm2015/taiga-ui-cdk-directives-for-async.js.map +1 -0
- package/fesm2015/taiga-ui-cdk-directives.js +1 -0
- package/fesm2015/taiga-ui-cdk-directives.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-enums.js +11 -0
- package/fesm2015/taiga-ui-cdk-enums.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-tokens.js +16 -1
- package/fesm2015/taiga-ui-cdk-tokens.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-utils-browser.js +2 -2
- package/fesm2015/taiga-ui-cdk-utils-browser.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-utils-focus.js +1 -1
- package/fesm2015/taiga-ui-cdk-utils-focus.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-utils-os.js +17 -4
- package/fesm2015/taiga-ui-cdk-utils-os.js.map +1 -1
- package/fesm5/taiga-ui-cdk-abstract.js +12 -1
- package/fesm5/taiga-ui-cdk-abstract.js.map +1 -1
- package/fesm5/taiga-ui-cdk-constants.js +26 -2
- package/fesm5/taiga-ui-cdk-constants.js.map +1 -1
- package/fesm5/taiga-ui-cdk-directives-auto-focus.js +96 -34
- package/fesm5/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
- package/fesm5/taiga-ui-cdk-directives-for-async.js +74 -0
- package/fesm5/taiga-ui-cdk-directives-for-async.js.map +1 -0
- package/fesm5/taiga-ui-cdk-directives.js +1 -0
- package/fesm5/taiga-ui-cdk-directives.js.map +1 -1
- package/fesm5/taiga-ui-cdk-enums.js +11 -0
- package/fesm5/taiga-ui-cdk-enums.js.map +1 -1
- package/fesm5/taiga-ui-cdk-tokens.js +16 -1
- package/fesm5/taiga-ui-cdk-tokens.js.map +1 -1
- package/fesm5/taiga-ui-cdk-utils-browser.js +2 -2
- package/fesm5/taiga-ui-cdk-utils-browser.js.map +1 -1
- package/fesm5/taiga-ui-cdk-utils-focus.js +1 -1
- package/fesm5/taiga-ui-cdk-utils-focus.js.map +1 -1
- package/fesm5/taiga-ui-cdk-utils-os.js +17 -4
- package/fesm5/taiga-ui-cdk-utils-os.js.map +1 -1
- package/package.json +4 -1
- package/schematics/ng-update/constants/consts.d.ts +7 -7
- package/schematics/ng-update/constants/consts.js +38 -0
- package/schematics/ng-update/constants/enums.d.ts +3 -3
- package/schematics/ng-update/constants/enums.js +22 -0
- package/schematics/ng-update/constants/services.d.ts +8 -0
- package/schematics/ng-update/constants/services.js +43 -0
- package/schematics/ng-update/constants/templates.d.ts +17 -0
- package/schematics/ng-update/constants/templates.js +44 -0
- package/schematics/ng-update/constants/types.d.ts +4 -3
- package/schematics/ng-update/constants/types.js +60 -0
- package/schematics/ng-update/constants/warnings.d.ts +6 -0
- package/schematics/ng-update/constants/warnings.js +45 -0
- package/schematics/ng-update/index.js +8 -0
- package/schematics/ng-update/interfaces/template-resourse.d.ts +8 -0
- package/schematics/ng-update/interfaces/template-resourse.js +2 -0
- package/schematics/ng-update/steps/migrate-sliders/index.d.ts +2 -0
- package/schematics/ng-update/steps/migrate-sliders/index.js +7 -0
- package/schematics/ng-update/steps/migrate-sliders/migrate-input-slider.d.ts +2 -0
- package/schematics/ng-update/steps/migrate-sliders/migrate-input-slider.js +24 -0
- package/schematics/ng-update/steps/migrate-templates.d.ts +2 -0
- package/schematics/ng-update/steps/migrate-templates.js +57 -0
- package/schematics/ng-update/steps/rename-types.js +27 -11
- package/schematics/ng-update/steps/replace-const.js +2 -2
- package/schematics/ng-update/steps/replace-enums.js +2 -2
- package/schematics/ng-update/steps/replace-services.d.ts +1 -0
- package/schematics/ng-update/steps/replace-services.js +51 -0
- package/schematics/ng-update/steps/show-warnings.d.ts +2 -0
- package/schematics/ng-update/steps/show-warnings.js +35 -0
- package/schematics/utils/angular/ng-component.d.ts +3 -0
- package/schematics/utils/angular/ng-component.js +7 -0
- package/schematics/utils/angular/ng-module.d.ts +7 -0
- package/schematics/utils/angular/ng-module.js +21 -0
- package/schematics/utils/{remove-import.d.ts → import-manipulations.d.ts} +1 -0
- package/schematics/utils/import-manipulations.js +19 -0
- package/schematics/utils/templates/elements.d.ts +2 -0
- package/schematics/utils/templates/elements.js +21 -0
- package/schematics/utils/templates/get-component-templates.d.ts +4 -0
- package/schematics/utils/templates/get-component-templates.js +36 -0
- package/schematics/utils/templates/ng-component-input-manipulations.d.ts +45 -0
- package/schematics/utils/templates/ng-component-input-manipulations.js +78 -0
- package/schematics/utils/templates/template-resource.d.ts +5 -0
- package/schematics/utils/templates/template-resource.js +21 -0
- package/tokens/index.d.ts +3 -0
- package/tokens/is-chromium.d.ts +2 -0
- package/tokens/is-firefox.d.ts +2 -0
- package/tokens/is-webkit.d.ts +2 -0
- package/tokens/taiga-ui-cdk-tokens.metadata.json +1 -1
- package/utils/os/index.d.ts +1 -0
- package/utils/os/is-apple-platform.d.ts +11 -0
- package/utils/os/taiga-ui-cdk-utils-os.metadata.json +1 -1
- package/schematics/utils/remove-import.js +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-utils-focus.js","sources":["ng://@taiga-ui/cdk/utils/focus/get-native-focused.ts","ng://@taiga-ui/cdk/utils/focus/set-native-focused.ts","ng://@taiga-ui/cdk/utils/focus/blur-native-focused.ts","ng://@taiga-ui/cdk/utils/focus/is-native-keyboard-focusable.ts","ng://@taiga-ui/cdk/utils/focus/is-native-mouse-focusable.ts","ng://@taiga-ui/cdk/utils/focus/get-closest-keyboard-focusable.ts","ng://@taiga-ui/cdk/utils/focus/is-native-focused.ts","ng://@taiga-ui/cdk/utils/focus/is-native-focused-in.ts","ng://@taiga-ui/cdk/utils/focus/move-focus.ts","ng://@taiga-ui/cdk/utils/focus/set-native-mouse-focused.ts","ng://@taiga-ui/cdk/utils/focus/taiga-ui-cdk-utils-focus.ts"],"sourcesContent":["/**\n * Returns current active element, including shadow dom\n *\n * @return element or null\n */\nexport function getNativeFocused(documentRef: Document): Element | null {\n if (!documentRef.activeElement || !documentRef.activeElement.shadowRoot) {\n return documentRef.activeElement;\n }\n\n let element = documentRef.activeElement.shadowRoot.activeElement;\n\n while (element && element.shadowRoot) {\n element = element.shadowRoot.activeElement;\n }\n\n return element;\n}\n","/**\n * @deprecated: use native element.focus()\n * TODO: remove in v3.0\n * Focuses or blurs and element\n *\n * @param element native element\n * @param focused boolean focused state\n * @param preventScroll optional flag to prevent native scroll to the element\n */\nexport function setNativeFocused(\n element: HTMLOrSVGElement,\n focused: boolean = true,\n preventScroll: boolean = false,\n): void {\n if (focused) {\n element.focus({preventScroll});\n } else {\n element.blur();\n }\n}\n","import {getNativeFocused} from './get-native-focused';\nimport {setNativeFocused} from './set-native-focused';\n\n/**\n * Finds and blurs current active element, including shadow DOM\n */\nexport function blurNativeFocused(documentRef: Document): void {\n const activeElement = getNativeFocused(documentRef);\n\n // TODO: iframe warning\n if (activeElement instanceof HTMLElement) {\n setNativeFocused(activeElement, false);\n }\n}\n","/**\n * Checks for signs that element can be focused with keyboard. tabIndex above 0 is ignored to\n * only target natural focus order. Not checking the possibility of an element to\n * be focused, for example element can have display: none applied to it or any other\n * circumstances could prevent actual focus.\n */\nexport function isNativeKeyboardFocusable(element: Element): boolean {\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n return false;\n }\n\n // TODO: iframe warning\n if (\n (element instanceof HTMLElement && element.isContentEditable) ||\n element.getAttribute('tabIndex') === '0'\n ) {\n return true;\n }\n\n switch (element.tagName) {\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n case 'VIDEO':\n case 'AUDIO':\n return element.hasAttribute('controls');\n case 'INPUT':\n return element.getAttribute('type') !== 'hidden';\n case 'A':\n case 'LINK':\n return element.hasAttribute('href');\n default:\n return false;\n }\n}\n","import {isNativeKeyboardFocusable} from './is-native-keyboard-focusable';\n\nexport function isNativeMouseFocusable(element: Element): boolean {\n return (\n !element.hasAttribute('disabled') &&\n (element.getAttribute('tabIndex') === '-1' || isNativeKeyboardFocusable(element))\n );\n}\n","import {svgNodeFilter} from '@taiga-ui/cdk/constants';\n\nimport {isNativeKeyboardFocusable} from './is-native-keyboard-focusable';\nimport {isNativeMouseFocusable} from './is-native-mouse-focusable';\n\n/**\n * Finds the closest element that can be focused with a keyboard or mouse in theory\n *\n * @param initial current HTML element\n * @param prev should it look backwards instead (find item that will be focused with Shift + Tab)\n * @param root top Node limiting the search area\n * @param keyboard determine if only keyboard focus is of interest\n *\n */\nexport function getClosestFocusable(\n initial: HTMLElement,\n prev: boolean = false,\n root: Node,\n keyboard: boolean = true,\n): HTMLElement | null {\n if (!root.ownerDocument) {\n return null;\n }\n\n const check = keyboard ? isNativeKeyboardFocusable : isNativeMouseFocusable;\n\n // Deprecated but ony this overload works in IE\n // Filter must be a function in IE, other modern browsers are compliant to this format\n const treeWalker = root.ownerDocument.createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n svgNodeFilter,\n false,\n );\n\n treeWalker.currentNode = initial;\n\n while (prev ? treeWalker.previousNode() : treeWalker.nextNode()) {\n // TODO: iframe warning\n if (treeWalker.currentNode instanceof HTMLElement) {\n initial = treeWalker.currentNode;\n }\n\n if (check(initial)) {\n return initial;\n }\n }\n\n return null;\n}\n\n/** @deprecated use getClosestFocusable */\nexport const getClosestKeyboardFocusable = getClosestFocusable;\n","import {getNativeFocused} from './get-native-focused';\n\n/**\n * Checks if element is focused.\n *\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\n *\n * @param node or null (as a common return value of DOM nodes walking)\n * @return true if focused\n */\nexport function isNativeFocused(node: Node | null): boolean {\n return (\n !!node && !!node.ownerDocument && getNativeFocused(node.ownerDocument) === node\n );\n}\n","import {getNativeFocused} from './get-native-focused';\n\n/**\n * Checks if focused element is within given element.\n *\n * @param node\n * @return true if focused node is contained within element\n */\nexport function isNativeFocusedIn(node: Node): boolean {\n // !node.contains - check for IE11\n if (!node.ownerDocument || !node.contains) {\n return false;\n }\n\n const nativeFocused = getNativeFocused(node.ownerDocument);\n\n return nativeFocused !== null && node.contains(nativeFocused);\n}\n","import {isNativeFocused} from './is-native-focused';\nimport {setNativeFocused} from './set-native-focused';\n\n/**\n * Utility method for moving focus in a list of elements\n *\n * @param currentIndex currently focused index\n * @param elements array of focusable elements\n * @param step a step to move focus by, typically -1 or 1\n */\nexport function moveFocus(\n currentIndex: number,\n elements: readonly HTMLElement[],\n step: number,\n): void {\n currentIndex += step;\n\n while (currentIndex >= 0 && currentIndex < elements.length) {\n setNativeFocused(elements[currentIndex]);\n\n if (isNativeFocused(elements[currentIndex])) {\n return;\n }\n\n currentIndex += step;\n }\n}\n","import {setNativeFocused} from './set-native-focused';\n\n/**\n * Focuses or blurs element with mouse action imitation (to spoof {@link TuiFocusVisibleService})\n *\n * @param element\n * @param focused desired focused state\n * @param preventScroll optionally prevent native browser scroll after focus\n */\nexport function setNativeMouseFocused(\n element: HTMLOrSVGElement & Element,\n focused: boolean = true,\n preventScroll: boolean = false,\n): void {\n if (!element.ownerDocument) {\n return;\n }\n\n if (typeof Event === 'function') {\n element.dispatchEvent(new Event('mousedown', {bubbles: true, cancelable: true}));\n } else {\n const event = element.ownerDocument.createEvent('Event');\n\n event.initEvent('mousedown', true, true);\n element.dispatchEvent(event);\n }\n\n setNativeFocused(element, focused, preventScroll);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-utils-focus.js","sources":["ng://@taiga-ui/cdk/utils/focus/get-native-focused.ts","ng://@taiga-ui/cdk/utils/focus/set-native-focused.ts","ng://@taiga-ui/cdk/utils/focus/blur-native-focused.ts","ng://@taiga-ui/cdk/utils/focus/is-native-keyboard-focusable.ts","ng://@taiga-ui/cdk/utils/focus/is-native-mouse-focusable.ts","ng://@taiga-ui/cdk/utils/focus/get-closest-keyboard-focusable.ts","ng://@taiga-ui/cdk/utils/focus/is-native-focused.ts","ng://@taiga-ui/cdk/utils/focus/is-native-focused-in.ts","ng://@taiga-ui/cdk/utils/focus/move-focus.ts","ng://@taiga-ui/cdk/utils/focus/set-native-mouse-focused.ts","ng://@taiga-ui/cdk/utils/focus/taiga-ui-cdk-utils-focus.ts"],"sourcesContent":["/**\n * Returns current active element, including shadow dom\n *\n * @return element or null\n */\nexport function getNativeFocused(documentRef: Document): Element | null {\n if (!documentRef.activeElement || !documentRef.activeElement.shadowRoot) {\n return documentRef.activeElement;\n }\n\n let element = documentRef.activeElement.shadowRoot.activeElement;\n\n while (element?.shadowRoot) {\n element = element.shadowRoot.activeElement;\n }\n\n return element;\n}\n","/**\n * @deprecated: use native element.focus()\n * TODO: remove in v3.0\n * Focuses or blurs and element\n *\n * @param element native element\n * @param focused boolean focused state\n * @param preventScroll optional flag to prevent native scroll to the element\n */\nexport function setNativeFocused(\n element: HTMLOrSVGElement,\n focused: boolean = true,\n preventScroll: boolean = false,\n): void {\n if (focused) {\n element.focus({preventScroll});\n } else {\n element.blur();\n }\n}\n","import {getNativeFocused} from './get-native-focused';\nimport {setNativeFocused} from './set-native-focused';\n\n/**\n * Finds and blurs current active element, including shadow DOM\n */\nexport function blurNativeFocused(documentRef: Document): void {\n const activeElement = getNativeFocused(documentRef);\n\n // TODO: iframe warning\n if (activeElement instanceof HTMLElement) {\n setNativeFocused(activeElement, false);\n }\n}\n","/**\n * Checks for signs that element can be focused with keyboard. tabIndex above 0 is ignored to\n * only target natural focus order. Not checking the possibility of an element to\n * be focused, for example element can have display: none applied to it or any other\n * circumstances could prevent actual focus.\n */\nexport function isNativeKeyboardFocusable(element: Element): boolean {\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n return false;\n }\n\n // TODO: iframe warning\n if (\n (element instanceof HTMLElement && element.isContentEditable) ||\n element.getAttribute('tabIndex') === '0'\n ) {\n return true;\n }\n\n switch (element.tagName) {\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n case 'VIDEO':\n case 'AUDIO':\n return element.hasAttribute('controls');\n case 'INPUT':\n return element.getAttribute('type') !== 'hidden';\n case 'A':\n case 'LINK':\n return element.hasAttribute('href');\n default:\n return false;\n }\n}\n","import {isNativeKeyboardFocusable} from './is-native-keyboard-focusable';\n\nexport function isNativeMouseFocusable(element: Element): boolean {\n return (\n !element.hasAttribute('disabled') &&\n (element.getAttribute('tabIndex') === '-1' || isNativeKeyboardFocusable(element))\n );\n}\n","import {svgNodeFilter} from '@taiga-ui/cdk/constants';\n\nimport {isNativeKeyboardFocusable} from './is-native-keyboard-focusable';\nimport {isNativeMouseFocusable} from './is-native-mouse-focusable';\n\n/**\n * Finds the closest element that can be focused with a keyboard or mouse in theory\n *\n * @param initial current HTML element\n * @param prev should it look backwards instead (find item that will be focused with Shift + Tab)\n * @param root top Node limiting the search area\n * @param keyboard determine if only keyboard focus is of interest\n *\n */\nexport function getClosestFocusable(\n initial: HTMLElement,\n prev: boolean = false,\n root: Node,\n keyboard: boolean = true,\n): HTMLElement | null {\n if (!root.ownerDocument) {\n return null;\n }\n\n const check = keyboard ? isNativeKeyboardFocusable : isNativeMouseFocusable;\n\n // Deprecated but ony this overload works in IE\n // Filter must be a function in IE, other modern browsers are compliant to this format\n const treeWalker = root.ownerDocument.createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n svgNodeFilter,\n false,\n );\n\n treeWalker.currentNode = initial;\n\n while (prev ? treeWalker.previousNode() : treeWalker.nextNode()) {\n // TODO: iframe warning\n if (treeWalker.currentNode instanceof HTMLElement) {\n initial = treeWalker.currentNode;\n }\n\n if (check(initial)) {\n return initial;\n }\n }\n\n return null;\n}\n\n/** @deprecated use getClosestFocusable */\nexport const getClosestKeyboardFocusable = getClosestFocusable;\n","import {getNativeFocused} from './get-native-focused';\n\n/**\n * Checks if element is focused.\n *\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\n *\n * @param node or null (as a common return value of DOM nodes walking)\n * @return true if focused\n */\nexport function isNativeFocused(node: Node | null): boolean {\n return (\n !!node && !!node.ownerDocument && getNativeFocused(node.ownerDocument) === node\n );\n}\n","import {getNativeFocused} from './get-native-focused';\n\n/**\n * Checks if focused element is within given element.\n *\n * @param node\n * @return true if focused node is contained within element\n */\nexport function isNativeFocusedIn(node: Node): boolean {\n // !node.contains - check for IE11\n if (!node.ownerDocument || !node.contains) {\n return false;\n }\n\n const nativeFocused = getNativeFocused(node.ownerDocument);\n\n return nativeFocused !== null && node.contains(nativeFocused);\n}\n","import {isNativeFocused} from './is-native-focused';\nimport {setNativeFocused} from './set-native-focused';\n\n/**\n * Utility method for moving focus in a list of elements\n *\n * @param currentIndex currently focused index\n * @param elements array of focusable elements\n * @param step a step to move focus by, typically -1 or 1\n */\nexport function moveFocus(\n currentIndex: number,\n elements: readonly HTMLElement[],\n step: number,\n): void {\n currentIndex += step;\n\n while (currentIndex >= 0 && currentIndex < elements.length) {\n setNativeFocused(elements[currentIndex]);\n\n if (isNativeFocused(elements[currentIndex])) {\n return;\n }\n\n currentIndex += step;\n }\n}\n","import {setNativeFocused} from './set-native-focused';\n\n/**\n * Focuses or blurs element with mouse action imitation (to spoof {@link TuiFocusVisibleService})\n *\n * @param element\n * @param focused desired focused state\n * @param preventScroll optionally prevent native browser scroll after focus\n */\nexport function setNativeMouseFocused(\n element: HTMLOrSVGElement & Element,\n focused: boolean = true,\n preventScroll: boolean = false,\n): void {\n if (!element.ownerDocument) {\n return;\n }\n\n if (typeof Event === 'function') {\n element.dispatchEvent(new Event('mousedown', {bubbles: true, cancelable: true}));\n } else {\n const event = element.ownerDocument.createEvent('Event');\n\n event.initEvent('mousedown', true, true);\n element.dispatchEvent(event);\n }\n\n setNativeFocused(element, focused, preventScroll);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @note:
|
|
3
|
+
* All Chrome / Chromium-based browsers will return MacIntel on macOS,
|
|
4
|
+
* no matter what the hardware architecture is. See the source code here:
|
|
5
|
+
* https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/frame/navigator_id.cc;l=64;drc=703d3c472cf27470dad21a3f2c8972aca3732cd6
|
|
6
|
+
* But maybe in future years, it will be changed to MacM1
|
|
7
|
+
*
|
|
8
|
+
* Documentation:
|
|
9
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/Navigator/platform
|
|
10
|
+
*/
|
|
11
|
+
function isApplePlatform(navigator) {
|
|
12
|
+
return navigator.platform.indexOf('Mac') === 0 || navigator.platform === 'iPhone';
|
|
13
|
+
}
|
|
14
|
+
|
|
1
15
|
const IOS_REG_EXP = /ipad|iphone|ipod/;
|
|
2
16
|
function isIos(navigator) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
(userAgentValue.includes('apple') && navigator.maxTouchPoints > 1));
|
|
17
|
+
return (IOS_REG_EXP.test(navigator.userAgent.toLowerCase()) ||
|
|
18
|
+
(isApplePlatform(navigator) && navigator.maxTouchPoints > 1));
|
|
6
19
|
}
|
|
7
20
|
|
|
8
21
|
const SAFARI_REG_EXP = /^((?!chrome|android).)*safari/i;
|
|
@@ -14,5 +27,5 @@ function isApple(navigator) {
|
|
|
14
27
|
* Generated bundle index. Do not edit.
|
|
15
28
|
*/
|
|
16
29
|
|
|
17
|
-
export { isApple, isIos };
|
|
30
|
+
export { isApple, isApplePlatform, isIos };
|
|
18
31
|
//# sourceMappingURL=taiga-ui-cdk-utils-os.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-utils-os.js","sources":["ng://@taiga-ui/cdk/utils/os/is-ios.ts","ng://@taiga-ui/cdk/utils/os/is-apple.ts","ng://@taiga-ui/cdk/utils/os/taiga-ui-cdk-utils-os.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-utils-os.js","sources":["ng://@taiga-ui/cdk/utils/os/is-apple-platform.ts","ng://@taiga-ui/cdk/utils/os/is-ios.ts","ng://@taiga-ui/cdk/utils/os/is-apple.ts","ng://@taiga-ui/cdk/utils/os/taiga-ui-cdk-utils-os.ts"],"sourcesContent":["/**\n * @note:\n * All Chrome / Chromium-based browsers will return MacIntel on macOS,\n * no matter what the hardware architecture is. See the source code here:\n * https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/frame/navigator_id.cc;l=64;drc=703d3c472cf27470dad21a3f2c8972aca3732cd6\n * But maybe in future years, it will be changed to MacM1\n *\n * Documentation:\n * https://developer.mozilla.org/en-US/docs/Web/API/Navigator/platform\n */\nexport function isApplePlatform(navigator: Navigator): boolean {\n return navigator.platform.indexOf('Mac') === 0 || navigator.platform === 'iPhone';\n}\n","import {isApplePlatform} from './is-apple-platform';\n\nconst IOS_REG_EXP = /ipad|iphone|ipod/;\n\nexport function isIos(navigator: Navigator): boolean {\n return (\n IOS_REG_EXP.test(navigator.userAgent.toLowerCase()) ||\n (isApplePlatform(navigator) && navigator.maxTouchPoints > 1)\n );\n}\n","import {isIos} from './is-ios';\n\nconst SAFARI_REG_EXP = /^((?!chrome|android).)*safari/i;\n\nexport function isApple(navigator: Navigator): boolean {\n return isIos(navigator) || SAFARI_REG_EXP.test(navigator.userAgent.toLowerCase());\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;;;;;;;;;SAUgB,eAAe,CAAC,SAAoB;IAChD,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC;AACtF;;ACVA,MAAM,WAAW,GAAG,kBAAkB,CAAC;SAEvB,KAAK,CAAC,SAAoB;IACtC,QACI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;SAClD,eAAe,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,EAC9D;AACN;;ACPA,MAAM,cAAc,GAAG,gCAAgC,CAAC;SAExC,OAAO,CAAC,SAAoB;IACxC,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AACtF;;ACNA;;;;;;"}
|
|
@@ -416,6 +416,10 @@ var AbstractTuiControl = /** @class */ (function (_super) {
|
|
|
416
416
|
return AbstractTuiControl;
|
|
417
417
|
}(AbstractTuiInteractive));
|
|
418
418
|
|
|
419
|
+
/**
|
|
420
|
+
* @deprecated
|
|
421
|
+
* TODO: 3.0 replace with {@link AbstractTuiController}
|
|
422
|
+
*/
|
|
419
423
|
var TuiController = /** @class */ (function () {
|
|
420
424
|
function TuiController() {
|
|
421
425
|
this.change$ = new Subject();
|
|
@@ -425,6 +429,13 @@ var TuiController = /** @class */ (function () {
|
|
|
425
429
|
};
|
|
426
430
|
return TuiController;
|
|
427
431
|
}());
|
|
432
|
+
var AbstractTuiController = /** @class */ (function (_super) {
|
|
433
|
+
__extends(AbstractTuiController, _super);
|
|
434
|
+
function AbstractTuiController() {
|
|
435
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
436
|
+
}
|
|
437
|
+
return AbstractTuiController;
|
|
438
|
+
}(TuiController));
|
|
428
439
|
|
|
429
440
|
var AbstractTuiDialogService = /** @class */ (function (_super) {
|
|
430
441
|
__extends(AbstractTuiDialogService, _super);
|
|
@@ -667,5 +678,5 @@ var AbstractTuiThemeSwitcher = /** @class */ (function () {
|
|
|
667
678
|
* Generated bundle index. Do not edit.
|
|
668
679
|
*/
|
|
669
680
|
|
|
670
|
-
export { AbstractTuiControl, AbstractTuiDialogDirective, AbstractTuiDialogService, AbstractTuiInteractive, AbstractTuiMultipleControl, AbstractTuiNullableControl, AbstractTuiPortalHostComponent, AbstractTuiPortalService, AbstractTuiThemeSwitcher, TuiController };
|
|
681
|
+
export { AbstractTuiControl, AbstractTuiController, AbstractTuiDialogDirective, AbstractTuiDialogService, AbstractTuiInteractive, AbstractTuiMultipleControl, AbstractTuiNullableControl, AbstractTuiPortalHostComponent, AbstractTuiPortalService, AbstractTuiThemeSwitcher, TuiController };
|
|
671
682
|
//# sourceMappingURL=taiga-ui-cdk-abstract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-abstract.js","sources":["ng://@taiga-ui/cdk/abstract/interactive.ts","ng://@taiga-ui/cdk/abstract/control.ts","ng://@taiga-ui/cdk/abstract/controller.ts","ng://@taiga-ui/cdk/abstract/dialog.service.ts","ng://@taiga-ui/cdk/abstract/dialog.directive.ts","ng://@taiga-ui/cdk/abstract/multiple-control.ts","ng://@taiga-ui/cdk/abstract/nullable-control.ts","ng://@taiga-ui/cdk/abstract/portal-service.ts","ng://@taiga-ui/cdk/abstract/portal-host.ts","ng://@taiga-ui/cdk/abstract/theme-switcher.ts","ng://@taiga-ui/cdk/abstract/taiga-ui-cdk-abstract.ts"],"sourcesContent":["import {Directive, EventEmitter, HostBinding, Input, Output} from '@angular/core';\nimport {tuiDefaultProp} from '@taiga-ui/cdk/decorators';\n\nconst TUI = 'tui_interactive_';\n\n/**\n * The most basic class for interactive components\n */\n@Directive()\nexport abstract class AbstractTuiInteractive {\n private static autoId = 0;\n\n abstract disabled: boolean;\n\n abstract focused: boolean;\n\n private readonly autoIdString: string;\n\n @Input()\n @tuiDefaultProp()\n pseudoHovered: boolean | null = null;\n\n @Input()\n @tuiDefaultProp()\n pseudoPressed: boolean | null = null;\n\n @Input()\n @tuiDefaultProp()\n pseudoFocused: boolean | null = null;\n\n /**\n * Determines if component is focusable with keyboard.\n */\n @Input()\n @tuiDefaultProp()\n focusable = true;\n\n @Input()\n @tuiDefaultProp()\n nativeId = '';\n\n /**\n * Emits 'true' on focus and 'false' on blur.\n */\n @Output()\n readonly focusedChange = new EventEmitter<boolean>();\n\n /** @deprecated use `tuiPressedChange` directive */\n @Output()\n readonly pressedChange = new EventEmitter<boolean>();\n\n /** @deprecated use `tuiHoveredChange` directive */\n @Output()\n readonly hoveredChange = new EventEmitter<boolean>();\n\n @Output()\n readonly focusVisibleChange = new EventEmitter<boolean>();\n\n /** @deprecated use `tuiHoveredChange` directive */\n hovered = false;\n\n /** @deprecated use `tuiPressedChange` directive */\n pressed = false;\n\n focusVisible = false;\n\n protected constructor() {\n this.autoIdString = `${TUI}${AbstractTuiInteractive.autoId++}${Date.now()}`;\n }\n\n @HostBinding('class._disabled')\n get computedDisabled(): boolean {\n return this.disabled;\n }\n\n /** @deprecated */\n @HostBinding('class._hovered')\n get computedHovered(): boolean {\n return !this.computedDisabled && (this.pseudoHovered ?? this.hovered);\n }\n\n /** @deprecated */\n @HostBinding('class._pressed')\n get computedPressed(): boolean {\n return !this.computedDisabled && (this.pseudoPressed ?? this.pressed);\n }\n\n get computedFocusable(): boolean {\n return !this.computedDisabled && (this.focusable || this.focused);\n }\n\n @HostBinding('class._focused')\n get computedFocused(): boolean {\n return !this.computedDisabled && (this.pseudoFocused ?? this.focused);\n }\n\n @HostBinding('class._focus-visible')\n get computedFocusVisible(): boolean {\n return !this.computedDisabled && (this.pseudoFocused ?? this.focusVisible);\n }\n\n // TODO: 3.0 Consider removing since native input is exposed\n get id(): string {\n return this.nativeId ? this.nativeId : this.autoIdString;\n }\n\n /** @deprecated */\n protected updateHovered(hovered: boolean): void {\n if (this.hovered === hovered) {\n return;\n }\n\n this.hovered = hovered;\n this.hoveredChange.emit(hovered);\n }\n\n /** @deprecated */\n protected updatePressed(pressed: boolean): void {\n if (this.pressed === pressed) {\n return;\n }\n\n this.pressed = pressed;\n this.pressedChange.emit(pressed);\n }\n\n protected updateFocused(focused: boolean): void {\n this.focusedChange.emit(focused);\n }\n\n protected updateFocusVisible(focusVisible: boolean): void {\n if (this.focusVisible === focusVisible) {\n return;\n }\n\n this.focusVisible = focusVisible;\n this.focusVisibleChange.emit(focusVisible);\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {AbstractControl, ControlValueAccessor, NgControl, NgModel} from '@angular/forms';\nimport {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {tuiDefaultProp} from '@taiga-ui/cdk/decorators';\nimport {TuiControlValueTransformer} from '@taiga-ui/cdk/interfaces';\nimport {merge, Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {AbstractTuiInteractive} from './interactive';\n\n/**\n * Basic ControlValueAccessor class to build form components upon\n */\n@Directive()\nexport abstract class AbstractTuiControl<T>\n extends AbstractTuiInteractive\n implements OnDestroy, OnInit, ControlValueAccessor\n{\n private previousInternalValue?: T | null;\n\n private onTouched = EMPTY_FUNCTION;\n\n private onChange = EMPTY_FUNCTION;\n\n protected readonly fallbackValue = this.getFallbackValue();\n\n protected readonly destroy$ = new Subject<void>();\n\n @Input()\n @HostBinding('class._readonly')\n @tuiDefaultProp()\n readOnly = false;\n\n @Input()\n @tuiDefaultProp()\n pseudoInvalid: boolean | null = null;\n\n protected constructor(\n private readonly ngControl: NgControl | null,\n protected readonly changeDetectorRef: ChangeDetectorRef,\n protected readonly valueTransformer?: TuiControlValueTransformer<T> | null,\n ) {\n super();\n\n if (this.ngControl === null) {\n tuiAssert.assert(\n false,\n `NgControl not injected in ${this.constructor.name}!\\n`,\n 'Use [(ngModel)] or [formControl] or formControlName for correct work.',\n );\n } else {\n this.ngControl.valueAccessor = this;\n }\n }\n\n protected abstract getFallbackValue(): T;\n\n @HostBinding('class._invalid')\n get computedInvalid(): boolean {\n return (\n this.interactive &&\n (this.pseudoInvalid !== null\n ? this.pseudoInvalid\n : this.touched && this.invalid)\n );\n }\n\n get value(): T {\n return this.previousInternalValue ?? this.fallbackValue;\n }\n\n get safeCurrentValue(): T {\n return this.rawValue ?? this.fallbackValue;\n }\n\n get invalid(): boolean {\n return this.safeNgControlData<boolean>(({invalid}) => invalid, false);\n }\n\n get valid(): boolean {\n return this.safeNgControlData<boolean>(({valid}) => valid, false);\n }\n\n get touched(): boolean {\n return this.safeNgControlData<boolean>(({touched}) => touched, false);\n }\n\n get disabled(): boolean {\n return this.safeNgControlData<boolean>(({disabled}) => disabled, false);\n }\n\n get interactive(): boolean {\n return !this.readOnly && !this.computedDisabled;\n }\n\n get control(): AbstractControl | null {\n return this.safeNgControlData<AbstractControl | null>(\n ({control}) => control,\n null,\n );\n }\n\n get computedName(): string | null {\n return this.controlName?.toString() ?? null;\n }\n\n protected get controlName(): string | null {\n return this.ngControl?.name?.toString() ?? null;\n }\n\n private get rawValue(): T | undefined {\n const {ngControl} = this;\n\n if (ngControl === null) {\n return undefined;\n }\n\n const controlValue =\n ngControl instanceof NgModel && this.previousInternalValue === undefined\n ? ngControl.viewModel\n : ngControl.value;\n\n return this.fromControlValue(controlValue);\n }\n\n ngOnInit(): void {\n if (!this.ngControl?.valueChanges || !this.ngControl?.statusChanges) {\n return;\n }\n\n merge(this.ngControl.valueChanges, this.ngControl.statusChanges)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.refreshLocalValue(this.safeCurrentValue));\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n checkControlUpdate(): void {\n this.changeDetectorRef.markForCheck();\n }\n\n registerOnChange(onChange: (value: T | unknown) => void): void {\n this.onChange = (componentValue: T) => {\n onChange(this.toControlValue(componentValue));\n };\n }\n\n registerOnTouched(onTouched: () => void): void {\n this.onTouched = onTouched;\n }\n\n setDisabledState(): void {\n this.checkControlUpdate();\n }\n\n writeValue(value: T | null): void {\n const controlValue =\n this.ngControl instanceof NgModel && this.previousInternalValue === undefined\n ? this.ngControl.model\n : value;\n\n this.refreshLocalValue(this.fromControlValue(controlValue));\n }\n\n protected updateFocused(focused: boolean): void {\n if (!focused) {\n this.controlMarkAsTouched();\n }\n\n super.updateFocused(focused);\n }\n\n protected updateValue(value: T): void {\n if (this.disabled || this.valueIdenticalComparator(this.value, value)) {\n return;\n }\n\n this.previousInternalValue = value;\n this.controlSetValue(value);\n }\n\n protected valueIdenticalComparator(oldValue: T, newValue: T): boolean {\n return oldValue === newValue;\n }\n\n private safeNgControlData<T>(\n extractor: (ngControl: NgControl) => T | null | undefined,\n defaultFieldValue: T,\n ): T {\n return (this.ngControl && extractor(this.ngControl)) ?? defaultFieldValue;\n }\n\n private controlMarkAsTouched(): void {\n this.onTouched();\n this.checkControlUpdate();\n }\n\n private controlSetValue(value: T): void {\n this.onChange(value);\n this.checkControlUpdate();\n }\n\n private refreshLocalValue(value: T | null): void {\n this.previousInternalValue = value;\n this.checkControlUpdate();\n }\n\n private fromControlValue(controlValue: unknown): T {\n return this.valueTransformer\n ? this.valueTransformer.fromControlValue(controlValue)\n : (controlValue as T);\n }\n\n private toControlValue(componentValue: T): unknown {\n return this.valueTransformer\n ? this.valueTransformer.toControlValue(componentValue)\n : componentValue;\n }\n}\n","import {OnChanges} from '@angular/core';\nimport {Subject} from 'rxjs';\n\nexport abstract class TuiController implements OnChanges {\n readonly change$ = new Subject<void>();\n\n ngOnChanges(): void {\n this.change$.next();\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {TuiBaseDialogContext} from '@taiga-ui/cdk/interfaces';\nimport {TuiIdService} from '@taiga-ui/cdk/services';\nimport {TuiDialog} from '@taiga-ui/cdk/types';\nimport {PolymorpheusComponent, PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable()\nexport abstract class AbstractTuiDialogService<T> extends Observable<\n ReadonlyArray<TuiDialog<T, any>>\n> {\n protected abstract readonly component: PolymorpheusComponent<any, TuiDialog<T, any>>;\n\n protected abstract readonly defaultOptions: T;\n\n protected readonly dialogs$ = new BehaviorSubject<ReadonlyArray<TuiDialog<T, any>>>(\n [],\n );\n\n protected constructor(\n @Inject(TuiIdService) private readonly idService: TuiIdService,\n ) {\n super(observer => this.dialogs$.subscribe(observer));\n }\n\n open<G = void>(\n content: PolymorpheusContent<TuiBaseDialogContext<G> & T>,\n options: Partial<T> = {},\n ): Observable<G> {\n return new Observable(observer => {\n const completeWith = (result: G): void => {\n observer.next(result);\n observer.complete();\n };\n const dialog = {\n ...this.defaultOptions,\n ...options,\n content,\n completeWith,\n $implicit: observer,\n component: this.component,\n createdAt: Date.now(),\n id: this.idService.generate(),\n };\n\n this.dialogs$.next([...this.dialogs$.value, dialog]);\n\n return () => {\n this.dialogs$.next(this.dialogs$.value.filter(item => item !== dialog));\n };\n });\n }\n}\n","import {ChangeDetectorRef, Directive, Inject, TemplateRef} from '@angular/core';\nimport {TuiDialog} from '@taiga-ui/cdk/types';\nimport {PolymorpheusTemplate} from '@tinkoff/ng-polymorpheus';\nimport {EMPTY, Subject} from 'rxjs';\nimport {endWith, ignoreElements, switchMap} from 'rxjs/operators';\n\nimport {AbstractTuiDialogService} from './dialog.service';\n\n@Directive()\nexport abstract class AbstractTuiDialogDirective<T> extends PolymorpheusTemplate<\n TuiDialog<T, void>\n> {\n private readonly open$ = new Subject<boolean>();\n\n options: Partial<T> = {};\n\n set open(open: boolean) {\n this.open$.next(open);\n }\n\n openChange = this.open$.pipe(\n switchMap(open =>\n open\n ? this.service\n .open(this, this.options)\n .pipe(ignoreElements(), endWith(false))\n : EMPTY,\n ),\n );\n\n constructor(\n @Inject(TemplateRef)\n templateRef: TemplateRef<TuiDialog<T, void>>,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(AbstractTuiDialogService)\n private readonly service: AbstractTuiDialogService<T>,\n ) {\n super(templateRef, changeDetectorRef);\n }\n}\n","import {Directive} from '@angular/core';\n\nimport {AbstractTuiControl} from './control';\n\n@Directive()\nexport abstract class AbstractTuiMultipleControl<T> extends AbstractTuiControl<\n readonly T[]\n> {\n clear(): void {\n this.updateValue([]);\n }\n\n protected getFallbackValue(): readonly T[] {\n return [];\n }\n}\n","import {Directive} from '@angular/core';\n\nimport {AbstractTuiControl} from './control';\n\n@Directive()\nexport abstract class AbstractTuiNullableControl<T> extends AbstractTuiControl<T | null> {\n protected getFallbackValue(): T | null {\n return null;\n }\n}\n","import {\n ComponentFactory,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n TemplateRef,\n} from '@angular/core';\nimport {TuiNoHostException} from '@taiga-ui/cdk/exceptions';\n\nimport {AbstractTuiPortalHostComponent} from './portal-host';\n\n/**\n * Abstract service for displaying portals\n */\n@Injectable()\nexport abstract class AbstractTuiPortalService {\n protected host?: AbstractTuiPortalHostComponent;\n\n protected get safeHost(): AbstractTuiPortalHostComponent {\n if (!this.host) {\n throw new TuiNoHostException();\n }\n\n return this.host;\n }\n\n attach(host: AbstractTuiPortalHostComponent): void {\n this.host = host;\n }\n\n add<C>(componentFactory: ComponentFactory<C>, injector: Injector): ComponentRef<C> {\n return this.safeHost.addComponentChild(componentFactory, injector);\n }\n\n remove<C>({hostView}: ComponentRef<C>): void {\n hostView.destroy();\n }\n\n addTemplate<C>(templateRef: TemplateRef<C>, context?: C): EmbeddedViewRef<C> {\n return this.safeHost.addTemplateChild(templateRef, context);\n }\n\n removeTemplate<C>(viewRef: EmbeddedViewRef<C>): void {\n viewRef.destroy();\n }\n}\n","import {\n ComponentFactory,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Inject,\n Injector,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {AbstractTuiPortalService} from './portal-service';\n\n/**\n * Abstract class for host element for dynamically created portals.\n */\n@Directive()\nexport abstract class AbstractTuiPortalHostComponent {\n @ViewChild('viewContainer', {read: ViewContainerRef})\n viewContainerRef!: ViewContainerRef;\n\n constructor(\n @Inject(ElementRef)\n readonly elementRef: ElementRef<HTMLElement>,\n @Inject(AbstractTuiPortalService) portalService: AbstractTuiPortalService,\n ) {\n portalService.attach(this);\n }\n\n get clientRect(): ClientRect {\n return this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n addComponentChild<C>(\n componentFactory: ComponentFactory<C>,\n injector: Injector,\n ): ComponentRef<C> {\n return this.viewContainerRef.createComponent<C>(\n componentFactory,\n undefined,\n Injector.create({\n parent: injector,\n providers: [\n {\n provide: AbstractTuiPortalHostComponent,\n useValue: this,\n },\n ],\n }),\n );\n }\n\n addTemplateChild<C>(templateRef: TemplateRef<C>, context?: C): EmbeddedViewRef<C> {\n return this.viewContainerRef.createEmbeddedView(templateRef, context);\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {Directive, Inject, OnDestroy} from '@angular/core';\n\n/**\n * Use this abstract class to create your own toggleable themes.\n * A component extending this class must have CSS variables definitions\n * and have ViewEncapsulation set to NONE. A boolean input allows to\n * switch theme on or off.\n * @dynamic\n */\n@Directive()\nexport abstract class AbstractTuiThemeSwitcher implements OnDestroy {\n static style: HTMLStyleElement | null = null;\n\n constructor(@Inject(DOCUMENT) private readonly documentRef: Document) {\n if (this.style !== null) {\n this.addTheme();\n\n return;\n }\n\n const styles = this.documentRef.head.querySelectorAll('style');\n\n (<typeof AbstractTuiThemeSwitcher>this.constructor).style =\n styles[styles.length - 1];\n }\n\n get style(): HTMLStyleElement | null {\n return (<typeof AbstractTuiThemeSwitcher>this.constructor).style;\n }\n\n ngOnDestroy(): void {\n this.removeTheme();\n }\n\n private addTheme(): void {\n if (this.style) {\n this.documentRef.head.appendChild(this.style);\n }\n }\n\n private removeTheme(): void {\n if (this.style && this.documentRef.head.contains(this.style)) {\n this.documentRef.head.removeChild(this.style);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-abstract.js","sources":["ng://@taiga-ui/cdk/abstract/interactive.ts","ng://@taiga-ui/cdk/abstract/control.ts","ng://@taiga-ui/cdk/abstract/controller.ts","ng://@taiga-ui/cdk/abstract/dialog.service.ts","ng://@taiga-ui/cdk/abstract/dialog.directive.ts","ng://@taiga-ui/cdk/abstract/multiple-control.ts","ng://@taiga-ui/cdk/abstract/nullable-control.ts","ng://@taiga-ui/cdk/abstract/portal-service.ts","ng://@taiga-ui/cdk/abstract/portal-host.ts","ng://@taiga-ui/cdk/abstract/theme-switcher.ts","ng://@taiga-ui/cdk/abstract/taiga-ui-cdk-abstract.ts"],"sourcesContent":["import {Directive, EventEmitter, HostBinding, Input, Output} from '@angular/core';\nimport {tuiDefaultProp} from '@taiga-ui/cdk/decorators';\n\nconst TUI = 'tui_interactive_';\n\n/**\n * The most basic class for interactive components\n */\n@Directive()\nexport abstract class AbstractTuiInteractive {\n private static autoId = 0;\n\n abstract disabled: boolean;\n\n abstract focused: boolean;\n\n private readonly autoIdString: string;\n\n @Input()\n @tuiDefaultProp()\n pseudoHovered: boolean | null = null;\n\n @Input()\n @tuiDefaultProp()\n pseudoPressed: boolean | null = null;\n\n @Input()\n @tuiDefaultProp()\n pseudoFocused: boolean | null = null;\n\n /**\n * Determines if component is focusable with keyboard.\n */\n @Input()\n @tuiDefaultProp()\n focusable = true;\n\n @Input()\n @tuiDefaultProp()\n nativeId = '';\n\n /**\n * Emits 'true' on focus and 'false' on blur.\n */\n @Output()\n readonly focusedChange = new EventEmitter<boolean>();\n\n /** @deprecated use `tuiPressedChange` directive */\n @Output()\n readonly pressedChange = new EventEmitter<boolean>();\n\n /** @deprecated use `tuiHoveredChange` directive */\n @Output()\n readonly hoveredChange = new EventEmitter<boolean>();\n\n @Output()\n readonly focusVisibleChange = new EventEmitter<boolean>();\n\n /** @deprecated use `tuiHoveredChange` directive */\n hovered = false;\n\n /** @deprecated use `tuiPressedChange` directive */\n pressed = false;\n\n focusVisible = false;\n\n protected constructor() {\n this.autoIdString = `${TUI}${AbstractTuiInteractive.autoId++}${Date.now()}`;\n }\n\n @HostBinding('class._disabled')\n get computedDisabled(): boolean {\n return this.disabled;\n }\n\n /** @deprecated */\n @HostBinding('class._hovered')\n get computedHovered(): boolean {\n return !this.computedDisabled && (this.pseudoHovered ?? this.hovered);\n }\n\n /** @deprecated */\n @HostBinding('class._pressed')\n get computedPressed(): boolean {\n return !this.computedDisabled && (this.pseudoPressed ?? this.pressed);\n }\n\n get computedFocusable(): boolean {\n return !this.computedDisabled && (this.focusable || this.focused);\n }\n\n @HostBinding('class._focused')\n get computedFocused(): boolean {\n return !this.computedDisabled && (this.pseudoFocused ?? this.focused);\n }\n\n @HostBinding('class._focus-visible')\n get computedFocusVisible(): boolean {\n return !this.computedDisabled && (this.pseudoFocused ?? this.focusVisible);\n }\n\n // TODO: 3.0 Consider removing since native input is exposed\n get id(): string {\n return this.nativeId ? this.nativeId : this.autoIdString;\n }\n\n /** @deprecated */\n protected updateHovered(hovered: boolean): void {\n if (this.hovered === hovered) {\n return;\n }\n\n this.hovered = hovered;\n this.hoveredChange.emit(hovered);\n }\n\n /** @deprecated */\n protected updatePressed(pressed: boolean): void {\n if (this.pressed === pressed) {\n return;\n }\n\n this.pressed = pressed;\n this.pressedChange.emit(pressed);\n }\n\n protected updateFocused(focused: boolean): void {\n this.focusedChange.emit(focused);\n }\n\n protected updateFocusVisible(focusVisible: boolean): void {\n if (this.focusVisible === focusVisible) {\n return;\n }\n\n this.focusVisible = focusVisible;\n this.focusVisibleChange.emit(focusVisible);\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {AbstractControl, ControlValueAccessor, NgControl, NgModel} from '@angular/forms';\nimport {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {tuiDefaultProp} from '@taiga-ui/cdk/decorators';\nimport {TuiControlValueTransformer} from '@taiga-ui/cdk/interfaces';\nimport {merge, Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {AbstractTuiInteractive} from './interactive';\n\n/**\n * Basic ControlValueAccessor class to build form components upon\n */\n@Directive()\nexport abstract class AbstractTuiControl<T>\n extends AbstractTuiInteractive\n implements OnDestroy, OnInit, ControlValueAccessor\n{\n private previousInternalValue?: T | null;\n\n private onTouched = EMPTY_FUNCTION;\n\n private onChange = EMPTY_FUNCTION;\n\n protected readonly fallbackValue = this.getFallbackValue();\n\n protected readonly destroy$ = new Subject<void>();\n\n @Input()\n @HostBinding('class._readonly')\n @tuiDefaultProp()\n readOnly = false;\n\n @Input()\n @tuiDefaultProp()\n pseudoInvalid: boolean | null = null;\n\n protected constructor(\n private readonly ngControl: NgControl | null,\n protected readonly changeDetectorRef: ChangeDetectorRef,\n protected readonly valueTransformer?: TuiControlValueTransformer<T> | null,\n ) {\n super();\n\n if (this.ngControl === null) {\n tuiAssert.assert(\n false,\n `NgControl not injected in ${this.constructor.name}!\\n`,\n 'Use [(ngModel)] or [formControl] or formControlName for correct work.',\n );\n } else {\n this.ngControl.valueAccessor = this;\n }\n }\n\n protected abstract getFallbackValue(): T;\n\n @HostBinding('class._invalid')\n get computedInvalid(): boolean {\n return (\n this.interactive &&\n (this.pseudoInvalid !== null\n ? this.pseudoInvalid\n : this.touched && this.invalid)\n );\n }\n\n get value(): T {\n return this.previousInternalValue ?? this.fallbackValue;\n }\n\n get safeCurrentValue(): T {\n return this.rawValue ?? this.fallbackValue;\n }\n\n get invalid(): boolean {\n return this.safeNgControlData<boolean>(({invalid}) => invalid, false);\n }\n\n get valid(): boolean {\n return this.safeNgControlData<boolean>(({valid}) => valid, false);\n }\n\n get touched(): boolean {\n return this.safeNgControlData<boolean>(({touched}) => touched, false);\n }\n\n get disabled(): boolean {\n return this.safeNgControlData<boolean>(({disabled}) => disabled, false);\n }\n\n get interactive(): boolean {\n return !this.readOnly && !this.computedDisabled;\n }\n\n get control(): AbstractControl | null {\n return this.safeNgControlData<AbstractControl | null>(\n ({control}) => control,\n null,\n );\n }\n\n get computedName(): string | null {\n return this.controlName?.toString() ?? null;\n }\n\n protected get controlName(): string | null {\n return this.ngControl?.name?.toString() ?? null;\n }\n\n private get rawValue(): T | undefined {\n const {ngControl} = this;\n\n if (ngControl === null) {\n return undefined;\n }\n\n const controlValue =\n ngControl instanceof NgModel && this.previousInternalValue === undefined\n ? ngControl.viewModel\n : ngControl.value;\n\n return this.fromControlValue(controlValue);\n }\n\n ngOnInit(): void {\n if (!this.ngControl?.valueChanges || !this.ngControl?.statusChanges) {\n return;\n }\n\n merge(this.ngControl.valueChanges, this.ngControl.statusChanges)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.refreshLocalValue(this.safeCurrentValue));\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n checkControlUpdate(): void {\n this.changeDetectorRef.markForCheck();\n }\n\n registerOnChange(onChange: (value: T | unknown) => void): void {\n this.onChange = (componentValue: T) => {\n onChange(this.toControlValue(componentValue));\n };\n }\n\n registerOnTouched(onTouched: () => void): void {\n this.onTouched = onTouched;\n }\n\n setDisabledState(): void {\n this.checkControlUpdate();\n }\n\n writeValue(value: T | null): void {\n const controlValue =\n this.ngControl instanceof NgModel && this.previousInternalValue === undefined\n ? this.ngControl.model\n : value;\n\n this.refreshLocalValue(this.fromControlValue(controlValue));\n }\n\n protected updateFocused(focused: boolean): void {\n if (!focused) {\n this.controlMarkAsTouched();\n }\n\n super.updateFocused(focused);\n }\n\n protected updateValue(value: T): void {\n if (this.disabled || this.valueIdenticalComparator(this.value, value)) {\n return;\n }\n\n this.previousInternalValue = value;\n this.controlSetValue(value);\n }\n\n protected valueIdenticalComparator(oldValue: T, newValue: T): boolean {\n return oldValue === newValue;\n }\n\n private safeNgControlData<T>(\n extractor: (ngControl: NgControl) => T | null | undefined,\n defaultFieldValue: T,\n ): T {\n return (this.ngControl && extractor(this.ngControl)) ?? defaultFieldValue;\n }\n\n private controlMarkAsTouched(): void {\n this.onTouched();\n this.checkControlUpdate();\n }\n\n private controlSetValue(value: T): void {\n this.onChange(value);\n this.checkControlUpdate();\n }\n\n private refreshLocalValue(value: T | null): void {\n this.previousInternalValue = value;\n this.checkControlUpdate();\n }\n\n private fromControlValue(controlValue: unknown): T {\n return this.valueTransformer\n ? this.valueTransformer.fromControlValue(controlValue)\n : (controlValue as T);\n }\n\n private toControlValue(componentValue: T): unknown {\n return this.valueTransformer\n ? this.valueTransformer.toControlValue(componentValue)\n : componentValue;\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport {OnChanges} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * @deprecated\n * TODO: 3.0 replace with {@link AbstractTuiController}\n */\nexport abstract class TuiController implements OnChanges {\n readonly change$ = new Subject<void>();\n\n ngOnChanges(): void {\n this.change$.next();\n }\n}\n\nexport abstract class AbstractTuiController extends TuiController {}\n","import {Inject, Injectable} from '@angular/core';\nimport {TuiBaseDialogContext} from '@taiga-ui/cdk/interfaces';\nimport {TuiIdService} from '@taiga-ui/cdk/services';\nimport {TuiDialog} from '@taiga-ui/cdk/types';\nimport {PolymorpheusComponent, PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable()\nexport abstract class AbstractTuiDialogService<T> extends Observable<\n ReadonlyArray<TuiDialog<T, any>>\n> {\n protected abstract readonly component: PolymorpheusComponent<any, TuiDialog<T, any>>;\n\n protected abstract readonly defaultOptions: T;\n\n protected readonly dialogs$ = new BehaviorSubject<ReadonlyArray<TuiDialog<T, any>>>(\n [],\n );\n\n protected constructor(\n @Inject(TuiIdService) private readonly idService: TuiIdService,\n ) {\n super(observer => this.dialogs$.subscribe(observer));\n }\n\n open<G = void>(\n content: PolymorpheusContent<TuiBaseDialogContext<G> & T>,\n options: Partial<T> = {},\n ): Observable<G> {\n return new Observable(observer => {\n const completeWith = (result: G): void => {\n observer.next(result);\n observer.complete();\n };\n const dialog = {\n ...this.defaultOptions,\n ...options,\n content,\n completeWith,\n $implicit: observer,\n component: this.component,\n createdAt: Date.now(),\n id: this.idService.generate(),\n };\n\n this.dialogs$.next([...this.dialogs$.value, dialog]);\n\n return () => {\n this.dialogs$.next(this.dialogs$.value.filter(item => item !== dialog));\n };\n });\n }\n}\n","import {ChangeDetectorRef, Directive, Inject, TemplateRef} from '@angular/core';\nimport {TuiDialog} from '@taiga-ui/cdk/types';\nimport {PolymorpheusTemplate} from '@tinkoff/ng-polymorpheus';\nimport {EMPTY, Subject} from 'rxjs';\nimport {endWith, ignoreElements, switchMap} from 'rxjs/operators';\n\nimport {AbstractTuiDialogService} from './dialog.service';\n\n@Directive()\nexport abstract class AbstractTuiDialogDirective<T> extends PolymorpheusTemplate<\n TuiDialog<T, void>\n> {\n private readonly open$ = new Subject<boolean>();\n\n options: Partial<T> = {};\n\n set open(open: boolean) {\n this.open$.next(open);\n }\n\n openChange = this.open$.pipe(\n switchMap(open =>\n open\n ? this.service\n .open(this, this.options)\n .pipe(ignoreElements(), endWith(false))\n : EMPTY,\n ),\n );\n\n constructor(\n @Inject(TemplateRef)\n templateRef: TemplateRef<TuiDialog<T, void>>,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(AbstractTuiDialogService)\n private readonly service: AbstractTuiDialogService<T>,\n ) {\n super(templateRef, changeDetectorRef);\n }\n}\n","import {Directive} from '@angular/core';\n\nimport {AbstractTuiControl} from './control';\n\n@Directive()\nexport abstract class AbstractTuiMultipleControl<T> extends AbstractTuiControl<\n readonly T[]\n> {\n clear(): void {\n this.updateValue([]);\n }\n\n protected getFallbackValue(): readonly T[] {\n return [];\n }\n}\n","import {Directive} from '@angular/core';\n\nimport {AbstractTuiControl} from './control';\n\n@Directive()\nexport abstract class AbstractTuiNullableControl<T> extends AbstractTuiControl<T | null> {\n protected getFallbackValue(): T | null {\n return null;\n }\n}\n","import {\n ComponentFactory,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n TemplateRef,\n} from '@angular/core';\nimport {TuiNoHostException} from '@taiga-ui/cdk/exceptions';\n\nimport {AbstractTuiPortalHostComponent} from './portal-host';\n\n/**\n * Abstract service for displaying portals\n */\n@Injectable()\nexport abstract class AbstractTuiPortalService {\n protected host?: AbstractTuiPortalHostComponent;\n\n protected get safeHost(): AbstractTuiPortalHostComponent {\n if (!this.host) {\n throw new TuiNoHostException();\n }\n\n return this.host;\n }\n\n attach(host: AbstractTuiPortalHostComponent): void {\n this.host = host;\n }\n\n add<C>(componentFactory: ComponentFactory<C>, injector: Injector): ComponentRef<C> {\n return this.safeHost.addComponentChild(componentFactory, injector);\n }\n\n remove<C>({hostView}: ComponentRef<C>): void {\n hostView.destroy();\n }\n\n addTemplate<C>(templateRef: TemplateRef<C>, context?: C): EmbeddedViewRef<C> {\n return this.safeHost.addTemplateChild(templateRef, context);\n }\n\n removeTemplate<C>(viewRef: EmbeddedViewRef<C>): void {\n viewRef.destroy();\n }\n}\n","import {\n ComponentFactory,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Inject,\n Injector,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {AbstractTuiPortalService} from './portal-service';\n\n/**\n * Abstract class for host element for dynamically created portals.\n */\n@Directive()\nexport abstract class AbstractTuiPortalHostComponent {\n @ViewChild('viewContainer', {read: ViewContainerRef})\n viewContainerRef!: ViewContainerRef;\n\n constructor(\n @Inject(ElementRef)\n readonly elementRef: ElementRef<HTMLElement>,\n @Inject(AbstractTuiPortalService) portalService: AbstractTuiPortalService,\n ) {\n portalService.attach(this);\n }\n\n get clientRect(): ClientRect {\n return this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n addComponentChild<C>(\n componentFactory: ComponentFactory<C>,\n injector: Injector,\n ): ComponentRef<C> {\n return this.viewContainerRef.createComponent<C>(\n componentFactory,\n undefined,\n Injector.create({\n parent: injector,\n providers: [\n {\n provide: AbstractTuiPortalHostComponent,\n useValue: this,\n },\n ],\n }),\n );\n }\n\n addTemplateChild<C>(templateRef: TemplateRef<C>, context?: C): EmbeddedViewRef<C> {\n return this.viewContainerRef.createEmbeddedView(templateRef, context);\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {Directive, Inject, OnDestroy} from '@angular/core';\n\n/**\n * Use this abstract class to create your own toggleable themes.\n * A component extending this class must have CSS variables definitions\n * and have ViewEncapsulation set to NONE. A boolean input allows to\n * switch theme on or off.\n * @dynamic\n */\n@Directive()\nexport abstract class AbstractTuiThemeSwitcher implements OnDestroy {\n static style: HTMLStyleElement | null = null;\n\n constructor(@Inject(DOCUMENT) private readonly documentRef: Document) {\n if (this.style !== null) {\n this.addTheme();\n\n return;\n }\n\n const styles = this.documentRef.head.querySelectorAll('style');\n\n (<typeof AbstractTuiThemeSwitcher>this.constructor).style =\n styles[styles.length - 1];\n }\n\n get style(): HTMLStyleElement | null {\n return (<typeof AbstractTuiThemeSwitcher>this.constructor).style;\n }\n\n ngOnDestroy(): void {\n this.removeTheme();\n }\n\n private addTheme(): void {\n if (this.style) {\n this.documentRef.head.appendChild(this.style);\n }\n }\n\n private removeTheme(): void {\n if (this.style && this.documentRef.head.contains(this.style)) {\n this.documentRef.head.removeChild(this.style);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -85,9 +85,33 @@ var svgNodeFilter = (function (node) {
|
|
|
85
85
|
*/
|
|
86
86
|
var CHAR_NO_BREAK_SPACE = '\u00A0';
|
|
87
87
|
/**
|
|
88
|
-
* {@link https://unicode-table.com/en/2013/ EN dash}
|
|
88
|
+
* {@link https://unicode-table.com/en/2013/ EN dash}
|
|
89
|
+
* is used to indicate a range of numbers or a span of time.
|
|
90
|
+
* @example 2006–2022
|
|
91
|
+
* ___
|
|
92
|
+
* Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!
|
|
89
93
|
*/
|
|
90
94
|
var CHAR_EN_DASH = '\u2013';
|
|
95
|
+
/**
|
|
96
|
+
* {@link https://unicode-table.com/en/2014/ EM dash}
|
|
97
|
+
* is used to mark a break in a sentence.
|
|
98
|
+
* @example Taiga UI — powerful set of open source components for Angular
|
|
99
|
+
* ___
|
|
100
|
+
* Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!
|
|
101
|
+
*/
|
|
102
|
+
var CHAR_EM_DASH = '\u2014';
|
|
103
|
+
/**
|
|
104
|
+
* {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}
|
|
105
|
+
* is used to combine words or as minus sign before digits.
|
|
106
|
+
* @example well-behaved, -42
|
|
107
|
+
* ___
|
|
108
|
+
* Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!
|
|
109
|
+
*/
|
|
110
|
+
var CHAR_HYPHEN = '\u002D';
|
|
111
|
+
/**
|
|
112
|
+
* {@link https://unicode-table.com/en/002B/ Plus}
|
|
113
|
+
*/
|
|
114
|
+
var CHAR_PLUS = '\u002B';
|
|
91
115
|
/**
|
|
92
116
|
* {@link https://unicode-table.com/en/2022/ Bullet}.
|
|
93
117
|
*/
|
|
@@ -109,5 +133,5 @@ var CHAR_ZERO_WIDTH_SPACE = '\u200b';
|
|
|
109
133
|
* Generated bundle index. Do not edit.
|
|
110
134
|
*/
|
|
111
135
|
|
|
112
|
-
export { ALWAYS_FALSE_HANDLER, ALWAYS_TRUE_HANDLER, CHAR_BULLET, CHAR_CURRENCY_SIGN, CHAR_ELLIPSIS, CHAR_EN_DASH, CHAR_NO_BREAK_SPACE, CHAR_ZERO_WIDTH_SPACE, CHROMIUM_EDGE_START_VERSION, EMPTY_ARRAY, EMPTY_FUNCTION, EMPTY_QUERY, EMPTY_VALIDATOR, POLLING_TIME, TUI_DEFAULT_IDENTITY_MATCHER, TUI_DEFAULT_MATCHER, TUI_DEFAULT_STRINGIFY, TUI_PARENT_ANIMATION, TUI_STRICT_MATCHER, svgNodeFilter };
|
|
136
|
+
export { ALWAYS_FALSE_HANDLER, ALWAYS_TRUE_HANDLER, CHAR_BULLET, CHAR_CURRENCY_SIGN, CHAR_ELLIPSIS, CHAR_EM_DASH, CHAR_EN_DASH, CHAR_HYPHEN, CHAR_NO_BREAK_SPACE, CHAR_PLUS, CHAR_ZERO_WIDTH_SPACE, CHROMIUM_EDGE_START_VERSION, EMPTY_ARRAY, EMPTY_FUNCTION, EMPTY_QUERY, EMPTY_VALIDATOR, POLLING_TIME, TUI_DEFAULT_IDENTITY_MATCHER, TUI_DEFAULT_MATCHER, TUI_DEFAULT_STRINGIFY, TUI_PARENT_ANIMATION, TUI_STRICT_MATCHER, svgNodeFilter };
|
|
113
137
|
//# sourceMappingURL=taiga-ui-cdk-constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-constants.js","sources":["ng://@taiga-ui/cdk/constants/always-false-handler.ts","ng://@taiga-ui/cdk/constants/always-true-handler.ts","ng://@taiga-ui/cdk/constants/browser.ts","ng://@taiga-ui/cdk/constants/empty.ts","ng://@taiga-ui/cdk/constants/stringify.ts","ng://@taiga-ui/cdk/constants/matcher.ts","ng://@taiga-ui/cdk/constants/parent-animation.ts","ng://@taiga-ui/cdk/constants/polling-time.ts","ng://@taiga-ui/cdk/constants/svg-node-filter.ts","ng://@taiga-ui/cdk/constants/unicode-chars.ts","ng://@taiga-ui/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["/**\n * Handler that always returns `false`.\n */\nexport const ALWAYS_FALSE_HANDLER = (): false => false;\n","/**\n * Handler that always returns `true`.\n */\nexport const ALWAYS_TRUE_HANDLER = (): true => true;\n","export const CHROMIUM_EDGE_START_VERSION = 79;\n","import {QueryList} from '@angular/core';\nimport {ValidatorFn} from '@angular/forms';\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\n/** @deprecated use Validators.nullValidator */\nexport const EMPTY_VALIDATOR: ValidatorFn = () => null;\n","import {TuiStringHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Default method to turn arbitrary object into string\n */\nexport const TUI_DEFAULT_STRINGIFY: TuiStringHandler<any> = item => String(item);\n","import {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nimport {TUI_DEFAULT_STRINGIFY} from './stringify';\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = TUI_DEFAULT_STRINGIFY,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = TUI_DEFAULT_STRINGIFY,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n","import {animateChild, query, style, transition, trigger} from '@angular/animations';\n\nexport const TUI_PARENT_ANIMATION = trigger('tuiParentAnimation', [\n transition('* => void', [\n style({overflow: 'hidden'}),\n query('@*', [animateChild()], {optional: true}),\n ]),\n]);\n","export const POLLING_TIME = 1000 / 15;\n","// Filtering SVGElements for TreeWalker\n// Filter must be a function in IE, other modern browsers are compliant to this format\nexport const svgNodeFilter: NodeFilter = ((node: Node) =>\n 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT) as any;\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = '\\u00A0';\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}.\n */\nexport const CHAR_EN_DASH = '\\u2013';\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = '\\u2022';\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = '\\u2026';\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = '\\u00A4';\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = '\\u200b';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;;;IAGa,oBAAoB,GAAG,cAAa,OAAA,KAAK;;ACHtD;;;IAGa,mBAAmB,GAAG,cAAY,OAAA,IAAI;;ICHtC,2BAA2B,GAAG;;ACG3C;;;;;IAKa,WAAW,GAAG,IAAI,SAAS,GAAQ;IACnC,WAAW,GAAO,GAAG;IACrB,cAAc,GAA6B,gBAAS;AACjE;IACa,eAAe,GAAgB,cAAM,OAAA,IAAI;;ACVtD;;;IAGa,qBAAqB,GAA0B,UAAA,IAAI,IAAI,OAAA,MAAM,CAAC,IAAI,CAAC;;ACDhF;;;;;;IAMa,mBAAmB,GAAG,UAC/B,IAAO,EACP,MAAc,EACd,SAAwD;IAAxD,0BAAA,EAAA,iCAAwD;IAC9C,OAAA,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAA5D,EAA6D;AAE3E;;;;;;IAMa,kBAAkB,GAAG,UAC9B,IAAO,EACP,MAAc,EACd,SAAwD;IAAxD,0BAAA,EAAA,iCAAwD;IAC9C,OAAA,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE;AAAtD,EAAuD;AAErE;;;;;;;IAOa,4BAA4B,GAAgC,UAAC,KAAK,EAAE,KAAK;IAClF,OAAA,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;AAA1C,EAA2C;AAE/C,SAAS,SAAS,CAAC,KAAc,EAAE,KAAc;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1F;;ICtCa,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,EAAE;IAC9D,UAAU,CAAC,WAAW,EAAE;QACpB,KAAK,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;KAClD,CAAC;CACL;;ICPY,YAAY,GAAG,IAAI,GAAG;;ACAnC;AACA;IACa,aAAa,IAAgB,UAAC,IAAU;IACjD,OAAA,iBAAiB,IAAI,IAAI;UACnB,UAAU,CAAC,aAAa;UACxB,UAAU,CAAC,aAAa;AAF9B,CAE8B;;ACLlC;;;IAGa,mBAAmB,GAAG,SAAS;AAE5C
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-constants.js","sources":["ng://@taiga-ui/cdk/constants/always-false-handler.ts","ng://@taiga-ui/cdk/constants/always-true-handler.ts","ng://@taiga-ui/cdk/constants/browser.ts","ng://@taiga-ui/cdk/constants/empty.ts","ng://@taiga-ui/cdk/constants/stringify.ts","ng://@taiga-ui/cdk/constants/matcher.ts","ng://@taiga-ui/cdk/constants/parent-animation.ts","ng://@taiga-ui/cdk/constants/polling-time.ts","ng://@taiga-ui/cdk/constants/svg-node-filter.ts","ng://@taiga-ui/cdk/constants/unicode-chars.ts","ng://@taiga-ui/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["/**\n * Handler that always returns `false`.\n */\nexport const ALWAYS_FALSE_HANDLER = (): false => false;\n","/**\n * Handler that always returns `true`.\n */\nexport const ALWAYS_TRUE_HANDLER = (): true => true;\n","export const CHROMIUM_EDGE_START_VERSION = 79;\n","import {QueryList} from '@angular/core';\nimport {ValidatorFn} from '@angular/forms';\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\n/** @deprecated use Validators.nullValidator */\nexport const EMPTY_VALIDATOR: ValidatorFn = () => null;\n","import {TuiStringHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Default method to turn arbitrary object into string\n */\nexport const TUI_DEFAULT_STRINGIFY: TuiStringHandler<any> = item => String(item);\n","import {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nimport {TUI_DEFAULT_STRINGIFY} from './stringify';\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = TUI_DEFAULT_STRINGIFY,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = TUI_DEFAULT_STRINGIFY,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n","import {animateChild, query, style, transition, trigger} from '@angular/animations';\n\nexport const TUI_PARENT_ANIMATION = trigger('tuiParentAnimation', [\n transition('* => void', [\n style({overflow: 'hidden'}),\n query('@*', [animateChild()], {optional: true}),\n ]),\n]);\n","export const POLLING_TIME = 1000 / 15;\n","// Filtering SVGElements for TreeWalker\n// Filter must be a function in IE, other modern browsers are compliant to this format\nexport const svgNodeFilter: NodeFilter = ((node: Node) =>\n 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT) as any;\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = '\\u00A0';\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = '\\u2013';\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = '\\u2014';\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words or as minus sign before digits.\n * @example well-behaved, -42\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = '\\u002D';\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = '\\u002B';\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = '\\u2022';\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = '\\u2026';\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = '\\u00A4';\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = '\\u200b';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;;;IAGa,oBAAoB,GAAG,cAAa,OAAA,KAAK;;ACHtD;;;IAGa,mBAAmB,GAAG,cAAY,OAAA,IAAI;;ICHtC,2BAA2B,GAAG;;ACG3C;;;;;IAKa,WAAW,GAAG,IAAI,SAAS,GAAQ;IACnC,WAAW,GAAO,GAAG;IACrB,cAAc,GAA6B,gBAAS;AACjE;IACa,eAAe,GAAgB,cAAM,OAAA,IAAI;;ACVtD;;;IAGa,qBAAqB,GAA0B,UAAA,IAAI,IAAI,OAAA,MAAM,CAAC,IAAI,CAAC;;ACDhF;;;;;;IAMa,mBAAmB,GAAG,UAC/B,IAAO,EACP,MAAc,EACd,SAAwD;IAAxD,0BAAA,EAAA,iCAAwD;IAC9C,OAAA,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAA5D,EAA6D;AAE3E;;;;;;IAMa,kBAAkB,GAAG,UAC9B,IAAO,EACP,MAAc,EACd,SAAwD;IAAxD,0BAAA,EAAA,iCAAwD;IAC9C,OAAA,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE;AAAtD,EAAuD;AAErE;;;;;;;IAOa,4BAA4B,GAAgC,UAAC,KAAK,EAAE,KAAK;IAClF,OAAA,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;AAA1C,EAA2C;AAE/C,SAAS,SAAS,CAAC,KAAc,EAAE,KAAc;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1F;;ICtCa,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,EAAE;IAC9D,UAAU,CAAC,WAAW,EAAE;QACpB,KAAK,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;KAClD,CAAC;CACL;;ICPY,YAAY,GAAG,IAAI,GAAG;;ACAnC;AACA;IACa,aAAa,IAAgB,UAAC,IAAU;IACjD,OAAA,iBAAiB,IAAI,IAAI;UACnB,UAAU,CAAC,aAAa;UACxB,UAAU,CAAC,aAAa;AAF9B,CAE8B;;ACLlC;;;IAGa,mBAAmB,GAAG,SAAS;AAE5C;;;;;;;IAOa,YAAY,GAAG,SAAS;AAErC;;;;;;;IAOa,YAAY,GAAG,SAAS;AAErC;;;;;;;IAOa,WAAW,GAAG,SAAS;AAEpC;;;IAGa,SAAS,GAAG,SAAS;AAElC;;;IAGa,WAAW,GAAG,SAAS;AAEpC;;;IAGa,aAAa,GAAG,SAAS;AAEtC;;;IAGa,kBAAkB,GAAG,SAAS;AAE3C;;;IAGa,qBAAqB,GAAG;;ACvDrC;;;;;;"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { __decorate, __extends, __param } from 'tslib';
|
|
1
|
+
import { __decorate, __extends, __param, __values } from 'tslib';
|
|
2
2
|
import { ElementRef, Directive, Optional, Self, Inject, Renderer2, NgZone, InjectionToken, inject, Input, NgModule } from '@angular/core';
|
|
3
|
-
import { ANIMATION_FRAME } from '@ng-web-apis/common';
|
|
4
|
-
import { TUI_FOCUSABLE_ITEM_ACCESSOR,
|
|
3
|
+
import { ANIMATION_FRAME, WINDOW } from '@ng-web-apis/common';
|
|
4
|
+
import { TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_IOS } from '@taiga-ui/cdk/tokens';
|
|
5
5
|
import { POLLING_TIME } from '@taiga-ui/cdk/constants';
|
|
6
6
|
import { race, timer, Observable } from 'rxjs';
|
|
7
7
|
import { throttleTime, map, skipWhile, take } from 'rxjs/operators';
|
|
8
|
+
import { px } from '@taiga-ui/cdk/utils';
|
|
8
9
|
|
|
9
10
|
var AbstractTuiAutofocusHandler = /** @class */ (function () {
|
|
10
11
|
function AbstractTuiAutofocusHandler(tuiFocusableComponent, elementRef) {
|
|
@@ -71,12 +72,15 @@ var TuiDefaultAutofocusHandler = /** @class */ (function (_super) {
|
|
|
71
72
|
return TuiDefaultAutofocusHandler;
|
|
72
73
|
}(AbstractTuiAutofocusHandler));
|
|
73
74
|
|
|
75
|
+
// @dynamic
|
|
74
76
|
var TuiIosAutofocusHandler = /** @class */ (function (_super) {
|
|
75
77
|
__extends(TuiIosAutofocusHandler, _super);
|
|
76
|
-
function TuiIosAutofocusHandler(tuiFocusableComponent, elementRef, renderer, ngZone) {
|
|
78
|
+
function TuiIosAutofocusHandler(tuiFocusableComponent, elementRef, renderer, ngZone, windowRef) {
|
|
77
79
|
var _this = _super.call(this, tuiFocusableComponent, elementRef) || this;
|
|
78
80
|
_this.renderer = renderer;
|
|
79
81
|
_this.ngZone = ngZone;
|
|
82
|
+
_this.windowRef = windowRef;
|
|
83
|
+
_this.patchCssStyles();
|
|
80
84
|
return _this;
|
|
81
85
|
}
|
|
82
86
|
TuiIosAutofocusHandler.prototype.setFocus = function () {
|
|
@@ -91,43 +95,99 @@ var TuiIosAutofocusHandler = /** @class */ (function (_super) {
|
|
|
91
95
|
TuiIosAutofocusHandler.prototype.iosWebkitAutofocus = function () {
|
|
92
96
|
var _this = this;
|
|
93
97
|
var _a;
|
|
94
|
-
var fakeInput = this.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
var blurHandler = function () { return fakeInput.focus(); };
|
|
98
|
+
var fakeInput = this.makeFakeInput();
|
|
99
|
+
var duration = this.getDurationTimeBeforeFocus();
|
|
100
|
+
var fakeFocusTimeoutId = 0;
|
|
101
|
+
var elementFocusTimeoutId = 0;
|
|
102
|
+
var blurHandler = function () { return fakeInput.focus({ preventScroll: true }); };
|
|
99
103
|
var focusHandler = function () {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
fakeInput.removeEventListener('blur', blurHandler);
|
|
108
|
-
fakeInput.removeEventListener('focus', focusHandler);
|
|
104
|
+
clearTimeout(fakeFocusTimeoutId);
|
|
105
|
+
fakeFocusTimeoutId = _this.windowRef.setTimeout(function () {
|
|
106
|
+
clearTimeout(elementFocusTimeoutId);
|
|
107
|
+
fakeInput.removeEventListener('blur', blurHandler);
|
|
108
|
+
fakeInput.removeEventListener('focus', focusHandler);
|
|
109
|
+
elementFocusTimeoutId = _this.windowRef.setTimeout(function () {
|
|
110
|
+
_this.element.focus({ preventScroll: false });
|
|
109
111
|
fakeInput.remove();
|
|
110
|
-
});
|
|
112
|
+
}, duration);
|
|
111
113
|
});
|
|
112
114
|
};
|
|
113
|
-
/**
|
|
114
|
-
* @note: ping-pong eager strategy hack
|
|
115
|
-
* After creating an element and bringing it into DOM,
|
|
116
|
-
* the browser automatically focuses on the invisible element.
|
|
117
|
-
* And then, after focus is triggered, we try to focus on target element, and if we managed to refocus,
|
|
118
|
-
* then we try to focus again on an invisible element, so that the keyboard slowly appears.
|
|
119
|
-
* This ping pong allows the keyboard to not overlap the modal window.
|
|
120
|
-
*/
|
|
121
115
|
fakeInput.addEventListener('blur', blurHandler, { once: true });
|
|
122
116
|
fakeInput.addEventListener('focus', focusHandler);
|
|
123
|
-
(
|
|
124
|
-
|
|
117
|
+
if (this.insideDialog()) {
|
|
118
|
+
this.windowRef.document.body.appendChild(fakeInput);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
(_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.appendChild(fakeInput);
|
|
122
|
+
}
|
|
123
|
+
fakeInput.focus({ preventScroll: true });
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* @note:
|
|
127
|
+
* emulate textfield position in layout with cursor
|
|
128
|
+
* before focus to real textfield element
|
|
129
|
+
*/
|
|
130
|
+
TuiIosAutofocusHandler.prototype.makeFakeInput = function () {
|
|
131
|
+
var fakeInput = this.renderer.createElement('input');
|
|
132
|
+
var rect = this.element.getBoundingClientRect();
|
|
133
|
+
fakeInput.style.height = px(rect.height);
|
|
134
|
+
fakeInput.style.width = px(rect.width / 2);
|
|
135
|
+
fakeInput.style.position = 'fixed';
|
|
136
|
+
fakeInput.style.opacity = '0';
|
|
137
|
+
fakeInput.style.fontSize = px(16); // disable possible auto zoom
|
|
138
|
+
fakeInput.readOnly = true; // prevent keyboard for fake input
|
|
139
|
+
// @note: emulate position cursor before focus to real textfield element
|
|
140
|
+
fakeInput.style.top = px(rect.top);
|
|
141
|
+
fakeInput.style.left = px(rect.left);
|
|
142
|
+
return fakeInput;
|
|
143
|
+
};
|
|
144
|
+
TuiIosAutofocusHandler.prototype.getDurationTimeBeforeFocus = function () {
|
|
145
|
+
return (parseFloat(this.windowRef
|
|
146
|
+
.getComputedStyle(this.element)
|
|
147
|
+
.getPropertyValue('--tui-duration')) || 0);
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* @note:
|
|
151
|
+
* unfortunately, in older versions of iOS
|
|
152
|
+
* there is a bug that the fake input cursor
|
|
153
|
+
* will move along with the dialog animation
|
|
154
|
+
* and then that dialog will be shaking
|
|
155
|
+
*/
|
|
156
|
+
TuiIosAutofocusHandler.prototype.insideDialog = function () {
|
|
157
|
+
return !!this.element.closest('tui-dialog');
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* @note:
|
|
161
|
+
* This is necessary so that the viewport isn't recalculated
|
|
162
|
+
* and then the dialogs don't shake.
|
|
163
|
+
*
|
|
164
|
+
* Also, we need to fixed height viewport,
|
|
165
|
+
* so that when focusing the dialogs don't shake
|
|
166
|
+
*/
|
|
167
|
+
TuiIosAutofocusHandler.prototype.patchCssStyles = function () {
|
|
168
|
+
var e_1, _a;
|
|
169
|
+
var documentRef = this.windowRef.document;
|
|
170
|
+
try {
|
|
171
|
+
for (var _b = __values([documentRef.documentElement, documentRef.body]), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
172
|
+
var element = _c.value;
|
|
173
|
+
element.style.setProperty('overflow', 'auto');
|
|
174
|
+
element.style.setProperty('height', '100%');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
178
|
+
finally {
|
|
179
|
+
try {
|
|
180
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
181
|
+
}
|
|
182
|
+
finally { if (e_1) throw e_1.error; }
|
|
183
|
+
}
|
|
125
184
|
};
|
|
126
185
|
TuiIosAutofocusHandler.ctorParameters = function () { return [
|
|
127
186
|
{ type: undefined, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [TUI_FOCUSABLE_ITEM_ACCESSOR,] }] },
|
|
128
187
|
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
|
|
129
188
|
{ type: Renderer2, decorators: [{ type: Inject, args: [Renderer2,] }] },
|
|
130
|
-
{ type: NgZone, decorators: [{ type: Inject, args: [NgZone,] }] }
|
|
189
|
+
{ type: NgZone, decorators: [{ type: Inject, args: [NgZone,] }] },
|
|
190
|
+
{ type: Window, decorators: [{ type: Inject, args: [WINDOW,] }] }
|
|
131
191
|
]; };
|
|
132
192
|
TuiIosAutofocusHandler = __decorate([
|
|
133
193
|
Directive(),
|
|
@@ -136,16 +196,17 @@ var TuiIosAutofocusHandler = /** @class */ (function (_super) {
|
|
|
136
196
|
__param(0, Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)),
|
|
137
197
|
__param(1, Inject(ElementRef)),
|
|
138
198
|
__param(2, Inject(Renderer2)),
|
|
139
|
-
__param(3, Inject(NgZone))
|
|
199
|
+
__param(3, Inject(NgZone)),
|
|
200
|
+
__param(4, Inject(WINDOW))
|
|
140
201
|
], TuiIosAutofocusHandler);
|
|
141
202
|
return TuiIosAutofocusHandler;
|
|
142
203
|
}(AbstractTuiAutofocusHandler));
|
|
143
204
|
|
|
144
205
|
var TUI_AUTOFOCUS_HANDLER = new InjectionToken('Autofocusing handler');
|
|
145
206
|
// TODO: 3.0 remove in ivy compilation
|
|
146
|
-
function tuiAutofocusHandlerFactory(tuiFocusableComponent, elementRef, animationFrame$, renderer, ngZone) {
|
|
147
|
-
return inject(
|
|
148
|
-
? new TuiIosAutofocusHandler(tuiFocusableComponent, elementRef, renderer, ngZone)
|
|
207
|
+
function tuiAutofocusHandlerFactory(tuiFocusableComponent, elementRef, animationFrame$, renderer, ngZone, windowRef) {
|
|
208
|
+
return inject(TUI_IS_IOS)
|
|
209
|
+
? new TuiIosAutofocusHandler(tuiFocusableComponent, elementRef, renderer, ngZone, windowRef)
|
|
149
210
|
: new TuiDefaultAutofocusHandler(tuiFocusableComponent, elementRef, animationFrame$);
|
|
150
211
|
}
|
|
151
212
|
var TUI_AUTOFOCUS_PROVIDERS = [
|
|
@@ -159,6 +220,7 @@ var TUI_AUTOFOCUS_PROVIDERS = [
|
|
|
159
220
|
ANIMATION_FRAME,
|
|
160
221
|
Renderer2,
|
|
161
222
|
NgZone,
|
|
223
|
+
WINDOW,
|
|
162
224
|
],
|
|
163
225
|
},
|
|
164
226
|
];
|