@dxtmisha/constructor 0.23.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/LICENSE +21 -0
- package/README.md +136 -0
- package/package.json +124 -0
- package/src/classes/CaptionInclude.ts +71 -0
- package/src/classes/DescriptionInclude.ts +70 -0
- package/src/classes/EnabledInclude.ts +56 -0
- package/src/classes/EventClickInclude.ts +138 -0
- package/src/classes/LabelHighlightInclude.ts +90 -0
- package/src/classes/LabelInclude.ts +171 -0
- package/src/classes/LabelNumberInclude.ts +70 -0
- package/src/classes/ModelInclude.ts +49 -0
- package/src/classes/PrefixInclude.ts +71 -0
- package/src/classes/SuffixInclude.ts +71 -0
- package/src/classes/field/FieldAttributesInclude.ts +100 -0
- package/src/classes/field/FieldChangeInclude.ts +52 -0
- package/src/classes/field/FieldCodeInclude.ts +69 -0
- package/src/classes/field/FieldElementInclude.ts +97 -0
- package/src/classes/field/FieldInputCheckInclude.ts +128 -0
- package/src/classes/field/FieldMatchInclude.ts +101 -0
- package/src/classes/field/FieldPatternInclude.ts +42 -0
- package/src/classes/field/FieldTypeInclude.ts +42 -0
- package/src/classes/field/FieldValidationInclude.ts +196 -0
- package/src/classes/field/FieldValueInclude.ts +318 -0
- package/src/classes/field/FieldVisibilityInclude.ts +21 -0
- package/src/constructors/Badge/Badge.ts +73 -0
- package/src/constructors/Badge/BadgeDesign.tsx +127 -0
- package/src/constructors/Badge/BadgeInclude.ts +78 -0
- package/src/constructors/Badge/basicTypes.ts +15 -0
- package/src/constructors/Badge/index.ts +5 -0
- package/src/constructors/Badge/properties.json +36 -0
- package/src/constructors/Badge/props.ts +43 -0
- package/src/constructors/Badge/style.scss +83 -0
- package/src/constructors/Badge/types.ts +47 -0
- package/src/constructors/Bars/Bars.ts +188 -0
- package/src/constructors/Bars/BarsAction.ts +57 -0
- package/src/constructors/Bars/BarsDesign.tsx +229 -0
- package/src/constructors/Bars/BarsInclude.ts +116 -0
- package/src/constructors/Bars/basicTypes.ts +40 -0
- package/src/constructors/Bars/index.ts +6 -0
- package/src/constructors/Bars/properties.json +6 -0
- package/src/constructors/Bars/props.ts +63 -0
- package/src/constructors/Bars/style.scss +18 -0
- package/src/constructors/Bars/types.ts +58 -0
- package/src/constructors/Button/Button.ts +88 -0
- package/src/constructors/Button/ButtonDesign.tsx +136 -0
- package/src/constructors/Button/ButtonInclude.ts +80 -0
- package/src/constructors/Button/basicTypes.ts +12 -0
- package/src/constructors/Button/index.ts +5 -0
- package/src/constructors/Button/properties.json +84 -0
- package/src/constructors/Button/props.ts +55 -0
- package/src/constructors/Button/style.scss +96 -0
- package/src/constructors/Button/types.ts +56 -0
- package/src/constructors/Cell/Cell.ts +127 -0
- package/src/constructors/Cell/CellDesign.tsx +203 -0
- package/src/constructors/Cell/basicTypes.ts +6 -0
- package/src/constructors/Cell/index.ts +5 -0
- package/src/constructors/Cell/properties.json +52 -0
- package/src/constructors/Cell/props.ts +61 -0
- package/src/constructors/Cell/style.scss +80 -0
- package/src/constructors/Cell/types.ts +68 -0
- package/src/constructors/Chip/Chip.ts +33 -0
- package/src/constructors/Chip/ChipDesign.tsx +26 -0
- package/src/constructors/Chip/basicTypes.ts +0 -0
- package/src/constructors/Chip/index.ts +4 -0
- package/src/constructors/Chip/properties.json +3 -0
- package/src/constructors/Chip/props.ts +44 -0
- package/src/constructors/Chip/style.scss +6 -0
- package/src/constructors/Chip/types.ts +53 -0
- package/src/constructors/Field/Field.ts +147 -0
- package/src/constructors/Field/FieldDesign.tsx +372 -0
- package/src/constructors/Field/FieldIcons.ts +99 -0
- package/src/constructors/Field/FieldInclude.ts +72 -0
- package/src/constructors/Field/FieldSize.ts +93 -0
- package/src/constructors/Field/basicTypes.ts +90 -0
- package/src/constructors/Field/index.ts +5 -0
- package/src/constructors/Field/properties.json +86 -0
- package/src/constructors/Field/props.ts +88 -0
- package/src/constructors/Field/style.scss +556 -0
- package/src/constructors/Field/types.ts +78 -0
- package/src/constructors/FieldCounter/FieldCounter.ts +75 -0
- package/src/constructors/FieldCounter/FieldCounterDesign.tsx +122 -0
- package/src/constructors/FieldCounter/FieldCounterInclude.ts +98 -0
- package/src/constructors/FieldCounter/basicTypes.ts +25 -0
- package/src/constructors/FieldCounter/index.ts +6 -0
- package/src/constructors/FieldCounter/properties.json +3 -0
- package/src/constructors/FieldCounter/props.ts +32 -0
- package/src/constructors/FieldCounter/style.scss +4 -0
- package/src/constructors/FieldCounter/types.ts +42 -0
- package/src/constructors/FieldLabel/FieldLabel.ts +93 -0
- package/src/constructors/FieldLabel/FieldLabelDesign.tsx +156 -0
- package/src/constructors/FieldLabel/FieldLabelInclude.ts +91 -0
- package/src/constructors/FieldLabel/basicTypes.ts +34 -0
- package/src/constructors/FieldLabel/index.ts +6 -0
- package/src/constructors/FieldLabel/properties.json +4 -0
- package/src/constructors/FieldLabel/props.ts +40 -0
- package/src/constructors/FieldLabel/style.scss +10 -0
- package/src/constructors/FieldLabel/types.ts +49 -0
- package/src/constructors/FieldMessage/FieldMessage.ts +79 -0
- package/src/constructors/FieldMessage/FieldMessageDesign.tsx +159 -0
- package/src/constructors/FieldMessage/FieldMessageInclude.ts +105 -0
- package/src/constructors/FieldMessage/FieldMessageMessage.ts +54 -0
- package/src/constructors/FieldMessage/basicTypes.ts +27 -0
- package/src/constructors/FieldMessage/index.ts +6 -0
- package/src/constructors/FieldMessage/properties.json +9 -0
- package/src/constructors/FieldMessage/props.ts +40 -0
- package/src/constructors/FieldMessage/style.scss +13 -0
- package/src/constructors/FieldMessage/types.ts +49 -0
- package/src/constructors/Icon/Icon.ts +105 -0
- package/src/constructors/Icon/IconDesign.tsx +157 -0
- package/src/constructors/Icon/IconInclude.ts +64 -0
- package/src/constructors/Icon/IconLiteInclude.ts +121 -0
- package/src/constructors/Icon/IconTrailingInclude.ts +106 -0
- package/src/constructors/Icon/basicTypes.ts +50 -0
- package/src/constructors/Icon/index.ts +8 -0
- package/src/constructors/Icon/properties.json +25 -0
- package/src/constructors/Icon/props.ts +54 -0
- package/src/constructors/Icon/style.scss +106 -0
- package/src/constructors/Icon/types.ts +46 -0
- package/src/constructors/Image/Image.ts +184 -0
- package/src/constructors/Image/ImageAdaptiveGroup.ts +230 -0
- package/src/constructors/Image/ImageAdaptiveItem.ts +295 -0
- package/src/constructors/Image/ImageBackground.ts +127 -0
- package/src/constructors/Image/ImageCalculation.ts +184 -0
- package/src/constructors/Image/ImageCalculationList.ts +61 -0
- package/src/constructors/Image/ImageCoordinator.ts +104 -0
- package/src/constructors/Image/ImageData.ts +99 -0
- package/src/constructors/Image/ImageDesign.tsx +137 -0
- package/src/constructors/Image/ImageFile.ts +137 -0
- package/src/constructors/Image/ImageInclude.ts +53 -0
- package/src/constructors/Image/ImagePdf.ts +44 -0
- package/src/constructors/Image/ImagePosition.ts +49 -0
- package/src/constructors/Image/ImageType.ts +83 -0
- package/src/constructors/Image/basicTypes.ts +70 -0
- package/src/constructors/Image/index.ts +5 -0
- package/src/constructors/Image/properties.json +17 -0
- package/src/constructors/Image/props.ts +66 -0
- package/src/constructors/Image/style.scss +77 -0
- package/src/constructors/Image/types.ts +49 -0
- package/src/constructors/List/List.ts +267 -0
- package/src/constructors/List/ListControl.ts +194 -0
- package/src/constructors/List/ListDesign.tsx +382 -0
- package/src/constructors/List/ListFocus.ts +196 -0
- package/src/constructors/List/ListGo.ts +283 -0
- package/src/constructors/List/ListSearch.ts +113 -0
- package/src/constructors/List/basicTypes.ts +3 -0
- package/src/constructors/List/index.ts +5 -0
- package/src/constructors/List/properties.json +16 -0
- package/src/constructors/List/props.ts +76 -0
- package/src/constructors/List/style.scss +36 -0
- package/src/constructors/List/types.ts +66 -0
- package/src/constructors/ListGroup/ListGroup.ts +53 -0
- package/src/constructors/ListGroup/ListGroupDesign.tsx +180 -0
- package/src/constructors/ListGroup/ListGroupOpen.ts +56 -0
- package/src/constructors/ListGroup/basicTypes.ts +3 -0
- package/src/constructors/ListGroup/index.ts +5 -0
- package/src/constructors/ListGroup/properties.json +15 -0
- package/src/constructors/ListGroup/props.ts +30 -0
- package/src/constructors/ListGroup/style.scss +18 -0
- package/src/constructors/ListGroup/types.ts +51 -0
- package/src/constructors/ListItem/ListItem.ts +115 -0
- package/src/constructors/ListItem/ListItemDesign.tsx +196 -0
- package/src/constructors/ListItem/basicTypes.ts +3 -0
- package/src/constructors/ListItem/index.ts +5 -0
- package/src/constructors/ListItem/properties.json +52 -0
- package/src/constructors/ListItem/props.ts +78 -0
- package/src/constructors/ListItem/style.scss +152 -0
- package/src/constructors/ListItem/types.ts +78 -0
- package/src/constructors/ListMenu/ListMenu.ts +52 -0
- package/src/constructors/ListMenu/ListMenuDesign.tsx +127 -0
- package/src/constructors/ListMenu/basicTypes.ts +3 -0
- package/src/constructors/ListMenu/index.ts +5 -0
- package/src/constructors/ListMenu/properties.json +19 -0
- package/src/constructors/ListMenu/props.ts +34 -0
- package/src/constructors/ListMenu/style.scss +5 -0
- package/src/constructors/ListMenu/types.ts +54 -0
- package/src/constructors/Mask/Mask.ts +321 -0
- package/src/constructors/Mask/MaskBuffer.ts +89 -0
- package/src/constructors/Mask/MaskCharacter.ts +192 -0
- package/src/constructors/Mask/MaskCharacterLength.ts +40 -0
- package/src/constructors/Mask/MaskData.ts +287 -0
- package/src/constructors/Mask/MaskDate.ts +157 -0
- package/src/constructors/Mask/MaskDesign.tsx +217 -0
- package/src/constructors/Mask/MaskEmit.ts +140 -0
- package/src/constructors/Mask/MaskEvent.ts +347 -0
- package/src/constructors/Mask/MaskFocus.ts +49 -0
- package/src/constructors/Mask/MaskFormat.ts +216 -0
- package/src/constructors/Mask/MaskItem.ts +218 -0
- package/src/constructors/Mask/MaskMatch.ts +73 -0
- package/src/constructors/Mask/MaskPattern.ts +123 -0
- package/src/constructors/Mask/MaskRight.ts +43 -0
- package/src/constructors/Mask/MaskRubber.ts +156 -0
- package/src/constructors/Mask/MaskRubberItem.ts +96 -0
- package/src/constructors/Mask/MaskRubberTransition.ts +50 -0
- package/src/constructors/Mask/MaskSelection.ts +208 -0
- package/src/constructors/Mask/MaskSpecial.ts +179 -0
- package/src/constructors/Mask/MaskType.ts +103 -0
- package/src/constructors/Mask/MaskValidation.ts +102 -0
- package/src/constructors/Mask/MaskValue.ts +225 -0
- package/src/constructors/Mask/MaskValueBasic.ts +87 -0
- package/src/constructors/Mask/MaskView.ts +169 -0
- package/src/constructors/Mask/basicTypes.ts +49 -0
- package/src/constructors/Mask/index.ts +5 -0
- package/src/constructors/Mask/properties.json +29 -0
- package/src/constructors/Mask/props.ts +70 -0
- package/src/constructors/Mask/style.scss +104 -0
- package/src/constructors/Mask/types.ts +71 -0
- package/src/constructors/Menu/Menu.ts +179 -0
- package/src/constructors/Menu/MenuDesign.tsx +244 -0
- package/src/constructors/Menu/MenuInclude.ts +110 -0
- package/src/constructors/Menu/MenuRequest.ts +101 -0
- package/src/constructors/Menu/MenuSearch.ts +49 -0
- package/src/constructors/Menu/MenuValue.ts +73 -0
- package/src/constructors/Menu/MenuWindow.ts +89 -0
- package/src/constructors/Menu/basicTypes.ts +41 -0
- package/src/constructors/Menu/index.ts +6 -0
- package/src/constructors/Menu/properties.json +17 -0
- package/src/constructors/Menu/props.ts +79 -0
- package/src/constructors/Menu/style.scss +17 -0
- package/src/constructors/Menu/types.ts +79 -0
- package/src/constructors/MotionTransform/MotionTransform.ts +87 -0
- package/src/constructors/MotionTransform/MotionTransformClassesInclude.ts +38 -0
- package/src/constructors/MotionTransform/MotionTransformDesign.tsx +242 -0
- package/src/constructors/MotionTransform/MotionTransformElement.ts +220 -0
- package/src/constructors/MotionTransform/MotionTransformEvent.ts +118 -0
- package/src/constructors/MotionTransform/MotionTransformGo.ts +47 -0
- package/src/constructors/MotionTransform/MotionTransformInclude.ts +123 -0
- package/src/constructors/MotionTransform/MotionTransformSize.ts +97 -0
- package/src/constructors/MotionTransform/MotionTransformState.ts +250 -0
- package/src/constructors/MotionTransform/basicTypes.ts +121 -0
- package/src/constructors/MotionTransform/index.ts +7 -0
- package/src/constructors/MotionTransform/properties.json +35 -0
- package/src/constructors/MotionTransform/props.ts +50 -0
- package/src/constructors/MotionTransform/style.scss +180 -0
- package/src/constructors/MotionTransform/types.ts +86 -0
- package/src/constructors/Progress/Progress.ts +184 -0
- package/src/constructors/Progress/ProgressDesign.tsx +175 -0
- package/src/constructors/Progress/ProgressInclude.ts +67 -0
- package/src/constructors/Progress/basicTypes.ts +12 -0
- package/src/constructors/Progress/index.ts +6 -0
- package/src/constructors/Progress/properties.json +47 -0
- package/src/constructors/Progress/props.ts +54 -0
- package/src/constructors/Progress/style.scss +374 -0
- package/src/constructors/Progress/types.ts +43 -0
- package/src/constructors/Ripple/Ripple.ts +46 -0
- package/src/constructors/Ripple/RippleDesign.tsx +112 -0
- package/src/constructors/Ripple/RippleInclude.ts +39 -0
- package/src/constructors/Ripple/RippleItem.ts +62 -0
- package/src/constructors/Ripple/basicTypes.ts +3 -0
- package/src/constructors/Ripple/index.ts +6 -0
- package/src/constructors/Ripple/properties.json +9 -0
- package/src/constructors/Ripple/props.ts +28 -0
- package/src/constructors/Ripple/style.scss +62 -0
- package/src/constructors/Ripple/types.ts +41 -0
- package/src/constructors/Scrollbar/Scrollbar.ts +66 -0
- package/src/constructors/Scrollbar/ScrollbarBorder.ts +243 -0
- package/src/constructors/Scrollbar/ScrollbarDesign.tsx +126 -0
- package/src/constructors/Scrollbar/ScrollbarInclude.ts +80 -0
- package/src/constructors/Scrollbar/basicTypes.ts +42 -0
- package/src/constructors/Scrollbar/index.ts +5 -0
- package/src/constructors/Scrollbar/properties.json +33 -0
- package/src/constructors/Scrollbar/props.ts +37 -0
- package/src/constructors/Scrollbar/style.scss +117 -0
- package/src/constructors/Scrollbar/types.ts +52 -0
- package/src/constructors/Skeleton/Skeleton.ts +86 -0
- package/src/constructors/Skeleton/SkeletonDesign.tsx +117 -0
- package/src/constructors/Skeleton/SkeletonInclude.ts +61 -0
- package/src/constructors/Skeleton/basicTypes.ts +16 -0
- package/src/constructors/Skeleton/const.ts +1 -0
- package/src/constructors/Skeleton/index.ts +6 -0
- package/src/constructors/Skeleton/properties.json +24 -0
- package/src/constructors/Skeleton/props.ts +28 -0
- package/src/constructors/Skeleton/style.scss +112 -0
- package/src/constructors/Skeleton/types.ts +46 -0
- package/src/constructors/Window/Window.ts +212 -0
- package/src/constructors/Window/WindowClasses.ts +180 -0
- package/src/constructors/Window/WindowClassesInclude.ts +39 -0
- package/src/constructors/Window/WindowClient.ts +93 -0
- package/src/constructors/Window/WindowCoordinates.ts +257 -0
- package/src/constructors/Window/WindowDesign.tsx +278 -0
- package/src/constructors/Window/WindowElement.ts +84 -0
- package/src/constructors/Window/WindowEmit.ts +52 -0
- package/src/constructors/Window/WindowEvent.ts +157 -0
- package/src/constructors/Window/WindowFlash.ts +70 -0
- package/src/constructors/Window/WindowHook.ts +110 -0
- package/src/constructors/Window/WindowInclude.ts +134 -0
- package/src/constructors/Window/WindowOpen.ts +292 -0
- package/src/constructors/Window/WindowOrigin.ts +85 -0
- package/src/constructors/Window/WindowPersistent.ts +89 -0
- package/src/constructors/Window/WindowPosition.ts +358 -0
- package/src/constructors/Window/WindowStatic.ts +102 -0
- package/src/constructors/Window/WindowStatus.ts +138 -0
- package/src/constructors/Window/WindowStyles.ts +78 -0
- package/src/constructors/Window/WindowVerification.ts +287 -0
- package/src/constructors/Window/basicTypes.ts +186 -0
- package/src/constructors/Window/index.ts +7 -0
- package/src/constructors/Window/properties.json +236 -0
- package/src/constructors/Window/props.ts +88 -0
- package/src/constructors/Window/style.scss +262 -0
- package/src/constructors/Window/types.ts +124 -0
- package/src/functions/getClassTegAStatic.ts +8 -0
- package/src/library.ts +36 -0
- package/src/types/captionTypes.ts +15 -0
- package/src/types/descriptionTypes.ts +15 -0
- package/src/types/enabledTypes.ts +9 -0
- package/src/types/eventClickTypes.ts +51 -0
- package/src/types/fieldTypes.ts +282 -0
- package/src/types/labelTypes.ts +30 -0
- package/src/types/modelTypes.ts +23 -0
- package/src/types/prefixTypes.ts +15 -0
- package/src/types/suffixTypes.ts +15 -0
- package/src/vite-env.d.ts +1 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { h, type VNode } from 'vue'
|
|
2
|
+
import {
|
|
3
|
+
type ConstrOptions,
|
|
4
|
+
type ConstrStyles,
|
|
5
|
+
DesignConstructorAbstract
|
|
6
|
+
} from '@dxtmisha/functional'
|
|
7
|
+
|
|
8
|
+
import { Mask } from './Mask'
|
|
9
|
+
|
|
10
|
+
import {
|
|
11
|
+
type MaskPropsBasic
|
|
12
|
+
} from './props'
|
|
13
|
+
import {
|
|
14
|
+
type MaskClasses,
|
|
15
|
+
type MaskComponents,
|
|
16
|
+
type MaskEmits,
|
|
17
|
+
type MaskExpose,
|
|
18
|
+
type MaskSlots
|
|
19
|
+
} from './types'
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* MaskDesign
|
|
23
|
+
*/
|
|
24
|
+
export class MaskDesign<
|
|
25
|
+
COMP extends MaskComponents,
|
|
26
|
+
EXPOSE extends MaskExpose,
|
|
27
|
+
CLASSES extends MaskClasses,
|
|
28
|
+
P extends MaskPropsBasic
|
|
29
|
+
> extends DesignConstructorAbstract<
|
|
30
|
+
HTMLInputElement,
|
|
31
|
+
COMP,
|
|
32
|
+
MaskEmits,
|
|
33
|
+
EXPOSE,
|
|
34
|
+
MaskSlots,
|
|
35
|
+
CLASSES,
|
|
36
|
+
P
|
|
37
|
+
> {
|
|
38
|
+
protected readonly item: Mask
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Constructor
|
|
42
|
+
* @param name class name/ название класса
|
|
43
|
+
* @param props properties/ свойства
|
|
44
|
+
* @param options list of additional parameters/ список дополнительных параметров
|
|
45
|
+
*/
|
|
46
|
+
constructor(
|
|
47
|
+
name: string,
|
|
48
|
+
props: Readonly<P>,
|
|
49
|
+
options?: ConstrOptions<COMP, MaskEmits, P>
|
|
50
|
+
) {
|
|
51
|
+
super(
|
|
52
|
+
name,
|
|
53
|
+
props,
|
|
54
|
+
options
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
this.item = new Mask(
|
|
58
|
+
this.props,
|
|
59
|
+
this.refs,
|
|
60
|
+
this.element,
|
|
61
|
+
this.getDesign(),
|
|
62
|
+
this.getName(),
|
|
63
|
+
this.components,
|
|
64
|
+
this.slots,
|
|
65
|
+
this.emits
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
this.init()
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Initialization of all the necessary properties for work
|
|
73
|
+
*
|
|
74
|
+
* Инициализация всех необходимых свойств для работы.
|
|
75
|
+
*/
|
|
76
|
+
protected initExpose(): EXPOSE {
|
|
77
|
+
return {
|
|
78
|
+
valueBasic: this.item.basic,
|
|
79
|
+
value: this.item.value.item,
|
|
80
|
+
setValue: this.item.set,
|
|
81
|
+
clear: this.item.clear
|
|
82
|
+
} as EXPOSE
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Improvement of the obtained list of classes.
|
|
87
|
+
*
|
|
88
|
+
* Доработка полученного списка классов.
|
|
89
|
+
*/
|
|
90
|
+
protected initClasses(): Partial<CLASSES> {
|
|
91
|
+
return {
|
|
92
|
+
main: this.item.classes.value,
|
|
93
|
+
...{
|
|
94
|
+
// :classes [!] System label / Системная метка
|
|
95
|
+
input: this.getSubClass('input'),
|
|
96
|
+
character: this.getSubClass('character'),
|
|
97
|
+
characterItem: this.getSubClass('character__item')
|
|
98
|
+
// :classes [!] System label / Системная метка
|
|
99
|
+
}
|
|
100
|
+
} as Partial<CLASSES>
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Refinement of the received list of styles.
|
|
105
|
+
*
|
|
106
|
+
* Доработка полученного списка стилей.
|
|
107
|
+
*/
|
|
108
|
+
protected initStyles(): ConstrStyles {
|
|
109
|
+
return {}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* A method for rendering.
|
|
114
|
+
*
|
|
115
|
+
* Метод для рендеринга.
|
|
116
|
+
*/
|
|
117
|
+
protected initRender(): VNode {
|
|
118
|
+
const children: any[] = [
|
|
119
|
+
...this.renderData(),
|
|
120
|
+
...this.renderInput(),
|
|
121
|
+
...this.renderView()
|
|
122
|
+
]
|
|
123
|
+
|
|
124
|
+
return h('span', {
|
|
125
|
+
...this.getAttrs(),
|
|
126
|
+
class: this.classes?.value.main
|
|
127
|
+
}, children)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Element for storing the final data.
|
|
132
|
+
*
|
|
133
|
+
* Элемент для хранения конечных данных.
|
|
134
|
+
*/
|
|
135
|
+
protected renderData = (): VNode[] => {
|
|
136
|
+
if (this.props.name) {
|
|
137
|
+
return [
|
|
138
|
+
h('input', {
|
|
139
|
+
type: 'hidden',
|
|
140
|
+
name: this.props.name,
|
|
141
|
+
value: this.item.value.item.value
|
|
142
|
+
})
|
|
143
|
+
]
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return []
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Rendering method for input.
|
|
151
|
+
*
|
|
152
|
+
* Метод рендеринга для ввода.
|
|
153
|
+
*/
|
|
154
|
+
protected renderInput = (): VNode[] => {
|
|
155
|
+
return [
|
|
156
|
+
h(
|
|
157
|
+
'input',
|
|
158
|
+
{
|
|
159
|
+
...this.props.inputAttrs,
|
|
160
|
+
|
|
161
|
+
ref: this.element,
|
|
162
|
+
class: this.classes?.value.input,
|
|
163
|
+
|
|
164
|
+
type: 'text',
|
|
165
|
+
value: this.item.basic.value,
|
|
166
|
+
|
|
167
|
+
onFocus: this.item.event.onFocus,
|
|
168
|
+
onBlur: this.item.event.onBlur,
|
|
169
|
+
onKeydown: this.item.event.onKeydown,
|
|
170
|
+
onKeyup: this.item.event.onKeyup,
|
|
171
|
+
onBeforeinput: this.item.event.onBeforeinput,
|
|
172
|
+
onInput: this.item.event.onInput,
|
|
173
|
+
onChange: this.item.event.onChange,
|
|
174
|
+
onPaste: this.item.event.onPaste,
|
|
175
|
+
onClick: this.item.event.onClick
|
|
176
|
+
}
|
|
177
|
+
)
|
|
178
|
+
]
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Rendering method for displaying the mask and the input data.
|
|
183
|
+
*
|
|
184
|
+
* Метод рендеринга для вывода маски и вводимых данных.
|
|
185
|
+
*/
|
|
186
|
+
protected renderView = (): VNode[] => {
|
|
187
|
+
const view = this.item.view.item.value
|
|
188
|
+
const children: any[] = []
|
|
189
|
+
let innerHTML: undefined | string = undefined
|
|
190
|
+
|
|
191
|
+
if (view.length > 0) {
|
|
192
|
+
view.forEach((character, key) => {
|
|
193
|
+
children.push(
|
|
194
|
+
h('span', {
|
|
195
|
+
key,
|
|
196
|
+
class: character.className,
|
|
197
|
+
innerHTML: character.value === ' ' ? ' ' : character.value
|
|
198
|
+
})
|
|
199
|
+
)
|
|
200
|
+
})
|
|
201
|
+
} else {
|
|
202
|
+
innerHTML = ' '
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return [
|
|
206
|
+
h(
|
|
207
|
+
'span',
|
|
208
|
+
{
|
|
209
|
+
'class': this.classes?.value.character,
|
|
210
|
+
'data-length': '1',
|
|
211
|
+
innerHTML
|
|
212
|
+
},
|
|
213
|
+
children
|
|
214
|
+
)
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { MaskValidation } from './MaskValidation'
|
|
2
|
+
import type { ConstrEmit } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
import type { MaskEventData } from './basicTypes'
|
|
5
|
+
import type { MaskEmits } from './types'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Class for event invocation
|
|
9
|
+
*
|
|
10
|
+
* Класс для вызова событий
|
|
11
|
+
*/
|
|
12
|
+
export class MaskEmit {
|
|
13
|
+
/** Current event type key/ Текущий ключ типа события */
|
|
14
|
+
protected type?: string & keyof MaskEmits
|
|
15
|
+
/** Native event object/ Объект нативного события */
|
|
16
|
+
protected event?: Event
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Constructor
|
|
20
|
+
* @param validation object for working with validation/ объект для работы с валидацией
|
|
21
|
+
* @param emits emit function (Design system bridge)/ функция вызова события
|
|
22
|
+
*/
|
|
23
|
+
constructor(
|
|
24
|
+
protected readonly validation: MaskValidation,
|
|
25
|
+
protected readonly emits?: ConstrEmit<MaskEmits>
|
|
26
|
+
) {
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Checks whether extra data (validation) should be generated for current event
|
|
31
|
+
*
|
|
32
|
+
* Проверяет, нужно ли генерировать дополнительные данные (валидацию) для текущего события
|
|
33
|
+
*/
|
|
34
|
+
isValue(): boolean {
|
|
35
|
+
return Boolean(this.type && ['input', 'change'].indexOf(this.type) >= 0)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Initializes event handling and emits event with optional validation payload
|
|
40
|
+
*
|
|
41
|
+
* Инициализирует обработку и вызывает событие с опциональной валидацией
|
|
42
|
+
*/
|
|
43
|
+
go(): this {
|
|
44
|
+
if (
|
|
45
|
+
this.type
|
|
46
|
+
&& this.event
|
|
47
|
+
) {
|
|
48
|
+
const validation = this.isValue() ? this.validation.item.value : undefined
|
|
49
|
+
|
|
50
|
+
this.emits?.(
|
|
51
|
+
this.type as 'input',
|
|
52
|
+
this.event as InputEvent,
|
|
53
|
+
validation as MaskEventData
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
if (
|
|
57
|
+
this.type === 'inputLite'
|
|
58
|
+
|| this.type === 'changeLite'
|
|
59
|
+
) {
|
|
60
|
+
this.emits?.(
|
|
61
|
+
this.type as never,
|
|
62
|
+
validation as never
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return this
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Sets both event type and native event object
|
|
72
|
+
*
|
|
73
|
+
* Устанавливает одновременно тип события и объект события
|
|
74
|
+
* @param type event name/ название события
|
|
75
|
+
* @param event event object/ объект события
|
|
76
|
+
*/
|
|
77
|
+
set<E extends Event>(
|
|
78
|
+
type: string & keyof MaskEmits,
|
|
79
|
+
event: E
|
|
80
|
+
): this {
|
|
81
|
+
this.setType(type)
|
|
82
|
+
this.setEvent(event)
|
|
83
|
+
|
|
84
|
+
return this
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Sets event type
|
|
89
|
+
*
|
|
90
|
+
* Устанавливает тип события
|
|
91
|
+
* @param type event name/ название события
|
|
92
|
+
*/
|
|
93
|
+
setType(type: string & keyof MaskEmits): this {
|
|
94
|
+
this.type = type
|
|
95
|
+
return this
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Sets native event object
|
|
100
|
+
*
|
|
101
|
+
* Устанавливает объект события
|
|
102
|
+
* @param event event object/ объект события
|
|
103
|
+
*/
|
|
104
|
+
setEvent<E extends Event>(event: E): this {
|
|
105
|
+
this.event = event
|
|
106
|
+
return this
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Resets all internal state (type + event)
|
|
111
|
+
*
|
|
112
|
+
* Сбрасывает всё внутреннее состояние (тип и событие)
|
|
113
|
+
*/
|
|
114
|
+
reset(): this {
|
|
115
|
+
this.resetType()
|
|
116
|
+
this.resetEvent()
|
|
117
|
+
|
|
118
|
+
return this
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Resets stored event type
|
|
123
|
+
*
|
|
124
|
+
* Сбрасывает сохранённый тип события
|
|
125
|
+
*/
|
|
126
|
+
resetType(): this {
|
|
127
|
+
this.type = undefined
|
|
128
|
+
return this
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Resets stored native event
|
|
133
|
+
*
|
|
134
|
+
* Сбрасывает сохранённый объект события
|
|
135
|
+
*/
|
|
136
|
+
resetEvent(): this {
|
|
137
|
+
this.event = undefined
|
|
138
|
+
return this
|
|
139
|
+
}
|
|
140
|
+
}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import { eventStopPropagation, getClipboardData } from '@dxtmisha/functional'
|
|
2
|
+
|
|
3
|
+
import { MaskBuffer } from './MaskBuffer'
|
|
4
|
+
import { MaskFocus } from './MaskFocus'
|
|
5
|
+
import { MaskCharacterLength } from './MaskCharacterLength'
|
|
6
|
+
import { MaskRight } from './MaskRight'
|
|
7
|
+
import { MaskSelection } from './MaskSelection'
|
|
8
|
+
import { MaskValueBasic } from './MaskValueBasic'
|
|
9
|
+
import { MaskEmit } from './MaskEmit'
|
|
10
|
+
import { MaskData } from './MaskData'
|
|
11
|
+
|
|
12
|
+
import type { MaskEventSelection } from './basicTypes'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Class for working with events.
|
|
16
|
+
*
|
|
17
|
+
* Класс для работы с событиями.
|
|
18
|
+
*/
|
|
19
|
+
export class MaskEvent {
|
|
20
|
+
/** Change flag/ Флаг изменения */
|
|
21
|
+
protected change: boolean = false
|
|
22
|
+
/** Unidentified selection data/ Данные неопознанного выделения */
|
|
23
|
+
protected unidentified?: MaskEventSelection
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Constructor
|
|
27
|
+
* @param buffer object for managing cached input data/ объект управления кешированными вводимыми данными
|
|
28
|
+
* @param focus object for handling input field focus/ объект для работы с фокусировкой поля ввода
|
|
29
|
+
* @param characterLength object for managing input length/ объект управления длиной ввода
|
|
30
|
+
* @param right object for right alignment/ объект для выравнивания направо
|
|
31
|
+
* @param selection object for managing cursor position/ объект для управления положением курсора
|
|
32
|
+
* @param valueBasic object for working with base values/ объект для работы с базовыми значениями
|
|
33
|
+
* @param emit object for handling callback events/ объект для работы с обратными событиями
|
|
34
|
+
* @param data object for managing input/ объект для управления вводом
|
|
35
|
+
*/
|
|
36
|
+
constructor(
|
|
37
|
+
protected readonly buffer: MaskBuffer,
|
|
38
|
+
protected readonly focus: MaskFocus,
|
|
39
|
+
protected readonly characterLength: MaskCharacterLength,
|
|
40
|
+
protected readonly right: MaskRight,
|
|
41
|
+
protected readonly selection: MaskSelection,
|
|
42
|
+
protected readonly valueBasic: MaskValueBasic,
|
|
43
|
+
protected readonly emit: MaskEmit,
|
|
44
|
+
protected readonly data: MaskData
|
|
45
|
+
) {}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Capture of the event in focus.
|
|
49
|
+
*
|
|
50
|
+
* Перехват события при получении фокуса.
|
|
51
|
+
* @param event event object/ объект события
|
|
52
|
+
*/
|
|
53
|
+
readonly onFocus = (event: FocusEvent): void => {
|
|
54
|
+
this.change = false
|
|
55
|
+
this.focus.in()
|
|
56
|
+
|
|
57
|
+
this.emit
|
|
58
|
+
.set('focus', event)
|
|
59
|
+
.go()
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Capture of the event when focus is lost.
|
|
64
|
+
*
|
|
65
|
+
* Перехват события при потере фокуса.
|
|
66
|
+
* @param event event object/ объект события
|
|
67
|
+
*/
|
|
68
|
+
readonly onBlur = (event: FocusEvent): void => {
|
|
69
|
+
if (this.change) {
|
|
70
|
+
this.emit
|
|
71
|
+
.setType('change')
|
|
72
|
+
.go()
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
this.focus.out()
|
|
76
|
+
this.emit
|
|
77
|
+
.set('blur', event)
|
|
78
|
+
.go()
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Intercepting key press to get a character.
|
|
83
|
+
*
|
|
84
|
+
* Перехват нажатия клавиши для получения символа.
|
|
85
|
+
* @param event invoked event/ вызываемое событие
|
|
86
|
+
*/
|
|
87
|
+
readonly onKeydown = (event: KeyboardEvent): void => {
|
|
88
|
+
const info = this.getSelectionInfo(event)
|
|
89
|
+
const { start, end } = info
|
|
90
|
+
|
|
91
|
+
this.emit
|
|
92
|
+
.set('keydown', event)
|
|
93
|
+
.go()
|
|
94
|
+
|
|
95
|
+
if (this.isMetaKey(event)) {
|
|
96
|
+
return undefined
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (this.isKey(event)) {
|
|
100
|
+
if (event.key === 'Backspace') {
|
|
101
|
+
if (start > 0 || start !== end) {
|
|
102
|
+
this.data.pop(start, end)
|
|
103
|
+
}
|
|
104
|
+
} else if (event.key.length <= 1) {
|
|
105
|
+
if (start === end) {
|
|
106
|
+
if (this.buffer.go(event.key)) {
|
|
107
|
+
this.data.add(start, event.key)
|
|
108
|
+
}
|
|
109
|
+
} else {
|
|
110
|
+
this.buffer.goStart()
|
|
111
|
+
this.data
|
|
112
|
+
.pop(start, end)
|
|
113
|
+
.add(this.selection.getShift(), event.key)
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
} else {
|
|
117
|
+
this.unidentified = info
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Intercept key release to check arrow presses.
|
|
123
|
+
*
|
|
124
|
+
* Перехват отпускания клавиши для проверки нажатия стрелок.
|
|
125
|
+
* @param event invoked event/ вызываемое событие
|
|
126
|
+
*/
|
|
127
|
+
readonly onKeyup = (event: KeyboardEvent): void => {
|
|
128
|
+
this.emit
|
|
129
|
+
.set('keyup', event)
|
|
130
|
+
.go()
|
|
131
|
+
|
|
132
|
+
if (this.isMetaKey(event)) {
|
|
133
|
+
return undefined
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (
|
|
137
|
+
this.isKey(event)
|
|
138
|
+
&& [
|
|
139
|
+
'ArrowUp',
|
|
140
|
+
'ArrowRight',
|
|
141
|
+
'ArrowDown',
|
|
142
|
+
'ArrowLeft'
|
|
143
|
+
].indexOf(event.key) >= 0
|
|
144
|
+
) {
|
|
145
|
+
this.makeToEnd(event)
|
|
146
|
+
this.makeToStart(event)
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Intercepting the event before data modification.
|
|
152
|
+
*
|
|
153
|
+
* Перехват события перед изменением данных.
|
|
154
|
+
* @param event invoked event/ вызываемое событие
|
|
155
|
+
*/
|
|
156
|
+
readonly onBeforeinput = (event: InputEvent): void => {
|
|
157
|
+
this.emit
|
|
158
|
+
.set('beforeinput', event)
|
|
159
|
+
.go()
|
|
160
|
+
|
|
161
|
+
if (!this.unidentified) {
|
|
162
|
+
this.makeChange(event)
|
|
163
|
+
eventStopPropagation(event)
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Intercepting the event during data modification.
|
|
169
|
+
*
|
|
170
|
+
* Перехват события при изменении данных.
|
|
171
|
+
* @param event invoked event/ вызываемое событие
|
|
172
|
+
*/
|
|
173
|
+
readonly onInput = (event: InputEvent): void => {
|
|
174
|
+
if (this.unidentified) {
|
|
175
|
+
const target = event.target as HTMLInputElement
|
|
176
|
+
|
|
177
|
+
if (
|
|
178
|
+
this.unidentified.length > target.value.length
|
|
179
|
+
|| this.unidentified.start !== this.unidentified.end
|
|
180
|
+
) {
|
|
181
|
+
this.data.pop(this.unidentified.start, this.unidentified.end)
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if ('data' in event) {
|
|
185
|
+
if (
|
|
186
|
+
event.data
|
|
187
|
+
&& this.buffer.go(event.data)
|
|
188
|
+
) {
|
|
189
|
+
this.data.add(this.unidentified.start, event.data)
|
|
190
|
+
}
|
|
191
|
+
} else {
|
|
192
|
+
this.data.reset(target.value)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
this.makeChange(event)
|
|
196
|
+
this.unidentified = undefined
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Intercept paste event for inserting data from clipboard.
|
|
202
|
+
*
|
|
203
|
+
* Перехват события вставки данных из буфера обмена.
|
|
204
|
+
* @param event invoked event/ вызываемое событие
|
|
205
|
+
*/
|
|
206
|
+
readonly onPaste = (event: ClipboardEvent): void => {
|
|
207
|
+
const { start, end } = this.getSelectionInfo(event)
|
|
208
|
+
|
|
209
|
+
getClipboardData(event)
|
|
210
|
+
.then((data) => {
|
|
211
|
+
const text = data.split('')
|
|
212
|
+
|
|
213
|
+
if (start === end) {
|
|
214
|
+
this.data.add(start, this.data.extra(text))
|
|
215
|
+
} else {
|
|
216
|
+
this.data
|
|
217
|
+
.pop(start, end)
|
|
218
|
+
.add(this.selection.getShift(), this.data.extra(text))
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
this.change = true
|
|
222
|
+
this.emit
|
|
223
|
+
.set('paste', event)
|
|
224
|
+
.go()
|
|
225
|
+
})
|
|
226
|
+
.catch(error => console.error('getClipboardData', error))
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Intercept change event (autocomplete support).
|
|
231
|
+
*
|
|
232
|
+
* Перехват события изменения (поддержка автозаполнения).
|
|
233
|
+
* @param event invoked event/ вызываемое событие
|
|
234
|
+
*/
|
|
235
|
+
readonly onChange = (event: Event): void => {
|
|
236
|
+
const target = event.target as HTMLInputElement
|
|
237
|
+
|
|
238
|
+
this.data.reset(target.value)
|
|
239
|
+
this.emit
|
|
240
|
+
.set('change', event)
|
|
241
|
+
.go()
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Intercept click to adjust selection if needed.
|
|
246
|
+
*
|
|
247
|
+
* Перехват клика для корректировки выделения при необходимости.
|
|
248
|
+
* @param event invoked event/ вызываемое событие
|
|
249
|
+
*/
|
|
250
|
+
readonly onClick = (event: MouseEvent): void => {
|
|
251
|
+
this.makeToEnd(event)
|
|
252
|
+
this.makeToStart(event)
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Was a meta button pressed.
|
|
257
|
+
*
|
|
258
|
+
* Была ли нажата мета-кнопка.
|
|
259
|
+
* @param event invoked event/ вызываемое событие
|
|
260
|
+
*/
|
|
261
|
+
protected isMetaKey(event: KeyboardEvent): boolean {
|
|
262
|
+
return event.metaKey || event.altKey || event.ctrlKey
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Checks key value in the event.
|
|
267
|
+
*
|
|
268
|
+
* Проверяет значение key в событии.
|
|
269
|
+
* @param event invoked event/ вызываемое событие
|
|
270
|
+
*/
|
|
271
|
+
protected isKey(event: KeyboardEvent): boolean {
|
|
272
|
+
return 'key' in event && event.key !== 'Unidentified'
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Getting data about selection on the event element.
|
|
277
|
+
*
|
|
278
|
+
* Получение данных о выделении у элемента события.
|
|
279
|
+
* @param event invoked event/ вызываемое событие
|
|
280
|
+
*/
|
|
281
|
+
protected getSelectionInfo(event: Event): MaskEventSelection {
|
|
282
|
+
const target = event.target as HTMLInputElement
|
|
283
|
+
|
|
284
|
+
return {
|
|
285
|
+
target,
|
|
286
|
+
start: target.selectionStart ?? 0,
|
|
287
|
+
end: target.selectionEnd ?? 0,
|
|
288
|
+
length: target.value.length
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Preparing to send an event.
|
|
294
|
+
*
|
|
295
|
+
* Подготовка для отправки события.
|
|
296
|
+
* @param event invoked event/ вызываемое событие
|
|
297
|
+
*/
|
|
298
|
+
protected makeChange(event: Event): void {
|
|
299
|
+
this.change = true
|
|
300
|
+
|
|
301
|
+
this.emit.set('input', event)
|
|
302
|
+
|
|
303
|
+
if (this.buffer.is()) {
|
|
304
|
+
return
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
this.emit.go()
|
|
308
|
+
this.emit.resetType()
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Changes cursor position if alignment is right.
|
|
313
|
+
*
|
|
314
|
+
* Изменяет позицию курсора, если выравнивание справа.
|
|
315
|
+
* @param event invoked event/ вызываемое событие
|
|
316
|
+
*/
|
|
317
|
+
protected makeToEnd(event: Event): void {
|
|
318
|
+
if (this.right.isRight()) {
|
|
319
|
+
const length = this.valueBasic.getLength()
|
|
320
|
+
const { target, start, end } = this.getSelectionInfo(event)
|
|
321
|
+
|
|
322
|
+
if (start > length) {
|
|
323
|
+
target.selectionStart = length
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
if (end > length) {
|
|
327
|
+
target.selectionEnd = length
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Check selection from the start (before special chars).
|
|
334
|
+
*
|
|
335
|
+
* Проверка выделения спереди (перед спецсимволами).
|
|
336
|
+
* @param event invoked event/ вызываемое событие
|
|
337
|
+
*/
|
|
338
|
+
protected makeToStart(event: Event): void {
|
|
339
|
+
const selection = this.selection.getFirst()
|
|
340
|
+
const { target, start } = this.getSelectionInfo(event)
|
|
341
|
+
|
|
342
|
+
if (start < selection) {
|
|
343
|
+
target.selectionStart = selection
|
|
344
|
+
target.selectionEnd = selection
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|