@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,157 @@
|
|
|
1
|
+
import { watch } from 'vue'
|
|
2
|
+
import { EventItem, getMouseClientX, getMouseClientY } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
import { WindowStatus } from './WindowStatus'
|
|
5
|
+
import { WindowClient } from './WindowClient'
|
|
6
|
+
import { WindowFlash } from './WindowFlash'
|
|
7
|
+
import { WindowOpen } from './WindowOpen'
|
|
8
|
+
import { WindowVerification } from './WindowVerification'
|
|
9
|
+
|
|
10
|
+
import type { WindowProps } from './props'
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A class for working with events.
|
|
14
|
+
*
|
|
15
|
+
* Класс для работы с событиями.
|
|
16
|
+
*/
|
|
17
|
+
export class WindowEvent {
|
|
18
|
+
protected readonly event: EventItem<HTMLBodyElement, MouseEvent>
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Constructor
|
|
22
|
+
* @param props input data/ входные данные
|
|
23
|
+
* @param status object for working with statuses/ объект для работы со статусами
|
|
24
|
+
* @param client object for working with mouse pointer coordinates/ объект для работы с координатами указателя мыши
|
|
25
|
+
* @param flash class object for working with fast window opening/ объект класса для работы с быстрым открытием окна
|
|
26
|
+
* @param open the class object for working with the status of closing or opening the window/ объект класса для работы со статусом закрытия или открытия окна
|
|
27
|
+
* @param verification an object for working with the check for changing the status of opening or closing/ объект для работы с проверкой изменения статуса открытия или закрытия
|
|
28
|
+
*/
|
|
29
|
+
constructor(
|
|
30
|
+
protected readonly props: WindowProps,
|
|
31
|
+
protected readonly status: WindowStatus,
|
|
32
|
+
protected readonly client: WindowClient,
|
|
33
|
+
protected readonly flash: WindowFlash,
|
|
34
|
+
protected readonly open: WindowOpen,
|
|
35
|
+
protected readonly verification: WindowVerification
|
|
36
|
+
) {
|
|
37
|
+
this.event = new EventItem<HTMLBodyElement, MouseEvent>(
|
|
38
|
+
'body',
|
|
39
|
+
['click', 'contextmenu'],
|
|
40
|
+
this.onGlobal
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
watch(
|
|
44
|
+
[
|
|
45
|
+
this.open.item,
|
|
46
|
+
this.status.item
|
|
47
|
+
],
|
|
48
|
+
() => this.toggle()
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Events of pressing a control element.
|
|
54
|
+
*
|
|
55
|
+
* События нажатия на элемент управления.
|
|
56
|
+
* @param event event object/ объект события
|
|
57
|
+
*/
|
|
58
|
+
readonly onClick = async (event: MouseEvent & TouchEvent): Promise<void> => {
|
|
59
|
+
if (!this.props.contextmenu) {
|
|
60
|
+
await this.on(event)
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Events of pressing the right mouse button on a control element.
|
|
66
|
+
*
|
|
67
|
+
* События нажатия на правую кнопку мыши на элемент управления.
|
|
68
|
+
* @param event event object/ объект события
|
|
69
|
+
*/
|
|
70
|
+
readonly onContextmenu = async (event: MouseEvent & TouchEvent): Promise<void> => {
|
|
71
|
+
if (this.props.contextmenu) {
|
|
72
|
+
event.preventDefault()
|
|
73
|
+
await this.on(event)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Event of animation end when closing the window.
|
|
79
|
+
*
|
|
80
|
+
* Событие окончания анимации при закрытии окна.
|
|
81
|
+
*/
|
|
82
|
+
readonly onTransition = (): void => this.open.closeForEvent()
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Starts listening to global events.
|
|
86
|
+
*
|
|
87
|
+
* Стартует прослушивание глобальных событий.
|
|
88
|
+
*/
|
|
89
|
+
start(): this {
|
|
90
|
+
this.event.start()
|
|
91
|
+
return this
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Stop the global event.
|
|
96
|
+
*
|
|
97
|
+
* Остановить глобальное событие.
|
|
98
|
+
*/
|
|
99
|
+
stop(): this {
|
|
100
|
+
this.event.stop()
|
|
101
|
+
return this
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Changes the event listening status depending on the window's open status.
|
|
106
|
+
*
|
|
107
|
+
* Изменяет статус прослушивания события в зависимости от статуса открытия окна.
|
|
108
|
+
*/
|
|
109
|
+
toggle(): this {
|
|
110
|
+
if (
|
|
111
|
+
this.open.item.value
|
|
112
|
+
&& this.status.isOpen()
|
|
113
|
+
) {
|
|
114
|
+
this.start()
|
|
115
|
+
} else {
|
|
116
|
+
this.stop()
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return this
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Event activation.
|
|
124
|
+
*
|
|
125
|
+
* Активация события.
|
|
126
|
+
* @param event event object/ объект события
|
|
127
|
+
*/
|
|
128
|
+
protected async on(event: MouseEvent & TouchEvent): Promise<void> {
|
|
129
|
+
this.client.set(
|
|
130
|
+
getMouseClientX(event),
|
|
131
|
+
getMouseClientY(event)
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
await this.verification.update(event.target as HTMLElement)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Callback of the event when pressing any area for checking and changing the opening state.
|
|
139
|
+
*
|
|
140
|
+
* Callback события при нажатии на любую область для проверки и изменения состояния открытия.
|
|
141
|
+
* @param event event instance/ экземпляр события
|
|
142
|
+
*/
|
|
143
|
+
protected readonly onGlobal = async (event?: Event): Promise<void> => {
|
|
144
|
+
if (
|
|
145
|
+
!event
|
|
146
|
+
|| (event.type === 'click' && (!this.props.contextmenu || this.open.item.value))
|
|
147
|
+
|| (event.type === 'contextmenu' && this.props.contextmenu)
|
|
148
|
+
) {
|
|
149
|
+
if (this.open.item.value) {
|
|
150
|
+
this.flash.setControl(event?.target as HTMLElement)
|
|
151
|
+
await this.verification.update(event?.target as HTMLElement)
|
|
152
|
+
} else {
|
|
153
|
+
this.event.stop()
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { WindowClasses } from './WindowClasses'
|
|
2
|
+
|
|
3
|
+
import type { WindowProps } from './props'
|
|
4
|
+
import { WindowStatusItem } from './basicTypes'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The class for working with the flash parameter. The flash property is
|
|
8
|
+
* responsible for disabling the animation when opening the window. Also,
|
|
9
|
+
* the animation is disabled when there are already open windows.
|
|
10
|
+
*
|
|
11
|
+
* Класс для работы с параметром flash. Свойство flash отвечает за отключение
|
|
12
|
+
* анимации при открытии окна. А также отключается анимация, когда уже есть
|
|
13
|
+
* открытые окна.
|
|
14
|
+
*/
|
|
15
|
+
export class WindowFlash {
|
|
16
|
+
protected control: boolean = false
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Constructor
|
|
20
|
+
* @param props input data/ входные данные
|
|
21
|
+
* @param classes an object for working with classes and searching for elements/ объект для работы с классами и поиском элементов
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
constructor(
|
|
25
|
+
protected readonly props: WindowProps,
|
|
26
|
+
protected readonly classes: WindowClasses
|
|
27
|
+
) {
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Is the flash property active.
|
|
32
|
+
*
|
|
33
|
+
* Активно ли свойство flash.
|
|
34
|
+
*/
|
|
35
|
+
is(): boolean {
|
|
36
|
+
return Boolean(this.props.flash)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Checks whether the animation needs to be disabled.
|
|
41
|
+
*
|
|
42
|
+
* Проверяет, надо ли отключить анимацию.
|
|
43
|
+
*/
|
|
44
|
+
isOpen(): boolean {
|
|
45
|
+
return this.is() || this.control
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Checks whether the animation needs to be disabled when closing.
|
|
50
|
+
*
|
|
51
|
+
* Проверяет, надо ли отключить анимацию при закрытии.
|
|
52
|
+
*/
|
|
53
|
+
isClose(): boolean {
|
|
54
|
+
return this.is()
|
|
55
|
+
|| Boolean(
|
|
56
|
+
document.querySelector(`.${this.classes.getClassStatus(WindowStatusItem.hide)}`)
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Change the value of the control parameter.
|
|
62
|
+
*
|
|
63
|
+
* Изменить значение параметра control.
|
|
64
|
+
* @param target the element that gets focus on click/ элемент, который получает фокус при клике
|
|
65
|
+
*/
|
|
66
|
+
setControl(target?: HTMLElement): this {
|
|
67
|
+
this.control = target?.closest<HTMLElement>(`.${this.classes.list.control}`)?.dataset.window === this.classes.getId()
|
|
68
|
+
return this
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { executePromise } from '@dxtmisha/functional'
|
|
2
|
+
|
|
3
|
+
import type { WindowProps } from './props'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A class for working with hooks when opening and closing a window.
|
|
7
|
+
*
|
|
8
|
+
* Класс для работы с хуками при открытии и закрытии окна.
|
|
9
|
+
*/
|
|
10
|
+
export class WindowHook {
|
|
11
|
+
/**
|
|
12
|
+
* Constructor
|
|
13
|
+
* @param props input data/ входные данные
|
|
14
|
+
*/
|
|
15
|
+
constructor(
|
|
16
|
+
protected readonly props: WindowProps
|
|
17
|
+
) {
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Hook for preparing elements before opening/closing.
|
|
22
|
+
*
|
|
23
|
+
* Хук для подготовки элементов перед открытием/закрытием.
|
|
24
|
+
*/
|
|
25
|
+
async preparation(): Promise<void> {
|
|
26
|
+
if (this.props.preparation) {
|
|
27
|
+
await executePromise(this.props.preparation)
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Hook before opening/closing.
|
|
33
|
+
*
|
|
34
|
+
* Хук перед открытием/закрытием.
|
|
35
|
+
* @param open current state of the window/ текущее состояние окна
|
|
36
|
+
*/
|
|
37
|
+
async before(open: boolean) {
|
|
38
|
+
if (open) {
|
|
39
|
+
return await this.beforeOpening()
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return await this.beforeClosing()
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Hook before opening.
|
|
47
|
+
*
|
|
48
|
+
* Хук перед открытием.
|
|
49
|
+
*/
|
|
50
|
+
async beforeOpening(): Promise<boolean> {
|
|
51
|
+
if (this.props.beforeOpening) {
|
|
52
|
+
return await executePromise(this.props.beforeOpening)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return true
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Hook before closing.
|
|
60
|
+
*
|
|
61
|
+
* Хук перед закрытием.
|
|
62
|
+
*/
|
|
63
|
+
async beforeClosing(): Promise<boolean> {
|
|
64
|
+
if (this.props.beforeClosing) {
|
|
65
|
+
return await executePromise(this.props.beforeClosing)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return true
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Hook after opening/closing.
|
|
73
|
+
*
|
|
74
|
+
* Хук после открытия/закрытия.
|
|
75
|
+
* @param open current state of the window/ текущее состояние окна
|
|
76
|
+
*/
|
|
77
|
+
async after(open: boolean): Promise<boolean> {
|
|
78
|
+
if (open) {
|
|
79
|
+
return await this.opening()
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return await this.closing()
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Hook after opening.
|
|
87
|
+
*
|
|
88
|
+
* Хук после открытия.
|
|
89
|
+
*/
|
|
90
|
+
async opening(): Promise<boolean> {
|
|
91
|
+
if (this.props.opening) {
|
|
92
|
+
return await executePromise(this.props.opening)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return false
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Hook after closing.
|
|
100
|
+
*
|
|
101
|
+
* Хук после закрытия.
|
|
102
|
+
*/
|
|
103
|
+
async closing(): Promise<boolean> {
|
|
104
|
+
if (this.props.closing) {
|
|
105
|
+
return await executePromise(this.props.closing)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return false
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { computed, ref, type VNode } from 'vue'
|
|
2
|
+
import {
|
|
3
|
+
type ConstrBind, type ConstrEmit,
|
|
4
|
+
DesignComponents,
|
|
5
|
+
getRef,
|
|
6
|
+
type RefOrNormal,
|
|
7
|
+
toBind
|
|
8
|
+
} from '@dxtmisha/functional'
|
|
9
|
+
|
|
10
|
+
import type { WindowProps } from './props'
|
|
11
|
+
import type { WindowExpose, WindowSlots } from './types'
|
|
12
|
+
import type {
|
|
13
|
+
WindowComponentInclude,
|
|
14
|
+
WindowEmitOptions,
|
|
15
|
+
WindowEmitsInclude, WindowExposeInclude,
|
|
16
|
+
WindowPropsInclude
|
|
17
|
+
} from './basicTypes'
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The class returns data for working with the Window component
|
|
21
|
+
*
|
|
22
|
+
* Класс возвращает данные для работы с компонентом Window
|
|
23
|
+
*/
|
|
24
|
+
export class WindowInclude<
|
|
25
|
+
Props extends WindowPropsInclude = WindowPropsInclude,
|
|
26
|
+
PropsExtra extends ConstrBind<WindowProps> = ConstrBind<WindowProps>
|
|
27
|
+
> {
|
|
28
|
+
/**
|
|
29
|
+
* Constructor
|
|
30
|
+
* @param props input parameter/ входной параметр
|
|
31
|
+
* @param className class name/ название класса
|
|
32
|
+
* @param components object for working with components/ объект для работы с компонентами
|
|
33
|
+
* @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
|
|
34
|
+
* @param extra additional parameter or property name/ дополнительный параметр или имя свойства
|
|
35
|
+
* @param index index identifier/ идентификатор индекса
|
|
36
|
+
*/
|
|
37
|
+
constructor(
|
|
38
|
+
protected readonly props: Readonly<Props>,
|
|
39
|
+
protected readonly className: string,
|
|
40
|
+
protected readonly components?: DesignComponents<WindowComponentInclude, Props>,
|
|
41
|
+
protected readonly emits?: ConstrEmit<WindowEmitsInclude>,
|
|
42
|
+
protected readonly extra?: RefOrNormal<PropsExtra>,
|
|
43
|
+
protected readonly index?: string
|
|
44
|
+
) {
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Reference to window element expose/ Ссылка на expose элемента окна */
|
|
48
|
+
readonly element = ref<ConstrBind<WindowExpose> | undefined>()
|
|
49
|
+
|
|
50
|
+
/** Computed bindings for the window/ Вычисляемые привязки для окна */
|
|
51
|
+
readonly binds = computed<PropsExtra>(() => {
|
|
52
|
+
const props = toBind<PropsExtra>(
|
|
53
|
+
getRef(this.extra) ?? {},
|
|
54
|
+
this.props.windowAttrs ?? {}
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
...props,
|
|
59
|
+
|
|
60
|
+
disabled: this.props.disabled,
|
|
61
|
+
autoClose: this.props.autoClose,
|
|
62
|
+
|
|
63
|
+
preparation: this.getPreparation,
|
|
64
|
+
opening: this.getOpening,
|
|
65
|
+
closing: this.getClosing
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Expose helpers for window state and actions/
|
|
71
|
+
* Вспомогательные методы expose для состояния и действий окна
|
|
72
|
+
*/
|
|
73
|
+
readonly expose: WindowExposeInclude = {
|
|
74
|
+
id: computed(() => String(this.element.value?.id)),
|
|
75
|
+
open: computed(() => Boolean(this.element.value?.open)),
|
|
76
|
+
control: computed(() => this.element.value?.control),
|
|
77
|
+
setOpen: async (open: boolean) => this.element.value?.setOpen(open),
|
|
78
|
+
toOpen: async () => this.element.value?.toOpen(),
|
|
79
|
+
toClose: async () => this.element.value?.toClose(),
|
|
80
|
+
toggle: async () => this.element.value?.toggle(),
|
|
81
|
+
|
|
82
|
+
windowElement: this.element
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Render the Window component with slots/
|
|
87
|
+
* Рендер компонента Window со слотами
|
|
88
|
+
* @param slotsChildren slots passed to the window/ слоты, передаваемые окну
|
|
89
|
+
* @param attrs additional attributes/ дополнительные атрибуты
|
|
90
|
+
*/
|
|
91
|
+
readonly render = (
|
|
92
|
+
slotsChildren: WindowSlots,
|
|
93
|
+
attrs?: Record<string, any>
|
|
94
|
+
): VNode[] => {
|
|
95
|
+
if (this.components) {
|
|
96
|
+
return this.components.render(
|
|
97
|
+
'window',
|
|
98
|
+
{
|
|
99
|
+
...toBind(
|
|
100
|
+
attrs ?? {},
|
|
101
|
+
this.binds.value
|
|
102
|
+
),
|
|
103
|
+
ref: this.element,
|
|
104
|
+
onWindow: this.onWindow
|
|
105
|
+
},
|
|
106
|
+
slotsChildren as unknown as Record<string, any>,
|
|
107
|
+
this.index
|
|
108
|
+
)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return []
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** Returns preparation result/ Возвращает результат preparation */
|
|
115
|
+
protected readonly getPreparation = () =>
|
|
116
|
+
getRef(this.extra)?.preparation?.() ?? this.props.windowAttrs?.preparation?.()
|
|
117
|
+
|
|
118
|
+
/** Returns opening result/ Возвращает результат opening */
|
|
119
|
+
protected readonly getOpening = () =>
|
|
120
|
+
getRef(this.extra)?.opening?.() ?? this.props.windowAttrs?.opening?.() ?? true
|
|
121
|
+
|
|
122
|
+
/** Returns closing result/ Возвращает результат closing */
|
|
123
|
+
protected readonly getClosing = () =>
|
|
124
|
+
getRef(this.extra)?.closing?.() ?? this.props.windowAttrs?.closing?.() ?? true
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Emits 'window' event upward/
|
|
128
|
+
* Поднимает событие 'window' наверх
|
|
129
|
+
* @param options event payload/ параметры события
|
|
130
|
+
*/
|
|
131
|
+
protected readonly onWindow = (options: WindowEmitOptions) => {
|
|
132
|
+
this.emits?.('window', options)
|
|
133
|
+
}
|
|
134
|
+
}
|