@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,372 @@
|
|
|
1
|
+
import { computed, h, type VNode } from 'vue'
|
|
2
|
+
import {
|
|
3
|
+
type ConstrOptions,
|
|
4
|
+
type ConstrStyles,
|
|
5
|
+
DesignConstructorAbstract,
|
|
6
|
+
isString
|
|
7
|
+
} from '@dxtmisha/functional'
|
|
8
|
+
|
|
9
|
+
import { Field } from './Field'
|
|
10
|
+
|
|
11
|
+
import {
|
|
12
|
+
type FieldPropsBasic
|
|
13
|
+
} from './props'
|
|
14
|
+
import {
|
|
15
|
+
type FieldClasses,
|
|
16
|
+
type FieldComponents,
|
|
17
|
+
type FieldEmits,
|
|
18
|
+
type FieldExpose,
|
|
19
|
+
type FieldSlots
|
|
20
|
+
} from './types'
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* FieldDesign
|
|
24
|
+
*/
|
|
25
|
+
export class FieldDesign<
|
|
26
|
+
COMP extends FieldComponents,
|
|
27
|
+
EXPOSE extends FieldExpose,
|
|
28
|
+
CLASSES extends FieldClasses,
|
|
29
|
+
P extends FieldPropsBasic
|
|
30
|
+
> extends DesignConstructorAbstract<
|
|
31
|
+
HTMLLabelElement,
|
|
32
|
+
COMP,
|
|
33
|
+
FieldEmits,
|
|
34
|
+
EXPOSE,
|
|
35
|
+
FieldSlots,
|
|
36
|
+
CLASSES,
|
|
37
|
+
P
|
|
38
|
+
> {
|
|
39
|
+
protected readonly item: Field
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Constructor
|
|
43
|
+
* @param name class name/ название класса
|
|
44
|
+
* @param props properties/ свойства
|
|
45
|
+
* @param options list of additional parameters/ список дополнительных параметров
|
|
46
|
+
*/
|
|
47
|
+
constructor(
|
|
48
|
+
name: string,
|
|
49
|
+
props: Readonly<P>,
|
|
50
|
+
options?: ConstrOptions<COMP, FieldEmits, P>
|
|
51
|
+
) {
|
|
52
|
+
super(
|
|
53
|
+
name,
|
|
54
|
+
props,
|
|
55
|
+
options
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
this.item = new Field(
|
|
59
|
+
this.props,
|
|
60
|
+
this.refs,
|
|
61
|
+
this.element,
|
|
62
|
+
this.getDesign(),
|
|
63
|
+
this.getName(),
|
|
64
|
+
this.components,
|
|
65
|
+
this.slots,
|
|
66
|
+
this.emits
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
this.init()
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Initialization of all the necessary properties for work
|
|
74
|
+
*
|
|
75
|
+
* Инициализация всех необходимых свойств для работы.
|
|
76
|
+
*/
|
|
77
|
+
protected initExpose(): EXPOSE {
|
|
78
|
+
return {} as EXPOSE
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Improvement of the obtained list of classes.
|
|
83
|
+
*
|
|
84
|
+
* Доработка полученного списка классов.
|
|
85
|
+
*/
|
|
86
|
+
protected initClasses(): Partial<CLASSES> {
|
|
87
|
+
return {
|
|
88
|
+
main: this.item.classes.value,
|
|
89
|
+
...{
|
|
90
|
+
// :classes [!] System label / Системная метка
|
|
91
|
+
body: this.getSubClass('body'),
|
|
92
|
+
bodyInput: this.getSubClass('body__input'),
|
|
93
|
+
bodyTitle: this.getSubClass('body__title'),
|
|
94
|
+
bodyTitleLabel: this.getSubClass('body__title__label'),
|
|
95
|
+
bodyTitleLabelText: this.getSubClass('body__title__label__text'),
|
|
96
|
+
bodyScoreboard: this.getSubClass('body__scoreboard'),
|
|
97
|
+
bodyScoreboardLeft: this.getSubClass('body__scoreboard__left'),
|
|
98
|
+
bodyScoreboardRight: this.getSubClass('body__scoreboard__right'),
|
|
99
|
+
bodyScoreboardSpace: this.getSubClass('body__scoreboard__space'),
|
|
100
|
+
bodyScoreboardInput: this.getSubClass('body__scoreboard__input'),
|
|
101
|
+
bodyBorder: this.getSubClass('body__border'),
|
|
102
|
+
required: this.getSubClass('required')
|
|
103
|
+
// :classes [!] System label / Системная метка
|
|
104
|
+
}
|
|
105
|
+
} as Partial<CLASSES>
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Refinement of the received list of styles.
|
|
110
|
+
*
|
|
111
|
+
* Доработка полученного списка стилей.
|
|
112
|
+
*/
|
|
113
|
+
protected initStyles(): ConstrStyles {
|
|
114
|
+
return {}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* A method for rendering.
|
|
119
|
+
*
|
|
120
|
+
* Метод для рендеринга.
|
|
121
|
+
*/
|
|
122
|
+
protected initRender(): VNode {
|
|
123
|
+
const children: any[] = []
|
|
124
|
+
|
|
125
|
+
if (
|
|
126
|
+
(this.props as any).classic
|
|
127
|
+
&& !(this.props as any).basic
|
|
128
|
+
&& !(this.props as any).boxed
|
|
129
|
+
&& !(this.props as any).filled
|
|
130
|
+
&& !(this.props as any).outlined
|
|
131
|
+
&& !(this.props as any).tonal
|
|
132
|
+
) {
|
|
133
|
+
children.push(...this.item.fieldLabel.render())
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
children.push(
|
|
137
|
+
...this.renderBody(),
|
|
138
|
+
...this.item.fieldMessage.render()
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
return h(
|
|
142
|
+
'label',
|
|
143
|
+
{
|
|
144
|
+
...this.getAttrs(),
|
|
145
|
+
ref: this.element,
|
|
146
|
+
class: this.classes?.value.main,
|
|
147
|
+
style: this.styles?.value
|
|
148
|
+
},
|
|
149
|
+
children
|
|
150
|
+
)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Generates body.
|
|
155
|
+
*
|
|
156
|
+
* Генерирует тело.
|
|
157
|
+
*/
|
|
158
|
+
readonly renderBody = (): VNode[] => {
|
|
159
|
+
const children: any[] = [
|
|
160
|
+
this.initSlot('default', undefined, this.item.getControl()),
|
|
161
|
+
this.renderBodyLabel(),
|
|
162
|
+
this.renderBodyScoreboard(),
|
|
163
|
+
this.renderBodyBorder()
|
|
164
|
+
]
|
|
165
|
+
|
|
166
|
+
return [
|
|
167
|
+
h(
|
|
168
|
+
'span',
|
|
169
|
+
{
|
|
170
|
+
class: [
|
|
171
|
+
this.classes?.value.body,
|
|
172
|
+
this.item.skeleton.classes.value
|
|
173
|
+
],
|
|
174
|
+
onClick: this.item.event.onClick
|
|
175
|
+
},
|
|
176
|
+
children
|
|
177
|
+
)
|
|
178
|
+
]
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Generates data for the title.
|
|
183
|
+
*
|
|
184
|
+
* Генерирует данные для заголовка.
|
|
185
|
+
*/
|
|
186
|
+
readonly renderBodyLabel = (): VNode => {
|
|
187
|
+
const children: any[] = [
|
|
188
|
+
this.props.label
|
|
189
|
+
]
|
|
190
|
+
|
|
191
|
+
if (this.props.required) {
|
|
192
|
+
children.push(h(
|
|
193
|
+
'span',
|
|
194
|
+
{ class: this.classes?.value.required }
|
|
195
|
+
))
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
return h(
|
|
199
|
+
'span',
|
|
200
|
+
{ class: this.classes?.value.bodyTitle },
|
|
201
|
+
h(
|
|
202
|
+
'span',
|
|
203
|
+
{ class: this.classes?.value.bodyTitleLabel },
|
|
204
|
+
h(
|
|
205
|
+
'span',
|
|
206
|
+
{ class: this.classes?.value.bodyTitleLabelText },
|
|
207
|
+
children
|
|
208
|
+
)
|
|
209
|
+
)
|
|
210
|
+
)
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Generates data for additional controls.
|
|
215
|
+
*
|
|
216
|
+
* Генерирует данные для дополнительных управлений.
|
|
217
|
+
*/
|
|
218
|
+
readonly renderBodyScoreboard = (): VNode => {
|
|
219
|
+
const children: any[] = [
|
|
220
|
+
...this.renderBodyScoreboardSlot(),
|
|
221
|
+
...this.renderBodyScoreboardIcon(),
|
|
222
|
+
...this.item.prefix.render(),
|
|
223
|
+
...this.item.suffix.render(),
|
|
224
|
+
...this.item.progress.render(),
|
|
225
|
+
...this.renderBodyScoreboardSpace()
|
|
226
|
+
]
|
|
227
|
+
|
|
228
|
+
return h('span', {
|
|
229
|
+
'class': this.classes?.value.bodyScoreboard,
|
|
230
|
+
'data-element': 'scoreboard'
|
|
231
|
+
}, children)
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Generates data for the slot.
|
|
236
|
+
*
|
|
237
|
+
* Генерирует данные для слота.
|
|
238
|
+
*/
|
|
239
|
+
readonly renderBodyScoreboardSlot = (): VNode[] => {
|
|
240
|
+
const slots: any[] = []
|
|
241
|
+
|
|
242
|
+
if (this.slots) {
|
|
243
|
+
if ('leading' in this.slots) {
|
|
244
|
+
slots.push(h(
|
|
245
|
+
'span',
|
|
246
|
+
{ class: this.classes?.value.bodyScoreboardLeft },
|
|
247
|
+
this.initSlot('leading')
|
|
248
|
+
))
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
if ('trailing' in this.slots) {
|
|
252
|
+
slots.push(h(
|
|
253
|
+
'span',
|
|
254
|
+
{ class: this.classes?.value.bodyScoreboardRight },
|
|
255
|
+
this.initSlot('trailing')
|
|
256
|
+
))
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return slots
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Generates all available icons.
|
|
265
|
+
*
|
|
266
|
+
* Генерирует все доступные иконки.
|
|
267
|
+
*/
|
|
268
|
+
readonly renderBodyScoreboardIcon = (): VNode[] => {
|
|
269
|
+
const icons: any[] = [...this.item.icon.render()]
|
|
270
|
+
|
|
271
|
+
if (this.item.icons.isCancel.value) {
|
|
272
|
+
this.components.renderAdd(
|
|
273
|
+
icons,
|
|
274
|
+
'icon',
|
|
275
|
+
this.item.icons.cancelBind.value,
|
|
276
|
+
undefined,
|
|
277
|
+
'cancel'
|
|
278
|
+
)
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
if (this.item.icons.isArrow.value) {
|
|
282
|
+
this.components.renderAdd(
|
|
283
|
+
icons,
|
|
284
|
+
'icon',
|
|
285
|
+
this.item.icons.previousBind.value,
|
|
286
|
+
undefined,
|
|
287
|
+
'previous'
|
|
288
|
+
)
|
|
289
|
+
|
|
290
|
+
this.components.renderAdd(
|
|
291
|
+
icons,
|
|
292
|
+
'icon',
|
|
293
|
+
this.item.icons.nextBind.value,
|
|
294
|
+
undefined,
|
|
295
|
+
'next'
|
|
296
|
+
)
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
return icons
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Generates separators and additional descriptions.
|
|
304
|
+
*
|
|
305
|
+
* Генерирует разделители и дополнительные описания.
|
|
306
|
+
*/
|
|
307
|
+
readonly renderBodyScoreboardSpace = (): VNode[] => {
|
|
308
|
+
const children: any[] = []
|
|
309
|
+
|
|
310
|
+
if (this.item.caption.is.value) {
|
|
311
|
+
children.push(
|
|
312
|
+
h(
|
|
313
|
+
'span',
|
|
314
|
+
{ class: this.classes?.value.bodyScoreboardInput },
|
|
315
|
+
this.focusValue.value
|
|
316
|
+
),
|
|
317
|
+
...this.item.caption.render()
|
|
318
|
+
)
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
return [
|
|
322
|
+
h(
|
|
323
|
+
'span',
|
|
324
|
+
{ class: this.classes?.value.bodyScoreboardSpace },
|
|
325
|
+
children
|
|
326
|
+
)
|
|
327
|
+
]
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Generates border.
|
|
332
|
+
*
|
|
333
|
+
* Генерирует border.
|
|
334
|
+
*/
|
|
335
|
+
readonly renderBodyBorder = (): VNode => {
|
|
336
|
+
return h('span', { class: this.classes?.value.bodyBorder })
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Value for focus.
|
|
341
|
+
*
|
|
342
|
+
* Значение для фокуса.
|
|
343
|
+
*/
|
|
344
|
+
protected readonly focusValue = computed(() => {
|
|
345
|
+
if (isString(this.props.value)) {
|
|
346
|
+
return this.props.value
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
const item = this.lengthElement.value ?? this.inputElement.value
|
|
350
|
+
return item?.nodeName === 'INPUT' ? item.value.toString() : item?.innerText.replace(/[\r\n]+/ig, '').trim()
|
|
351
|
+
})
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Element for counting characters.
|
|
355
|
+
*
|
|
356
|
+
* Элемент для подсчёта символов.
|
|
357
|
+
*/
|
|
358
|
+
protected readonly lengthElement = computed<HTMLInputElement | undefined>(() => {
|
|
359
|
+
return this.element.value
|
|
360
|
+
?.querySelector<HTMLInputElement>(`.${this.classes?.value.bodyInput} [data-length]`) ?? undefined
|
|
361
|
+
})
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* Input element.
|
|
365
|
+
*
|
|
366
|
+
* Элемент ввода.
|
|
367
|
+
*/
|
|
368
|
+
protected readonly inputElement = computed<HTMLInputElement | undefined>(() => {
|
|
369
|
+
return this.element.value
|
|
370
|
+
?.querySelector<HTMLInputElement>(`input.${this.classes?.value.bodyInput}, .${this.classes?.value.bodyInput} input`) ?? undefined
|
|
371
|
+
})
|
|
372
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { computed } from 'vue'
|
|
2
|
+
import type { ConstrBind } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
import type { IconProps } from '../Icon'
|
|
5
|
+
import type { FieldProps } from './props'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Class for displaying an icon for arrow control.
|
|
9
|
+
*
|
|
10
|
+
* Класс для вывода иконки для управления стрелками.
|
|
11
|
+
*/
|
|
12
|
+
export class FieldIcons {
|
|
13
|
+
/**
|
|
14
|
+
* Constructor
|
|
15
|
+
* @param props input data/ входные данные
|
|
16
|
+
* @param className class name/ название класса
|
|
17
|
+
*/
|
|
18
|
+
constructor(
|
|
19
|
+
protected readonly props: FieldProps,
|
|
20
|
+
protected readonly className: string
|
|
21
|
+
) {
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Determines whether to display arrows.
|
|
26
|
+
*
|
|
27
|
+
* Определяет, требуется ли отображение стрелок.
|
|
28
|
+
*/
|
|
29
|
+
readonly isArrow = computed<boolean>(
|
|
30
|
+
() => Boolean(
|
|
31
|
+
(
|
|
32
|
+
this.props.arrowCarousel
|
|
33
|
+
|| this.props.arrowStepper
|
|
34
|
+
)
|
|
35
|
+
&& !this.props.disabled
|
|
36
|
+
)
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Determines whether to display the "Delete" button.
|
|
41
|
+
*
|
|
42
|
+
* Определяет, требуется ли отображение кнопки "Удалить".
|
|
43
|
+
*/
|
|
44
|
+
readonly isCancel = computed<boolean>(() => Boolean(
|
|
45
|
+
this.props.cancel
|
|
46
|
+
&& !this.props.readonly
|
|
47
|
+
&& !this.props.disabled
|
|
48
|
+
&& !this.props.arrowCarousel
|
|
49
|
+
&& !this.props.arrowStepper
|
|
50
|
+
&& (
|
|
51
|
+
(this.props.cancel === 'auto' && this.props.cancelShow)
|
|
52
|
+
|| this.props.cancel === 'always'
|
|
53
|
+
)
|
|
54
|
+
))
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Returns data for the data deletion button.
|
|
58
|
+
*
|
|
59
|
+
* Возвращает данные для кнопки удаления данных.
|
|
60
|
+
*/
|
|
61
|
+
readonly cancelBind = computed<ConstrBind<IconProps>>(() => {
|
|
62
|
+
return {
|
|
63
|
+
'class': `${this.className}__cancel`,
|
|
64
|
+
'icon': this.props.iconClose,
|
|
65
|
+
'dynamic': true,
|
|
66
|
+
'data-event-type': 'cancel'
|
|
67
|
+
}
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Returns data for the left arrow.
|
|
72
|
+
*
|
|
73
|
+
* Возвращает данные для стрелки слева.
|
|
74
|
+
*/
|
|
75
|
+
readonly previousBind = computed<ConstrBind<IconProps>>(() => {
|
|
76
|
+
return {
|
|
77
|
+
'class': `${this.className}__previous`,
|
|
78
|
+
'icon': this.props.arrowCarousel ? this.props.iconArrowLeft : this.props.iconMinus,
|
|
79
|
+
'disabled': this.props.disabled || this.props.disabledPrevious,
|
|
80
|
+
'dynamic': true,
|
|
81
|
+
'data-event-type': 'previous'
|
|
82
|
+
}
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Returns data for the right arrow.
|
|
87
|
+
*
|
|
88
|
+
* Возвращает данные для стрелки справа.
|
|
89
|
+
*/
|
|
90
|
+
readonly nextBind = computed<ConstrBind<IconProps>>(() => {
|
|
91
|
+
return {
|
|
92
|
+
'class': `${this.className}__next`,
|
|
93
|
+
'icon': this.props.arrowCarousel ? this.props.iconArrowRight : this.props.iconPlus,
|
|
94
|
+
'disabled': this.props.disabled || this.props.disabledNext,
|
|
95
|
+
'dynamic': true,
|
|
96
|
+
'data-event-type': 'next'
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { computed } from 'vue'
|
|
2
|
+
import { type ConstrBind, type RefOrNormal, toBinds, getRef } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
import type { FieldPropsInclude } from './basicTypes'
|
|
5
|
+
import type { FieldPropsBasic } from './props'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The class returns data for working with the Field framework.
|
|
9
|
+
*
|
|
10
|
+
* Класс возвращает данные для работы с каркасом поля.
|
|
11
|
+
*/
|
|
12
|
+
export class FieldInclude<
|
|
13
|
+
Props extends FieldPropsInclude = FieldPropsInclude,
|
|
14
|
+
PropsExtra extends ConstrBind<FieldPropsBasic> = ConstrBind<FieldPropsBasic>
|
|
15
|
+
> {
|
|
16
|
+
constructor(
|
|
17
|
+
protected readonly props: Readonly<Props>,
|
|
18
|
+
protected readonly extra?: RefOrNormal<PropsExtra>
|
|
19
|
+
) {
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Returns properties for the field framework/ Возвращает свойства для каркаса поля */
|
|
23
|
+
readonly binds = computed<PropsExtra>(
|
|
24
|
+
() => toBinds<PropsExtra>(
|
|
25
|
+
getRef(this.extra),
|
|
26
|
+
{
|
|
27
|
+
// Status
|
|
28
|
+
focus: this.props.focus,
|
|
29
|
+
selected: this.props.selected,
|
|
30
|
+
readonly: this.props.readonly,
|
|
31
|
+
disabled: this.props.disabled,
|
|
32
|
+
|
|
33
|
+
loading: this.props.loading,
|
|
34
|
+
forceShowMessage: this.props.forceShowMessage,
|
|
35
|
+
|
|
36
|
+
// Value
|
|
37
|
+
label: this.props.label,
|
|
38
|
+
prefix: this.props.prefix,
|
|
39
|
+
suffix: this.props.suffix,
|
|
40
|
+
caption: this.props.caption,
|
|
41
|
+
helperMessage: this.props.helperMessage,
|
|
42
|
+
validationMessage: this.props.validationMessage,
|
|
43
|
+
|
|
44
|
+
required: this.props.required,
|
|
45
|
+
|
|
46
|
+
detail: this.props.detail,
|
|
47
|
+
|
|
48
|
+
// Style
|
|
49
|
+
cancel: this.props.cancel,
|
|
50
|
+
counterShow: this.props.counterShow,
|
|
51
|
+
|
|
52
|
+
icon: this.props.icon,
|
|
53
|
+
iconTurn: this.props.iconTurn,
|
|
54
|
+
iconHide: this.props.iconHide,
|
|
55
|
+
iconDir: this.props.iconDir,
|
|
56
|
+
iconPalette: this.props.iconPalette,
|
|
57
|
+
iconTrailing: this.props.iconTrailing,
|
|
58
|
+
iconTrailingTurnOnly: this.props.iconTrailingTurnOnly,
|
|
59
|
+
iconTrailingDirOnly: this.props.iconTrailingDirOnly,
|
|
60
|
+
iconTrailingPalette: this.props.iconTrailingPalette,
|
|
61
|
+
iconAttrs: this.props.iconAttrs,
|
|
62
|
+
|
|
63
|
+
isSkeleton: this.props.isSkeleton,
|
|
64
|
+
|
|
65
|
+
fieldLabelAttrs: this.props.fieldLabelAttrs,
|
|
66
|
+
fieldMessageAttrs: this.props.fieldMessageAttrs,
|
|
67
|
+
fieldCounterAttrs: this.props.fieldCounterAttrs
|
|
68
|
+
},
|
|
69
|
+
this.props.fieldAttrs
|
|
70
|
+
)
|
|
71
|
+
)
|
|
72
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { onMounted, onUnmounted, onUpdated, type Ref, watch } from 'vue'
|
|
2
|
+
import { EventItem, isDomRuntime } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Input field margin control class.
|
|
6
|
+
*
|
|
7
|
+
* Класс управления отступами для элемента ввода.
|
|
8
|
+
*/
|
|
9
|
+
export class FieldSize {
|
|
10
|
+
protected left: number = 0
|
|
11
|
+
protected right: number = 0
|
|
12
|
+
protected title: number = 0
|
|
13
|
+
|
|
14
|
+
protected event?: EventItem<Window, Event>
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Constructor
|
|
18
|
+
* @param element main element/ главный элемент
|
|
19
|
+
* @param className class name/ название класса
|
|
20
|
+
*/
|
|
21
|
+
constructor(
|
|
22
|
+
protected readonly element: Ref<HTMLLabelElement | undefined>,
|
|
23
|
+
protected readonly className: string
|
|
24
|
+
) {
|
|
25
|
+
watch(element, () => this.update, { immediate: true })
|
|
26
|
+
|
|
27
|
+
if (isDomRuntime()) {
|
|
28
|
+
this.event = new EventItem(window, 'resize', this.update)
|
|
29
|
+
onUnmounted(() => this.event?.stop())
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
onMounted(this.update)
|
|
33
|
+
onUpdated(this.update)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Update margins.
|
|
38
|
+
*
|
|
39
|
+
* Обновление отступов.
|
|
40
|
+
*/
|
|
41
|
+
readonly update = () => {
|
|
42
|
+
requestAnimationFrame(() => {
|
|
43
|
+
const elementSpace = this.getElementSpace()
|
|
44
|
+
const elementPrefix = this.getElementPrefix()
|
|
45
|
+
|
|
46
|
+
if (elementSpace) {
|
|
47
|
+
this.left = elementSpace.offsetLeft
|
|
48
|
+
this.right = (elementSpace.parentElement?.offsetWidth ?? 0) - this.left - elementSpace.offsetWidth
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
this.title = elementPrefix?.offsetLeft ?? elementSpace?.offsetLeft ?? 0
|
|
52
|
+
|
|
53
|
+
this.make()
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Returns separator elements.
|
|
59
|
+
*
|
|
60
|
+
* Возвращает элементы-разделители.
|
|
61
|
+
*/
|
|
62
|
+
protected getElementSpace(): HTMLDivElement | undefined {
|
|
63
|
+
return this.element.value?.querySelector(`.${this.className}__body__scoreboard__space`) ?? undefined
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Returns element with prefix.
|
|
68
|
+
*
|
|
69
|
+
* Возвращает элемент с префиксом.
|
|
70
|
+
*/
|
|
71
|
+
protected getElementPrefix(): HTMLDivElement | undefined {
|
|
72
|
+
return this.element.value?.querySelector(`.${this.className}__prefix`) ?? undefined
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Update input field margins.
|
|
77
|
+
*
|
|
78
|
+
* Обновление отступов для поля ввода.
|
|
79
|
+
*/
|
|
80
|
+
protected make() {
|
|
81
|
+
const element = this.element.value
|
|
82
|
+
|
|
83
|
+
if (element) {
|
|
84
|
+
element.style.setProperty(`--${this.className}-sys-left`, `${this.left}px`)
|
|
85
|
+
element.style.setProperty(`--${this.className}-sys-right`, `${this.right}px`)
|
|
86
|
+
element.style.setProperty(`--${this.className}-sys-title`, `${this.title}px`)
|
|
87
|
+
|
|
88
|
+
if (!element.classList.contains(`${this.className}--show`)) {
|
|
89
|
+
requestAnimationFrame(() => element.classList.add(`${this.className}--show`))
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|