@taiga-ui/core 2.31.0 → 2.32.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.
Files changed (169) hide show
  1. package/abstract/abstract-hint-options.d.ts +7 -0
  2. package/abstract/abstract-hint.d.ts +5 -4
  3. package/abstract/index.d.ts +1 -0
  4. package/abstract/taiga-ui-core-abstract.metadata.json +1 -1
  5. package/bundles/taiga-ui-core-abstract.umd.js +13 -4
  6. package/bundles/taiga-ui-core-abstract.umd.js.map +1 -1
  7. package/bundles/taiga-ui-core-abstract.umd.min.js +1 -1
  8. package/bundles/taiga-ui-core-abstract.umd.min.js.map +1 -1
  9. package/bundles/taiga-ui-core-components-dialog.umd.js +1 -1
  10. package/bundles/taiga-ui-core-components-dialog.umd.min.js +1 -1
  11. package/bundles/taiga-ui-core-components-dialog.umd.min.js.map +1 -1
  12. package/bundles/taiga-ui-core-components-link.umd.js +2 -2
  13. package/bundles/taiga-ui-core-components-link.umd.js.map +1 -1
  14. package/bundles/taiga-ui-core-components-link.umd.min.js +1 -1
  15. package/bundles/taiga-ui-core-components-link.umd.min.js.map +1 -1
  16. package/bundles/taiga-ui-core-components-primitive-textfield.umd.js +30 -7
  17. package/bundles/taiga-ui-core-components-primitive-textfield.umd.js.map +1 -1
  18. package/bundles/taiga-ui-core-components-primitive-textfield.umd.min.js +1 -1
  19. package/bundles/taiga-ui-core-components-primitive-textfield.umd.min.js.map +1 -1
  20. package/bundles/taiga-ui-core-components-scroll-controls.umd.js +1 -1
  21. package/bundles/taiga-ui-core-components-scroll-controls.umd.min.js +2 -2
  22. package/bundles/taiga-ui-core-components-scroll-controls.umd.min.js.map +1 -1
  23. package/bundles/taiga-ui-core-components-tooltip.umd.js +23 -13
  24. package/bundles/taiga-ui-core-components-tooltip.umd.js.map +1 -1
  25. package/bundles/taiga-ui-core-components-tooltip.umd.min.js +2 -2
  26. package/bundles/taiga-ui-core-components-tooltip.umd.min.js.map +1 -1
  27. package/bundles/taiga-ui-core-constants.umd.js +1 -1
  28. package/bundles/taiga-ui-core-constants.umd.js.map +1 -1
  29. package/bundles/taiga-ui-core-constants.umd.min.js +1 -1
  30. package/bundles/taiga-ui-core-constants.umd.min.js.map +1 -1
  31. package/bundles/taiga-ui-core-directives-hint-controller.umd.js +17 -12
  32. package/bundles/taiga-ui-core-directives-hint-controller.umd.js.map +1 -1
  33. package/bundles/taiga-ui-core-directives-hint-controller.umd.min.js +2 -2
  34. package/bundles/taiga-ui-core-directives-hint-controller.umd.min.js.map +1 -1
  35. package/bundles/taiga-ui-core-directives-hint.umd.js +20 -6
  36. package/bundles/taiga-ui-core-directives-hint.umd.js.map +1 -1
  37. package/bundles/taiga-ui-core-directives-hint.umd.min.js +1 -1
  38. package/bundles/taiga-ui-core-directives-hint.umd.min.js.map +1 -1
  39. package/bundles/taiga-ui-core-directives-manual-hint.umd.js +15 -4
  40. package/bundles/taiga-ui-core-directives-manual-hint.umd.js.map +1 -1
  41. package/bundles/taiga-ui-core-directives-manual-hint.umd.min.js +1 -1
  42. package/bundles/taiga-ui-core-directives-manual-hint.umd.min.js.map +1 -1
  43. package/bundles/taiga-ui-core-directives-pointer-hint.umd.js +17 -6
  44. package/bundles/taiga-ui-core-directives-pointer-hint.umd.js.map +1 -1
  45. package/bundles/taiga-ui-core-directives-pointer-hint.umd.min.js +1 -1
  46. package/bundles/taiga-ui-core-directives-pointer-hint.umd.min.js.map +1 -1
  47. package/bundles/taiga-ui-core-utils-mask.umd.js +1 -1
  48. package/bundles/taiga-ui-core-utils-mask.umd.js.map +1 -1
  49. package/bundles/taiga-ui-core-utils-mask.umd.min.js +1 -1
  50. package/bundles/taiga-ui-core-utils-mask.umd.min.js.map +1 -1
  51. package/components/dialog/taiga-ui-core-components-dialog.metadata.json +1 -1
  52. package/components/link/taiga-ui-core-components-link.metadata.json +1 -1
  53. package/components/primitive-textfield/index.d.ts +1 -0
  54. package/components/primitive-textfield/primitive-textfield-options.d.ts +11 -0
  55. package/components/primitive-textfield/primitive-textfield.component.d.ts +7 -4
  56. package/components/primitive-textfield/taiga-ui-core-components-primitive-textfield.metadata.json +1 -1
  57. package/components/scroll-controls/taiga-ui-core-components-scroll-controls.metadata.json +1 -1
  58. package/components/tooltip/taiga-ui-core-components-tooltip.metadata.json +1 -1
  59. package/components/tooltip/tooltip.component.d.ts +9 -6
  60. package/constants/taiga-ui-core-constants.metadata.json +1 -1
  61. package/constants/version.d.ts +1 -1
  62. package/directives/hint/hint-options.d.ts +12 -0
  63. package/directives/hint/hint.directive.d.ts +5 -3
  64. package/directives/hint/index.d.ts +1 -0
  65. package/directives/hint/taiga-ui-core-directives-hint.metadata.json +1 -1
  66. package/directives/hint-controller/hint-controller.directive.d.ts +7 -5
  67. package/directives/hint-controller/taiga-ui-core-directives-hint-controller.metadata.json +1 -1
  68. package/directives/manual-hint/index.d.ts +1 -0
  69. package/directives/manual-hint/manual-hint-options.d.ts +6 -0
  70. package/directives/manual-hint/manual-hint.directive.d.ts +3 -1
  71. package/directives/manual-hint/taiga-ui-core-directives-manual-hint.metadata.json +1 -1
  72. package/directives/pointer-hint/index.d.ts +1 -0
  73. package/directives/pointer-hint/pointer-hint-options.d.ts +9 -0
  74. package/directives/pointer-hint/pointer-hint.directive.d.ts +5 -3
  75. package/directives/pointer-hint/taiga-ui-core-directives-pointer-hint.metadata.json +1 -1
  76. package/esm2015/abstract/abstract-hint-options.js +6 -0
  77. package/esm2015/abstract/abstract-hint.js +7 -5
  78. package/esm2015/abstract/index.js +2 -1
  79. package/esm2015/components/dialog/dialog.component.js +1 -1
  80. package/esm2015/components/link/link.component.js +3 -3
  81. package/esm2015/components/primitive-textfield/index.js +2 -1
  82. package/esm2015/components/primitive-textfield/primitive-textfield-options.js +12 -0
  83. package/esm2015/components/primitive-textfield/primitive-textfield.component.js +18 -8
  84. package/esm2015/components/scroll-controls/scroll-controls.component.js +1 -1
  85. package/esm2015/components/tooltip/tooltip.component.js +16 -9
  86. package/esm2015/components/tooltip/tooltip.module.js +3 -2
  87. package/esm2015/constants/version.js +2 -2
  88. package/esm2015/directives/hint/hint-options.js +10 -0
  89. package/esm2015/directives/hint/hint.directive.js +11 -7
  90. package/esm2015/directives/hint/index.js +2 -1
  91. package/esm2015/directives/hint-controller/hint-controller.directive.js +16 -10
  92. package/esm2015/directives/hint-controller/hint-controller.token.js +4 -3
  93. package/esm2015/directives/manual-hint/index.js +2 -1
  94. package/esm2015/directives/manual-hint/manual-hint-options.js +8 -0
  95. package/esm2015/directives/manual-hint/manual-hint.directive.js +9 -5
  96. package/esm2015/directives/pointer-hint/index.js +2 -1
  97. package/esm2015/directives/pointer-hint/pointer-hint-options.js +8 -0
  98. package/esm2015/directives/pointer-hint/pointer-hint.directive.js +11 -7
  99. package/esm2015/utils/mask/create-number-mask.js +2 -2
  100. package/esm5/abstract/abstract-hint-options.js +6 -0
  101. package/esm5/abstract/abstract-hint.js +7 -5
  102. package/esm5/abstract/index.js +2 -1
  103. package/esm5/components/dialog/dialog.component.js +1 -1
  104. package/esm5/components/link/link.component.js +3 -3
  105. package/esm5/components/primitive-textfield/index.js +2 -1
  106. package/esm5/components/primitive-textfield/primitive-textfield-options.js +12 -0
  107. package/esm5/components/primitive-textfield/primitive-textfield.component.js +18 -8
  108. package/esm5/components/scroll-controls/scroll-controls.component.js +1 -1
  109. package/esm5/components/tooltip/tooltip.component.js +20 -9
  110. package/esm5/components/tooltip/tooltip.module.js +3 -2
  111. package/esm5/constants/version.js +2 -2
  112. package/esm5/directives/hint/hint-options.js +11 -0
  113. package/esm5/directives/hint/hint.directive.js +11 -7
  114. package/esm5/directives/hint/index.js +2 -1
  115. package/esm5/directives/hint-controller/hint-controller.directive.js +16 -10
  116. package/esm5/directives/hint-controller/hint-controller.token.js +4 -3
  117. package/esm5/directives/manual-hint/index.js +2 -1
  118. package/esm5/directives/manual-hint/manual-hint-options.js +9 -0
  119. package/esm5/directives/manual-hint/manual-hint.directive.js +9 -5
  120. package/esm5/directives/pointer-hint/index.js +2 -1
  121. package/esm5/directives/pointer-hint/pointer-hint-options.js +9 -0
  122. package/esm5/directives/pointer-hint/pointer-hint.directive.js +11 -7
  123. package/esm5/utils/mask/create-number-mask.js +2 -2
  124. package/fesm2015/taiga-ui-core-abstract.js +13 -5
  125. package/fesm2015/taiga-ui-core-abstract.js.map +1 -1
  126. package/fesm2015/taiga-ui-core-components-dialog.js +1 -1
  127. package/fesm2015/taiga-ui-core-components-link.js +2 -2
  128. package/fesm2015/taiga-ui-core-components-link.js.map +1 -1
  129. package/fesm2015/taiga-ui-core-components-primitive-textfield.js +29 -9
  130. package/fesm2015/taiga-ui-core-components-primitive-textfield.js.map +1 -1
  131. package/fesm2015/taiga-ui-core-components-scroll-controls.js +1 -1
  132. package/fesm2015/taiga-ui-core-components-tooltip.js +17 -9
  133. package/fesm2015/taiga-ui-core-components-tooltip.js.map +1 -1
  134. package/fesm2015/taiga-ui-core-constants.js +1 -1
  135. package/fesm2015/taiga-ui-core-constants.js.map +1 -1
  136. package/fesm2015/taiga-ui-core-directives-hint-controller.js +16 -10
  137. package/fesm2015/taiga-ui-core-directives-hint-controller.js.map +1 -1
  138. package/fesm2015/taiga-ui-core-directives-hint.js +20 -9
  139. package/fesm2015/taiga-ui-core-directives-hint.js.map +1 -1
  140. package/fesm2015/taiga-ui-core-directives-manual-hint.js +16 -7
  141. package/fesm2015/taiga-ui-core-directives-manual-hint.js.map +1 -1
  142. package/fesm2015/taiga-ui-core-directives-pointer-hint.js +18 -9
  143. package/fesm2015/taiga-ui-core-directives-pointer-hint.js.map +1 -1
  144. package/fesm2015/taiga-ui-core-utils-mask.js +1 -1
  145. package/fesm2015/taiga-ui-core-utils-mask.js.map +1 -1
  146. package/fesm5/taiga-ui-core-abstract.js +13 -5
  147. package/fesm5/taiga-ui-core-abstract.js.map +1 -1
  148. package/fesm5/taiga-ui-core-components-dialog.js +1 -1
  149. package/fesm5/taiga-ui-core-components-link.js +2 -2
  150. package/fesm5/taiga-ui-core-components-link.js.map +1 -1
  151. package/fesm5/taiga-ui-core-components-primitive-textfield.js +29 -9
  152. package/fesm5/taiga-ui-core-components-primitive-textfield.js.map +1 -1
  153. package/fesm5/taiga-ui-core-components-scroll-controls.js +1 -1
  154. package/fesm5/taiga-ui-core-components-tooltip.js +21 -9
  155. package/fesm5/taiga-ui-core-components-tooltip.js.map +1 -1
  156. package/fesm5/taiga-ui-core-constants.js +1 -1
  157. package/fesm5/taiga-ui-core-constants.js.map +1 -1
  158. package/fesm5/taiga-ui-core-directives-hint-controller.js +16 -10
  159. package/fesm5/taiga-ui-core-directives-hint-controller.js.map +1 -1
  160. package/fesm5/taiga-ui-core-directives-hint.js +21 -10
  161. package/fesm5/taiga-ui-core-directives-hint.js.map +1 -1
  162. package/fesm5/taiga-ui-core-directives-manual-hint.js +17 -8
  163. package/fesm5/taiga-ui-core-directives-manual-hint.js.map +1 -1
  164. package/fesm5/taiga-ui-core-directives-pointer-hint.js +19 -10
  165. package/fesm5/taiga-ui-core-directives-pointer-hint.js.map +1 -1
  166. package/fesm5/taiga-ui-core-utils-mask.js +1 -1
  167. package/fesm5/taiga-ui-core-utils-mask.js.map +1 -1
  168. package/package.json +10 -10
  169. package/styles/mixins/textfield.less +7 -0
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-directives-pointer-hint.js","sources":["ng://@taiga-ui/core/directives/pointer-hint/pointer-hint.directive.ts","ng://@taiga-ui/core/directives/pointer-hint/pointer-hint.module.ts","ng://@taiga-ui/core/directives/pointer-hint/taiga-ui-core-directives-pointer-hint.ts"],"sourcesContent":["import {Directive, ElementRef, Inject, Input} from '@angular/core';\nimport {\n tuiDefaultProp,\n TuiDestroyService,\n TuiHoveredService,\n tuiRequiredSetter,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {TuiHintService} from '@taiga-ui/core/services';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable, of} from 'rxjs';\nimport {\n delay,\n distinctUntilChanged,\n filter,\n startWith,\n switchMap,\n takeUntil,\n} from 'rxjs/operators';\n\n@Directive({\n selector: '[tuiPointerHint]:not(ng-container)',\n providers: [TuiDestroyService],\n})\nexport class TuiPointerHintDirective extends AbstractTuiHint {\n private currentMouseRect = this.mousePositionToClientRect();\n\n @Input()\n @tuiDefaultProp()\n tuiHintShowDelay = 0;\n\n @Input()\n @tuiDefaultProp()\n tuiHintHideDelay = 0;\n\n // TODO: Remove null in 3.0\n @Input()\n @tuiRequiredSetter()\n set tuiPointerHint(value: PolymorpheusContent | null) {\n if (!value) {\n this.hideTooltip();\n this.content = '';\n\n return;\n }\n\n this.content = value;\n }\n\n content: PolymorpheusContent = '';\n\n constructor(\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(TuiHintService) hintService: TuiHintService,\n @Inject(TuiDestroyService)\n private readonly destroy$: TuiDestroyService,\n @Inject(TuiHoveredService) hoveredService: TuiHoveredService,\n ) {\n super(elementRef, hintService, null);\n\n const hint$ = hoveredService.createHovered$(this.elementRef.nativeElement).pipe(\n filter(() => !!this.content),\n startWith(false),\n distinctUntilChanged(),\n );\n\n hint$\n .pipe(\n switchMap(visible =>\n of(visible).pipe(\n delay(visible ? this.tuiHintShowDelay : this.tuiHintHideDelay),\n ),\n ),\n takeUntil(destroy$),\n )\n .subscribe({\n next: visible => {\n if (visible) {\n this.showTooltip();\n } else {\n this.hideTooltip();\n }\n },\n complete: () => {\n this.hideTooltip();\n },\n });\n\n this.initMouseMoveSubscription();\n }\n\n getElementClientRect(): ClientRect {\n return this.currentMouseRect;\n }\n\n private initMouseMoveSubscription() {\n const mouseMove$: Observable<MouseEvent> = typedFromEvent(\n this.elementRef.nativeElement,\n 'mousemove',\n );\n\n mouseMove$.pipe(takeUntil(this.destroy$)).subscribe(({clientX, clientY}) => {\n this.currentMouseRect = this.mousePositionToClientRect(clientX, clientY);\n });\n }\n\n private mousePositionToClientRect(x: number = 0, y: number = 0): ClientRect {\n return {\n left: x,\n right: x,\n top: y,\n bottom: y,\n width: 0,\n height: 0,\n };\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiPointerHintDirective} from './pointer-hint.directive';\n\n@NgModule({\n declarations: [TuiPointerHintDirective],\n exports: [TuiPointerHintDirective],\n})\nexport class TuiPointerHintModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;IAyB6C,2CAAe;IA2BxD,iCACwB,UAAmC,EAC/B,WAA2B,EAElC,QAA2B,EACjB,cAAiC;QALhE,YAOI,kBAAM,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,SA+BvC;QAlCoB,cAAQ,GAAR,QAAQ,CAAmB;QA9BxC,sBAAgB,GAAG,KAAI,CAAC,yBAAyB,EAAE,CAAC;QAI5D,sBAAgB,GAAG,CAAC,CAAC;QAIrB,sBAAgB,GAAG,CAAC,CAAC;QAgBrB,aAAO,GAAwB,EAAE,CAAC;QAW9B,IAAM,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAC3E,MAAM,CAAC,cAAM,OAAA,CAAC,CAAC,KAAI,CAAC,OAAO,GAAA,CAAC,EAC5B,SAAS,CAAC,KAAK,CAAC,EAChB,oBAAoB,EAAE,CACzB,CAAC;QAEF,KAAK;aACA,IAAI,CACD,SAAS,CAAC,UAAA,OAAO;YACb,OAAA,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CACZ,KAAK,CAAC,OAAO,GAAG,KAAI,CAAC,gBAAgB,GAAG,KAAI,CAAC,gBAAgB,CAAC,CACjE;SAAA,CACJ,EACD,SAAS,CAAC,QAAQ,CAAC,CACtB;aACA,SAAS,CAAC;YACP,IAAI,EAAE,UAAA,OAAO;gBACT,IAAI,OAAO,EAAE;oBACT,KAAI,CAAC,WAAW,EAAE,CAAC;iBACtB;qBAAM;oBACH,KAAI,CAAC,WAAW,EAAE,CAAC;iBACtB;aACJ;YACD,QAAQ,EAAE;gBACN,KAAI,CAAC,WAAW,EAAE,CAAC;aACtB;SACJ,CAAC,CAAC;QAEP,KAAI,CAAC,yBAAyB,EAAE,CAAC;;KACpC;IAnDD,sBAAI,mDAAc;;aAAlB,UAAmB,KAAiC;YAChD,IAAI,CAAC,KAAK,EAAE;gBACR,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;gBAElB,OAAO;aACV;YAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACxB;;;OAAA;IA4CD,sDAAoB,GAApB;QACI,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;IAEO,2DAAyB,GAAjC;QAAA,iBASC;QARG,IAAM,UAAU,GAA2B,cAAc,CACrD,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,WAAW,CACd,CAAC;QAEF,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,EAAkB;gBAAjB,oBAAO,EAAE,oBAAO;YAClE,KAAI,CAAC,gBAAgB,GAAG,KAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SAC5E,CAAC,CAAC;KACN;IAEO,2DAAyB,GAAjC,UAAkC,CAAa,EAAE,CAAa;QAA5B,kBAAA,EAAA,KAAa;QAAE,kBAAA,EAAA,KAAa;QAC1D,OAAO;YACH,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACZ,CAAC;KACL;;gBA/DmC,UAAU,uBAAzC,MAAM,SAAC,UAAU;gBACmB,cAAc,uBAAlD,MAAM,SAAC,cAAc;gBAEK,iBAAiB,uBAD3C,MAAM,SAAC,iBAAiB;gBAEkB,iBAAiB,uBAA3D,MAAM,SAAC,iBAAiB;;IA3B7B;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;qEACI;IAIrB;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;qEACI;IAKrB;QAFC,KAAK,EAAE;QACP,iBAAiB,EAAE;iEAUnB;IAvBQ,uBAAuB;QAJnC,SAAS,CAAC;YACP,QAAQ,EAAE,oCAAoC;YAC9C,SAAS,EAAE,CAAC,iBAAiB,CAAC;SACjC,CAAC;QA6BO,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,WAAA,MAAM,CAAC,cAAc,CAAC,CAAA;QACtB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAEzB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;OAhCrB,uBAAuB,CA4FnC;IAAD,8BAAC;CAAA,CA5F4C,eAAe;;;ICjB5D;KAAoC;IAAvB,oBAAoB;QAJhC,QAAQ,CAAC;YACN,YAAY,EAAE,CAAC,uBAAuB,CAAC;YACvC,OAAO,EAAE,CAAC,uBAAuB,CAAC;SACrC,CAAC;OACW,oBAAoB,CAAG;IAAD,2BAAC;CAApC;;ACRA;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-directives-pointer-hint.js","sources":["ng://@taiga-ui/core/directives/pointer-hint/pointer-hint-options.ts","ng://@taiga-ui/core/directives/pointer-hint/pointer-hint.directive.ts","ng://@taiga-ui/core/directives/pointer-hint/pointer-hint.module.ts","ng://@taiga-ui/core/directives/pointer-hint/taiga-ui-core-directives-pointer-hint.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\nimport {\n TUI_ABSTRACT_HINT_DEFAULT_OPTIONS,\n TuiAbstractHintOptions,\n} from '@taiga-ui/core/abstract';\n\nexport interface TuiPointerHintOptions extends TuiAbstractHintOptions {\n readonly tuiHintShowDelay: number;\n readonly tuiHintHideDelay: number;\n}\n\n/** Default values for pointer hint options */\nexport const TUI_POINTER_HINT_DEFAULT_OPTIONS: TuiPointerHintOptions = {\n ...TUI_ABSTRACT_HINT_DEFAULT_OPTIONS,\n tuiHintShowDelay: 0,\n tuiHintHideDelay: 0,\n};\n\nexport const TUI_POINTER_HINT_OPTIONS = new InjectionToken<TuiPointerHintOptions>(\n 'Default parameters for pointer hint directive',\n {\n factory: () => TUI_POINTER_HINT_DEFAULT_OPTIONS,\n },\n);\n","import {Directive, ElementRef, Inject, Input} from '@angular/core';\nimport {\n tuiDefaultProp,\n TuiDestroyService,\n TuiHoveredService,\n tuiRequiredSetter,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {TuiHintService} from '@taiga-ui/core/services';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable, of} from 'rxjs';\nimport {\n delay,\n distinctUntilChanged,\n filter,\n startWith,\n switchMap,\n takeUntil,\n} from 'rxjs/operators';\n\nimport {TUI_POINTER_HINT_OPTIONS, TuiPointerHintOptions} from './pointer-hint-options';\n\n@Directive({\n selector: '[tuiPointerHint]:not(ng-container)',\n providers: [TuiDestroyService],\n})\nexport class TuiPointerHintDirective extends AbstractTuiHint {\n private currentMouseRect = this.mousePositionToClientRect();\n\n @Input()\n @tuiDefaultProp()\n tuiHintShowDelay: TuiPointerHintOptions['tuiHintShowDelay'] =\n this.options.tuiHintShowDelay;\n\n @Input()\n @tuiDefaultProp()\n tuiHintHideDelay: TuiPointerHintOptions['tuiHintHideDelay'] =\n this.options.tuiHintHideDelay;\n\n // TODO: Remove null in 3.0\n @Input()\n @tuiRequiredSetter()\n set tuiPointerHint(value: PolymorpheusContent | null) {\n if (!value) {\n this.hideTooltip();\n this.content = '';\n\n return;\n }\n\n this.content = value;\n }\n\n content: PolymorpheusContent = '';\n\n constructor(\n @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(TuiHintService) hintService: TuiHintService,\n @Inject(TuiDestroyService)\n private readonly destroy$: TuiDestroyService,\n @Inject(TuiHoveredService) hoveredService: TuiHoveredService,\n @Inject(TUI_POINTER_HINT_OPTIONS)\n protected readonly options: TuiPointerHintOptions,\n ) {\n super(elementRef, hintService, null, options);\n\n const hint$ = hoveredService.createHovered$(this.elementRef.nativeElement).pipe(\n filter(() => !!this.content),\n startWith(false),\n distinctUntilChanged(),\n );\n\n hint$\n .pipe(\n switchMap(visible =>\n of(visible).pipe(\n delay(visible ? this.tuiHintShowDelay : this.tuiHintHideDelay),\n ),\n ),\n takeUntil(destroy$),\n )\n .subscribe({\n next: visible => {\n if (visible) {\n this.showTooltip();\n } else {\n this.hideTooltip();\n }\n },\n complete: () => {\n this.hideTooltip();\n },\n });\n\n this.initMouseMoveSubscription();\n }\n\n getElementClientRect(): ClientRect {\n return this.currentMouseRect;\n }\n\n private initMouseMoveSubscription() {\n const mouseMove$: Observable<MouseEvent> = typedFromEvent(\n this.elementRef.nativeElement,\n 'mousemove',\n );\n\n mouseMove$.pipe(takeUntil(this.destroy$)).subscribe(({clientX, clientY}) => {\n this.currentMouseRect = this.mousePositionToClientRect(clientX, clientY);\n });\n }\n\n private mousePositionToClientRect(x: number = 0, y: number = 0): ClientRect {\n return {\n left: x,\n right: x,\n top: y,\n bottom: y,\n width: 0,\n height: 0,\n };\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiPointerHintDirective} from './pointer-hint.directive';\n\n@NgModule({\n declarations: [TuiPointerHintDirective],\n exports: [TuiPointerHintDirective],\n})\nexport class TuiPointerHintModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAWA;IACa,gCAAgC,yBACtC,iCAAiC,KACpC,gBAAgB,EAAE,CAAC,EACnB,gBAAgB,EAAE,CAAC,IACrB;IAEW,wBAAwB,GAAG,IAAI,cAAc,CACtD,+CAA+C,EAC/C;IACI,OAAO,EAAE,cAAM,OAAA,gCAAgC,GAAA;CAClD;;;ICKwC,2CAAe;IA6BxD,iCACwB,UAAmC,EAC/B,WAA2B,EAElC,QAA2B,EACjB,cAAiC,EAEzC,OAA8B;QAPrD,YASI,kBAAM,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,SA+BhD;QApCoB,cAAQ,GAAR,QAAQ,CAAmB;QAGzB,aAAO,GAAP,OAAO,CAAuB;QAnC7C,sBAAgB,GAAG,KAAI,CAAC,yBAAyB,EAAE,CAAC;QAI5D,sBAAgB,GACZ,KAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAIlC,sBAAgB,GACZ,KAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAgBlC,aAAO,GAAwB,EAAE,CAAC;QAa9B,IAAM,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAC3E,MAAM,CAAC,cAAM,OAAA,CAAC,CAAC,KAAI,CAAC,OAAO,GAAA,CAAC,EAC5B,SAAS,CAAC,KAAK,CAAC,EAChB,oBAAoB,EAAE,CACzB,CAAC;QAEF,KAAK;aACA,IAAI,CACD,SAAS,CAAC,UAAA,OAAO;YACb,OAAA,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CACZ,KAAK,CAAC,OAAO,GAAG,KAAI,CAAC,gBAAgB,GAAG,KAAI,CAAC,gBAAgB,CAAC,CACjE;SAAA,CACJ,EACD,SAAS,CAAC,QAAQ,CAAC,CACtB;aACA,SAAS,CAAC;YACP,IAAI,EAAE,UAAA,OAAO;gBACT,IAAI,OAAO,EAAE;oBACT,KAAI,CAAC,WAAW,EAAE,CAAC;iBACtB;qBAAM;oBACH,KAAI,CAAC,WAAW,EAAE,CAAC;iBACtB;aACJ;YACD,QAAQ,EAAE;gBACN,KAAI,CAAC,WAAW,EAAE,CAAC;aACtB;SACJ,CAAC,CAAC;QAEP,KAAI,CAAC,yBAAyB,EAAE,CAAC;;KACpC;IArDD,sBAAI,mDAAc;;aAAlB,UAAmB,KAAiC;YAChD,IAAI,CAAC,KAAK,EAAE;gBACR,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;gBAElB,OAAO;aACV;YAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACxB;;;OAAA;IA8CD,sDAAoB,GAApB;QACI,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;IAEO,2DAAyB,GAAjC;QAAA,iBASC;QARG,IAAM,UAAU,GAA2B,cAAc,CACrD,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,WAAW,CACd,CAAC;QAEF,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,EAAkB;gBAAjB,oBAAO,EAAE,oBAAO;YAClE,KAAI,CAAC,gBAAgB,GAAG,KAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SAC5E,CAAC,CAAC;KACN;IAEO,2DAAyB,GAAjC,UAAkC,CAAa,EAAE,CAAa;QAA5B,kBAAA,EAAA,KAAa;QAAE,kBAAA,EAAA,KAAa;QAC1D,OAAO;YACH,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACZ,CAAC;KACL;;gBAjEmC,UAAU,uBAAzC,MAAM,SAAC,UAAU;gBACmB,cAAc,uBAAlD,MAAM,SAAC,cAAc;gBAEK,iBAAiB,uBAD3C,MAAM,SAAC,iBAAiB;gBAEkB,iBAAiB,uBAA3D,MAAM,SAAC,iBAAiB;gDACxB,MAAM,SAAC,wBAAwB;;IA9BpC;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;qEAEiB;IAIlC;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;qEAEiB;IAKlC;QAFC,KAAK,EAAE;QACP,iBAAiB,EAAE;iEAUnB;IAzBQ,uBAAuB;QAJnC,SAAS,CAAC;YACP,QAAQ,EAAE,oCAAoC;YAC9C,SAAS,EAAE,CAAC,iBAAiB,CAAC;SACjC,CAAC;QA+BO,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,WAAA,MAAM,CAAC,cAAc,CAAC,CAAA;QACtB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAEzB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;QACzB,WAAA,MAAM,CAAC,wBAAwB,CAAC,CAAA;OAnC5B,uBAAuB,CAgGnC;IAAD,8BAAC;CAAA,CAhG4C,eAAe;;;ICnB5D;KAAoC;IAAvB,oBAAoB;QAJhC,QAAQ,CAAC;YACN,YAAY,EAAE,CAAC,uBAAuB,CAAC;YACvC,OAAO,EAAE,CAAC,uBAAuB,CAAC;SACrC,CAAC;OACW,oBAAoB,CAAG;IAAD,2BAAC;CAApC;;ACRA;;;;;;"}
@@ -132,7 +132,7 @@ var NON_ZERO_DIGIT = /[1-9]/;
132
132
  function tuiCreateNumberMask(_a) {
133
133
  var _b = _a === void 0 ? {} : _a, _c = _b.allowDecimal, allowDecimal = _c === void 0 ? false : _c, _d = _b.decimalSymbol, decimalSymbol = _d === void 0 ? ',' : _d, _e = _b.thousandSymbol, thousandSymbol = _e === void 0 ? CHAR_NO_BREAK_SPACE : _e, _f = _b.autoCorrectDecimalSymbol, autoCorrectDecimalSymbol = _f === void 0 ? true : _f, _g = _b.decimalLimit, decimalLimit = _g === void 0 ? 2 : _g, _h = _b.requireDecimal, requireDecimal = _h === void 0 ? false : _h, _j = _b.allowNegative, allowNegative = _j === void 0 ? false : _j, _k = _b.integerLimit, integerLimit = _k === void 0 ? 0 : _k;
134
134
  tuiAssert.assert(Number.isInteger(decimalLimit));
135
- tuiAssert.assert(decimalLimit > 0);
135
+ tuiAssert.assert(decimalLimit >= 0);
136
136
  tuiAssert.assert(Number.isInteger(integerLimit));
137
137
  tuiAssert.assert(integerLimit >= 0);
138
138
  return function (rawValue, _a) {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-utils-mask.js","sources":["ng://@taiga-ui/core/utils/mask/create-auto-corrected-money-pipe.ts","ng://@taiga-ui/core/utils/mask/create-correction-mask.ts","ng://@taiga-ui/core/utils/mask/create-number-mask.ts","ng://@taiga-ui/core/utils/mask/masked-money-value-is-empty.ts","ng://@taiga-ui/core/utils/mask/masked-number-string-to-number.ts","ng://@taiga-ui/core/utils/mask/taiga-ui-core-utils-mask.ts"],"sourcesContent":["import {\n CHAR_NO_BREAK_SPACE,\n getDocumentOrShadowRoot,\n isNativeFocused,\n isSafari,\n tuiAssert,\n} from '@taiga-ui/cdk';\nimport {TuiTextMaskPipeHandler} from '@taiga-ui/core/mask';\nimport {TuiDecimalSymbol} from '@taiga-ui/core/types';\n\n/**\n * Used to finish a number with zeros to a given precision\n */\nexport function tuiCreateAutoCorrectedNumberPipe(\n decimalLimit: number = 0,\n decimalSymbol: TuiDecimalSymbol = ',',\n thousandSymbol: string = CHAR_NO_BREAK_SPACE,\n nativeInput?: HTMLInputElement,\n allowNegative?: boolean,\n): TuiTextMaskPipeHandler {\n tuiAssert.assert(Number.isInteger(decimalLimit));\n tuiAssert.assert(decimalLimit >= 0);\n\n // Guess for which browser I need this :)\n let previousCaret = -1;\n\n const unlucky = !!nativeInput && isSafari(nativeInput);\n\n if (nativeInput && unlucky) {\n nativeInput.addEventListener('beforeinput', () => {\n previousCaret = nativeInput.selectionStart || 0;\n });\n }\n\n return (conformedValue, config) => {\n // Removing everything by selecting and pressing '-'\n if (!conformedValue && config.rawValue === '-' && allowNegative) {\n return '-';\n }\n\n // remove these hacks after text mask library has changed\n if (nativeInput && unlucky && isNativeFocused(nativeInput)) {\n const caret = calculateSafariCaret(\n config.previousConformedValue,\n conformedValue,\n previousCaret,\n );\n\n setTimeout(() => {\n nativeInput.setSelectionRange(caret, caret);\n });\n }\n\n if (\n nativeInput &&\n nativeInput.ownerDocument !== getDocumentOrShadowRoot(nativeInput) &&\n isNativeFocused(nativeInput) &&\n config.currentCaretPosition\n ) {\n const realCaretPosition =\n config.currentCaretPosition +\n calculateCaretGap(\n config.previousConformedValue,\n conformedValue,\n thousandSymbol,\n );\n\n setTimeout(() => {\n nativeInput.setSelectionRange(realCaretPosition, realCaretPosition);\n });\n }\n\n if (conformedValue === '' || !decimalLimit) {\n return {value: conformedValue};\n }\n\n const withDecimalSymbol = addDecimalSymbolIfNeeded(conformedValue, decimalSymbol);\n const decimalPart = withDecimalSymbol.split(decimalSymbol)[1];\n const zeroPaddingSize = decimalLimit - decimalPart.length;\n\n return {\n value: withDecimalSymbol + '0'.repeat(zeroPaddingSize),\n };\n };\n}\n\nfunction addDecimalSymbolIfNeeded(\n value: string,\n decimalSymbol: TuiDecimalSymbol = ',',\n): string {\n return value.indexOf(decimalSymbol) === -1 ? value + decimalSymbol : value;\n}\n\nfunction calculateSafariCaret(\n previousValue: string = '',\n current: string,\n previousCaret: number,\n decimalSymbol: string = ',',\n): number {\n const tailRegex = new RegExp(`${decimalSymbol}.+`);\n const previousWithoutTail = previousValue.replace(tailRegex, '');\n const currentWithoutTail = current.replace(tailRegex, '');\n\n const pasteOrCutOperation =\n Math.abs(previousWithoutTail.length - currentWithoutTail.length) > 2;\n\n if (pasteOrCutOperation) {\n return current.length;\n }\n\n if (previousValue.length === current.length) {\n if (previousValue.indexOf(decimalSymbol) <= previousCaret) {\n return calculateChangedTailIndex(previousValue, current);\n }\n\n return previousWithoutTail === currentWithoutTail\n ? previousCaret - 1\n : previousCaret + 1;\n }\n\n if (previousValue.length === 0) {\n return 1;\n }\n\n const changeLength = current.length - previousValue.length;\n\n return previousCaret + changeLength;\n}\n\nfunction calculateChangedTailIndex(previous: string, current: string): number {\n for (let i = 0; i < current.length; i++) {\n if (previous[i] !== current[i]) {\n return current[i] === '0' ? i : i + 1;\n }\n }\n\n return current.length;\n}\n\nfunction calculateCaretGap(\n previousValue: string = '',\n current: string,\n thousandSymbol: string,\n): number {\n const pasteOrCutOperation = Math.abs(previousValue.length - current.length) > 2;\n\n if (pasteOrCutOperation) {\n return 0;\n }\n\n const wereSpaces = previousValue.split(thousandSymbol).length;\n const nowSpaces = current.split(thousandSymbol).length;\n\n return nowSpaces - wereSpaces;\n}\n","import {tuiAssert} from '@taiga-ui/cdk';\nimport {MASK_CARET_TRAP} from '@taiga-ui/core/constants';\nimport {\n TuiTextMaskCorrectionHandler,\n TuiTextMaskList,\n TuiTextMaskListHandler,\n} from '@taiga-ui/core/mask';\n\nconst ASSERTION = 'Correction function must return single char or null';\n\nexport function tuiCreateCorrectionMask(\n allowed: RegExp,\n correctionHandler: TuiTextMaskCorrectionHandler,\n): TuiTextMaskListHandler {\n return rawValue => {\n const mask = rawValue.split('').reduce<TuiTextMaskList>((result, char, index) => {\n const corrected = correctionHandler(char, index);\n\n tuiAssert.assert(corrected === null || corrected.length === 1, ASSERTION);\n\n if (!allowed.test(char) && !corrected) {\n return result;\n }\n\n if (allowed.test(char)) {\n return [...result, allowed];\n }\n\n if (corrected) {\n return [...result, corrected, MASK_CARET_TRAP];\n }\n\n return result;\n }, []);\n const lastIndex = mask.lastIndexOf(MASK_CARET_TRAP);\n const filtered = mask.filter(\n (item, index) => item !== MASK_CARET_TRAP || index === lastIndex,\n );\n\n return filtered.some(item => item !== allowed)\n ? [...filtered, allowed]\n : filtered;\n };\n}\n","import {CHAR_EN_DASH, CHAR_NO_BREAK_SPACE, tuiAssert} from '@taiga-ui/cdk';\nimport {\n MASK_CARET_TRAP,\n TUI_DIGIT_REGEXP,\n TUI_LEADING_ZEROES_REGEXP,\n TUI_NON_DIGITS_REGEXP,\n} from '@taiga-ui/core/constants';\nimport {TuiNumberMaskOptions, TuiTextMaskListHandler} from '@taiga-ui/core/mask';\nimport {TuiDecimalSymbol} from '@taiga-ui/core/types';\nimport {otherDecimalSymbol} from '@taiga-ui/core/utils/format';\n\nconst NON_ZERO_DIGIT = /[1-9]/;\n\n/**\n * Adaptation for {@link https://github.com/text-mask/text-mask/tree/master/addons#createnumbermask `createNumberMask`}\n * @todo TODO: autocCorrectDecimalSymbol is no longer needed. Remove it in 3.0\n */\nexport function tuiCreateNumberMask({\n allowDecimal = false,\n decimalSymbol = ',',\n thousandSymbol = CHAR_NO_BREAK_SPACE,\n autoCorrectDecimalSymbol = true,\n decimalLimit = 2,\n requireDecimal = false,\n allowNegative = false,\n integerLimit = 0,\n}: TuiNumberMaskOptions = {}): TuiTextMaskListHandler {\n tuiAssert.assert(Number.isInteger(decimalLimit));\n tuiAssert.assert(decimalLimit > 0);\n tuiAssert.assert(Number.isInteger(integerLimit));\n tuiAssert.assert(integerLimit >= 0);\n\n return (rawValue, {previousConformedValue}) => {\n if (previousConformedValue && requireDecimal) {\n const conformedWithoutSeparator = rawValue.split(thousandSymbol).join('');\n const previousConformedValueWithoutDecimalSymbolAndSeparator =\n previousConformedValue\n .split(thousandSymbol)\n .join('')\n .split(decimalSymbol)\n .join('');\n\n // Forbid removal of decimal separator if decimal part is required\n if (\n conformedWithoutSeparator ===\n previousConformedValueWithoutDecimalSymbolAndSeparator\n ) {\n rawValue = previousConformedValue;\n }\n }\n\n const isNegative =\n (rawValue[0] === '-' || rawValue[0] === CHAR_EN_DASH) && allowNegative;\n\n if (\n isDecimalSymbol(rawValue, decimalSymbol, autoCorrectDecimalSymbol) &&\n allowDecimal\n ) {\n return ['0', decimalSymbol, TUI_DIGIT_REGEXP];\n }\n\n if (isNegative) {\n rawValue = rawValue.substr(1);\n }\n\n const decimalIndex = getDecimalSymbolIndex(\n rawValue,\n decimalSymbol,\n autoCorrectDecimalSymbol,\n );\n const hasDecimal = decimalIndex !== -1;\n const integer = hasDecimal ? rawValue.slice(0, decimalIndex) : rawValue;\n const thousandSeparators = integer.match(new RegExp(thousandSymbol, 'g')) || [];\n const integerCapped = integerLimit\n ? integer.slice(0, integerLimit + thousandSeparators.length)\n : integer;\n const integerCappedClean = integerCapped.replace(TUI_NON_DIGITS_REGEXP, '');\n const [leadingZerosMatch] = integerCappedClean.match(\n TUI_LEADING_ZEROES_REGEXP,\n ) || [''];\n const leadingZerosAmount = leadingZerosMatch.length;\n const integerCappedZerosClean = integerCappedClean\n .replace(/^0+(?!\\.|$)/, '')\n .trim();\n const withSeparator = addThousandsSeparator(\n integerCappedZerosClean,\n thousandSymbol,\n );\n const mask = convertToMask(withSeparator);\n\n if ((hasDecimal && allowDecimal) || requireDecimal) {\n const fraction = hasDecimal\n ? convertToMask(\n rawValue.slice(decimalIndex + 1).replace(TUI_NON_DIGITS_REGEXP, ''),\n )\n : [];\n const fractionCapped = decimalLimit\n ? fraction.slice(0, decimalLimit)\n : fraction;\n\n if (rawValue[decimalIndex] !== otherDecimalSymbol(decimalSymbol)) {\n mask.push(MASK_CARET_TRAP);\n }\n\n mask.push(decimalSymbol, MASK_CARET_TRAP, ...fractionCapped);\n\n for (let i = 0; i < decimalLimit - fractionCapped.length; i++) {\n mask.push(TUI_DIGIT_REGEXP);\n }\n }\n\n const isOnlyZeroDigit = mask.length === 1 && integerCappedZerosClean === '0';\n\n if (isNegative) {\n if (mask.length === 0) {\n mask.push(TUI_DIGIT_REGEXP);\n }\n\n mask.unshift('-');\n }\n\n return preventLeadingZeroes(mask, isOnlyZeroDigit, leadingZerosAmount);\n };\n}\n\nfunction preventLeadingZeroes(\n mask: Array<string | RegExp>,\n isOnlyZeroDigit: boolean = false,\n leadingZerosAmount: number = 0,\n): Array<string | RegExp> {\n if (isOnlyZeroDigit || leadingZerosAmount === 0) {\n return mask;\n }\n\n const firstDigitIndex = mask.indexOf(TUI_DIGIT_REGEXP);\n\n if (firstDigitIndex === -1) {\n return mask;\n }\n\n const secondMaskDigit = mask[firstDigitIndex + 1];\n const isCaretTrap = secondMaskDigit === MASK_CARET_TRAP;\n\n if (isCaretTrap && leadingZerosAmount === 1) {\n return mask;\n } else if (isCaretTrap) {\n mask.unshift(NON_ZERO_DIGIT);\n\n return mask;\n }\n\n mask[firstDigitIndex] = NON_ZERO_DIGIT;\n\n return mask;\n}\n\nfunction getDecimalSymbolIndex(\n str: string,\n decimalSymbol: TuiDecimalSymbol,\n autoCorrectDecimalSymbol: boolean,\n): number {\n if (!autoCorrectDecimalSymbol) {\n return str.lastIndexOf(decimalSymbol);\n }\n\n return Math.max(\n str.lastIndexOf(decimalSymbol),\n str.lastIndexOf(otherDecimalSymbol(decimalSymbol)),\n );\n}\n\nfunction isDecimalSymbol(\n str: string,\n decimalSymbol: TuiDecimalSymbol,\n autoCorrectDecimalSymbol: boolean,\n): boolean {\n if (autoCorrectDecimalSymbol) {\n return /^[,.]$/.test(str);\n }\n\n return str === decimalSymbol;\n}\n\nfunction convertToMask(strNumber: string): Array<string | RegExp> {\n return strNumber\n .split('')\n .map(char => (TUI_DIGIT_REGEXP.test(char) ? TUI_DIGIT_REGEXP : char));\n}\n\nfunction addThousandsSeparator(strNumber: string, thousandSymbol: string): string {\n return strNumber.length > 3\n ? strNumber.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSymbol)\n : strNumber;\n}\n","export function maskedMoneyValueIsEmpty(value: string): boolean {\n switch (value) {\n case '':\n case '-':\n case ',':\n case '-,':\n return true;\n default:\n return false;\n }\n}\n","import {TuiDecimalSymbol} from '@taiga-ui/core/types';\n\nexport function maskedNumberStringToNumber(\n value: string,\n decimalsSymbol: TuiDecimalSymbol,\n thousandSymbol: string,\n): number {\n return parseFloat(\n value.split(thousandSymbol).join('').split(decimalsSymbol).join('.'),\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-core-utils-mask.js","sources":["ng://@taiga-ui/core/utils/mask/create-auto-corrected-money-pipe.ts","ng://@taiga-ui/core/utils/mask/create-correction-mask.ts","ng://@taiga-ui/core/utils/mask/create-number-mask.ts","ng://@taiga-ui/core/utils/mask/masked-money-value-is-empty.ts","ng://@taiga-ui/core/utils/mask/masked-number-string-to-number.ts","ng://@taiga-ui/core/utils/mask/taiga-ui-core-utils-mask.ts"],"sourcesContent":["import {\n CHAR_NO_BREAK_SPACE,\n getDocumentOrShadowRoot,\n isNativeFocused,\n isSafari,\n tuiAssert,\n} from '@taiga-ui/cdk';\nimport {TuiTextMaskPipeHandler} from '@taiga-ui/core/mask';\nimport {TuiDecimalSymbol} from '@taiga-ui/core/types';\n\n/**\n * Used to finish a number with zeros to a given precision\n */\nexport function tuiCreateAutoCorrectedNumberPipe(\n decimalLimit: number = 0,\n decimalSymbol: TuiDecimalSymbol = ',',\n thousandSymbol: string = CHAR_NO_BREAK_SPACE,\n nativeInput?: HTMLInputElement,\n allowNegative?: boolean,\n): TuiTextMaskPipeHandler {\n tuiAssert.assert(Number.isInteger(decimalLimit));\n tuiAssert.assert(decimalLimit >= 0);\n\n // Guess for which browser I need this :)\n let previousCaret = -1;\n\n const unlucky = !!nativeInput && isSafari(nativeInput);\n\n if (nativeInput && unlucky) {\n nativeInput.addEventListener('beforeinput', () => {\n previousCaret = nativeInput.selectionStart || 0;\n });\n }\n\n return (conformedValue, config) => {\n // Removing everything by selecting and pressing '-'\n if (!conformedValue && config.rawValue === '-' && allowNegative) {\n return '-';\n }\n\n // remove these hacks after text mask library has changed\n if (nativeInput && unlucky && isNativeFocused(nativeInput)) {\n const caret = calculateSafariCaret(\n config.previousConformedValue,\n conformedValue,\n previousCaret,\n );\n\n setTimeout(() => {\n nativeInput.setSelectionRange(caret, caret);\n });\n }\n\n if (\n nativeInput &&\n nativeInput.ownerDocument !== getDocumentOrShadowRoot(nativeInput) &&\n isNativeFocused(nativeInput) &&\n config.currentCaretPosition\n ) {\n const realCaretPosition =\n config.currentCaretPosition +\n calculateCaretGap(\n config.previousConformedValue,\n conformedValue,\n thousandSymbol,\n );\n\n setTimeout(() => {\n nativeInput.setSelectionRange(realCaretPosition, realCaretPosition);\n });\n }\n\n if (conformedValue === '' || !decimalLimit) {\n return {value: conformedValue};\n }\n\n const withDecimalSymbol = addDecimalSymbolIfNeeded(conformedValue, decimalSymbol);\n const decimalPart = withDecimalSymbol.split(decimalSymbol)[1];\n const zeroPaddingSize = decimalLimit - decimalPart.length;\n\n return {\n value: withDecimalSymbol + '0'.repeat(zeroPaddingSize),\n };\n };\n}\n\nfunction addDecimalSymbolIfNeeded(\n value: string,\n decimalSymbol: TuiDecimalSymbol = ',',\n): string {\n return value.indexOf(decimalSymbol) === -1 ? value + decimalSymbol : value;\n}\n\nfunction calculateSafariCaret(\n previousValue: string = '',\n current: string,\n previousCaret: number,\n decimalSymbol: string = ',',\n): number {\n const tailRegex = new RegExp(`${decimalSymbol}.+`);\n const previousWithoutTail = previousValue.replace(tailRegex, '');\n const currentWithoutTail = current.replace(tailRegex, '');\n\n const pasteOrCutOperation =\n Math.abs(previousWithoutTail.length - currentWithoutTail.length) > 2;\n\n if (pasteOrCutOperation) {\n return current.length;\n }\n\n if (previousValue.length === current.length) {\n if (previousValue.indexOf(decimalSymbol) <= previousCaret) {\n return calculateChangedTailIndex(previousValue, current);\n }\n\n return previousWithoutTail === currentWithoutTail\n ? previousCaret - 1\n : previousCaret + 1;\n }\n\n if (previousValue.length === 0) {\n return 1;\n }\n\n const changeLength = current.length - previousValue.length;\n\n return previousCaret + changeLength;\n}\n\nfunction calculateChangedTailIndex(previous: string, current: string): number {\n for (let i = 0; i < current.length; i++) {\n if (previous[i] !== current[i]) {\n return current[i] === '0' ? i : i + 1;\n }\n }\n\n return current.length;\n}\n\nfunction calculateCaretGap(\n previousValue: string = '',\n current: string,\n thousandSymbol: string,\n): number {\n const pasteOrCutOperation = Math.abs(previousValue.length - current.length) > 2;\n\n if (pasteOrCutOperation) {\n return 0;\n }\n\n const wereSpaces = previousValue.split(thousandSymbol).length;\n const nowSpaces = current.split(thousandSymbol).length;\n\n return nowSpaces - wereSpaces;\n}\n","import {tuiAssert} from '@taiga-ui/cdk';\nimport {MASK_CARET_TRAP} from '@taiga-ui/core/constants';\nimport {\n TuiTextMaskCorrectionHandler,\n TuiTextMaskList,\n TuiTextMaskListHandler,\n} from '@taiga-ui/core/mask';\n\nconst ASSERTION = 'Correction function must return single char or null';\n\nexport function tuiCreateCorrectionMask(\n allowed: RegExp,\n correctionHandler: TuiTextMaskCorrectionHandler,\n): TuiTextMaskListHandler {\n return rawValue => {\n const mask = rawValue.split('').reduce<TuiTextMaskList>((result, char, index) => {\n const corrected = correctionHandler(char, index);\n\n tuiAssert.assert(corrected === null || corrected.length === 1, ASSERTION);\n\n if (!allowed.test(char) && !corrected) {\n return result;\n }\n\n if (allowed.test(char)) {\n return [...result, allowed];\n }\n\n if (corrected) {\n return [...result, corrected, MASK_CARET_TRAP];\n }\n\n return result;\n }, []);\n const lastIndex = mask.lastIndexOf(MASK_CARET_TRAP);\n const filtered = mask.filter(\n (item, index) => item !== MASK_CARET_TRAP || index === lastIndex,\n );\n\n return filtered.some(item => item !== allowed)\n ? [...filtered, allowed]\n : filtered;\n };\n}\n","import {CHAR_EN_DASH, CHAR_NO_BREAK_SPACE, tuiAssert} from '@taiga-ui/cdk';\nimport {\n MASK_CARET_TRAP,\n TUI_DIGIT_REGEXP,\n TUI_LEADING_ZEROES_REGEXP,\n TUI_NON_DIGITS_REGEXP,\n} from '@taiga-ui/core/constants';\nimport {TuiNumberMaskOptions, TuiTextMaskListHandler} from '@taiga-ui/core/mask';\nimport {TuiDecimalSymbol} from '@taiga-ui/core/types';\nimport {otherDecimalSymbol} from '@taiga-ui/core/utils/format';\n\nconst NON_ZERO_DIGIT = /[1-9]/;\n\n/**\n * Adaptation for {@link https://github.com/text-mask/text-mask/tree/master/addons#createnumbermask `createNumberMask`}\n * @todo TODO: autocCorrectDecimalSymbol is no longer needed. Remove it in 3.0\n */\nexport function tuiCreateNumberMask({\n allowDecimal = false,\n decimalSymbol = ',',\n thousandSymbol = CHAR_NO_BREAK_SPACE,\n autoCorrectDecimalSymbol = true,\n decimalLimit = 2,\n requireDecimal = false,\n allowNegative = false,\n integerLimit = 0,\n}: TuiNumberMaskOptions = {}): TuiTextMaskListHandler {\n tuiAssert.assert(Number.isInteger(decimalLimit));\n tuiAssert.assert(decimalLimit >= 0);\n tuiAssert.assert(Number.isInteger(integerLimit));\n tuiAssert.assert(integerLimit >= 0);\n\n return (rawValue, {previousConformedValue}) => {\n if (previousConformedValue && requireDecimal) {\n const conformedWithoutSeparator = rawValue.split(thousandSymbol).join('');\n const previousConformedValueWithoutDecimalSymbolAndSeparator =\n previousConformedValue\n .split(thousandSymbol)\n .join('')\n .split(decimalSymbol)\n .join('');\n\n // Forbid removal of decimal separator if decimal part is required\n if (\n conformedWithoutSeparator ===\n previousConformedValueWithoutDecimalSymbolAndSeparator\n ) {\n rawValue = previousConformedValue;\n }\n }\n\n const isNegative =\n (rawValue[0] === '-' || rawValue[0] === CHAR_EN_DASH) && allowNegative;\n\n if (\n isDecimalSymbol(rawValue, decimalSymbol, autoCorrectDecimalSymbol) &&\n allowDecimal\n ) {\n return ['0', decimalSymbol, TUI_DIGIT_REGEXP];\n }\n\n if (isNegative) {\n rawValue = rawValue.substr(1);\n }\n\n const decimalIndex = getDecimalSymbolIndex(\n rawValue,\n decimalSymbol,\n autoCorrectDecimalSymbol,\n );\n const hasDecimal = decimalIndex !== -1;\n const integer = hasDecimal ? rawValue.slice(0, decimalIndex) : rawValue;\n const thousandSeparators = integer.match(new RegExp(thousandSymbol, 'g')) || [];\n const integerCapped = integerLimit\n ? integer.slice(0, integerLimit + thousandSeparators.length)\n : integer;\n const integerCappedClean = integerCapped.replace(TUI_NON_DIGITS_REGEXP, '');\n const [leadingZerosMatch] = integerCappedClean.match(\n TUI_LEADING_ZEROES_REGEXP,\n ) || [''];\n const leadingZerosAmount = leadingZerosMatch.length;\n const integerCappedZerosClean = integerCappedClean\n .replace(/^0+(?!\\.|$)/, '')\n .trim();\n const withSeparator = addThousandsSeparator(\n integerCappedZerosClean,\n thousandSymbol,\n );\n const mask = convertToMask(withSeparator);\n\n if ((hasDecimal && allowDecimal) || requireDecimal) {\n const fraction = hasDecimal\n ? convertToMask(\n rawValue.slice(decimalIndex + 1).replace(TUI_NON_DIGITS_REGEXP, ''),\n )\n : [];\n const fractionCapped = decimalLimit\n ? fraction.slice(0, decimalLimit)\n : fraction;\n\n if (rawValue[decimalIndex] !== otherDecimalSymbol(decimalSymbol)) {\n mask.push(MASK_CARET_TRAP);\n }\n\n mask.push(decimalSymbol, MASK_CARET_TRAP, ...fractionCapped);\n\n for (let i = 0; i < decimalLimit - fractionCapped.length; i++) {\n mask.push(TUI_DIGIT_REGEXP);\n }\n }\n\n const isOnlyZeroDigit = mask.length === 1 && integerCappedZerosClean === '0';\n\n if (isNegative) {\n if (mask.length === 0) {\n mask.push(TUI_DIGIT_REGEXP);\n }\n\n mask.unshift('-');\n }\n\n return preventLeadingZeroes(mask, isOnlyZeroDigit, leadingZerosAmount);\n };\n}\n\nfunction preventLeadingZeroes(\n mask: Array<string | RegExp>,\n isOnlyZeroDigit: boolean = false,\n leadingZerosAmount: number = 0,\n): Array<string | RegExp> {\n if (isOnlyZeroDigit || leadingZerosAmount === 0) {\n return mask;\n }\n\n const firstDigitIndex = mask.indexOf(TUI_DIGIT_REGEXP);\n\n if (firstDigitIndex === -1) {\n return mask;\n }\n\n const secondMaskDigit = mask[firstDigitIndex + 1];\n const isCaretTrap = secondMaskDigit === MASK_CARET_TRAP;\n\n if (isCaretTrap && leadingZerosAmount === 1) {\n return mask;\n } else if (isCaretTrap) {\n mask.unshift(NON_ZERO_DIGIT);\n\n return mask;\n }\n\n mask[firstDigitIndex] = NON_ZERO_DIGIT;\n\n return mask;\n}\n\nfunction getDecimalSymbolIndex(\n str: string,\n decimalSymbol: TuiDecimalSymbol,\n autoCorrectDecimalSymbol: boolean,\n): number {\n if (!autoCorrectDecimalSymbol) {\n return str.lastIndexOf(decimalSymbol);\n }\n\n return Math.max(\n str.lastIndexOf(decimalSymbol),\n str.lastIndexOf(otherDecimalSymbol(decimalSymbol)),\n );\n}\n\nfunction isDecimalSymbol(\n str: string,\n decimalSymbol: TuiDecimalSymbol,\n autoCorrectDecimalSymbol: boolean,\n): boolean {\n if (autoCorrectDecimalSymbol) {\n return /^[,.]$/.test(str);\n }\n\n return str === decimalSymbol;\n}\n\nfunction convertToMask(strNumber: string): Array<string | RegExp> {\n return strNumber\n .split('')\n .map(char => (TUI_DIGIT_REGEXP.test(char) ? TUI_DIGIT_REGEXP : char));\n}\n\nfunction addThousandsSeparator(strNumber: string, thousandSymbol: string): string {\n return strNumber.length > 3\n ? strNumber.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSymbol)\n : strNumber;\n}\n","export function maskedMoneyValueIsEmpty(value: string): boolean {\n switch (value) {\n case '':\n case '-':\n case ',':\n case '-,':\n return true;\n default:\n return false;\n }\n}\n","import {TuiDecimalSymbol} from '@taiga-ui/core/types';\n\nexport function maskedNumberStringToNumber(\n value: string,\n decimalsSymbol: TuiDecimalSymbol,\n thousandSymbol: string,\n): number {\n return parseFloat(\n value.split(thousandSymbol).join('').split(decimalsSymbol).join('.'),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/core",
3
- "version": "2.31.0",
3
+ "version": "2.32.0",
4
4
  "description": "Core library for creating Angular components and applications using Taiga UI",
5
5
  "keywords": [
6
6
  "angular",
@@ -15,22 +15,19 @@
15
15
  "repository": "https://github.com/tinkoff/taiga-ui",
16
16
  "homepage": "https://github.com/tinkoff/taiga-ui",
17
17
  "schematics": "./schematics/collection.json",
18
- "dependencies": {
19
- "@taiga-ui/i18n": "2.31.0",
20
- "tslib": "^1.10.0"
21
- },
22
18
  "peerDependencies": {
23
- "@taiga-ui/cdk": "2.31.0",
19
+ "@taiga-ui/i18n": "2.32.0",
20
+ "@taiga-ui/cdk": "2.32.0",
24
21
  "@angular/animations": ">=9.0.0",
25
22
  "@angular/common": ">=9.0.0",
26
23
  "@angular/core": ">=9.0.0",
27
24
  "@angular/forms": ">=9.0.0",
28
25
  "@angular/platform-browser": ">=9.0.0",
29
26
  "@angular/router": ">=9.0.0",
30
- "@ng-web-apis/common": "1.12.1",
31
- "@ng-web-apis/mutation-observer": "1.1.0",
27
+ "@ng-web-apis/common": ">=1.12.1",
28
+ "@ng-web-apis/mutation-observer": ">=1.1.0",
32
29
  "@tinkoff/ng-event-plugins": ">=2.3.2",
33
- "@tinkoff/ng-polymorpheus": "3.1.12",
30
+ "@tinkoff/ng-polymorpheus": ">=3.1.12",
34
31
  "rxjs": ">=6.0.0"
35
32
  },
36
33
  "main": "bundles/taiga-ui-core.umd.js",
@@ -42,5 +39,8 @@
42
39
  "fesm2015": "fesm2015/taiga-ui-core.js",
43
40
  "typings": "taiga-ui-core.d.ts",
44
41
  "metadata": "taiga-ui-core.metadata.json",
45
- "sideEffects": false
42
+ "sideEffects": false,
43
+ "dependencies": {
44
+ "tslib": "^1.10.0"
45
+ }
46
46
  }
@@ -245,6 +245,13 @@
245
245
 
246
246
  .placeholder {
247
247
  .textfield-placeholder();
248
+
249
+ /* Safari 9+ */
250
+ @supports (-webkit-hyphens: none) {
251
+ & {
252
+ transition-property: transform, color, letter-spacing;
253
+ }
254
+ }
248
255
  }
249
256
 
250
257
  .cleaner {