@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,244 @@
|
|
|
1
|
+
import { h, type VNode } from 'vue'
|
|
2
|
+
import {
|
|
3
|
+
type ConstrOptions,
|
|
4
|
+
type ConstrStyles,
|
|
5
|
+
DesignConstructorAbstract,
|
|
6
|
+
type RawSlots,
|
|
7
|
+
toBinds
|
|
8
|
+
} from '@dxtmisha/functional'
|
|
9
|
+
|
|
10
|
+
import { Menu } from './Menu'
|
|
11
|
+
|
|
12
|
+
import type { WindowControlItem } from '../Window'
|
|
13
|
+
import type { MenuControlItem } from './basicTypes'
|
|
14
|
+
import {
|
|
15
|
+
type MenuPropsBasic
|
|
16
|
+
} from './props'
|
|
17
|
+
import {
|
|
18
|
+
type MenuClasses,
|
|
19
|
+
type MenuComponents,
|
|
20
|
+
type MenuEmits,
|
|
21
|
+
type MenuExpose,
|
|
22
|
+
type MenuSlots
|
|
23
|
+
} from './types'
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* MenuDesign
|
|
27
|
+
*/
|
|
28
|
+
export class MenuDesign<
|
|
29
|
+
COMP extends MenuComponents,
|
|
30
|
+
EXPOSE extends MenuExpose,
|
|
31
|
+
CLASSES extends MenuClasses,
|
|
32
|
+
P extends MenuPropsBasic
|
|
33
|
+
> extends DesignConstructorAbstract<
|
|
34
|
+
HTMLDivElement,
|
|
35
|
+
COMP,
|
|
36
|
+
MenuEmits,
|
|
37
|
+
EXPOSE,
|
|
38
|
+
MenuSlots,
|
|
39
|
+
CLASSES,
|
|
40
|
+
P
|
|
41
|
+
> {
|
|
42
|
+
protected readonly item: Menu
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Constructor
|
|
46
|
+
* @param name class name/ название класса
|
|
47
|
+
* @param props properties/ свойства
|
|
48
|
+
* @param options list of additional parameters/ список дополнительных параметров
|
|
49
|
+
*/
|
|
50
|
+
constructor(
|
|
51
|
+
name: string,
|
|
52
|
+
props: Readonly<P>,
|
|
53
|
+
options?: ConstrOptions<COMP, MenuEmits, P>
|
|
54
|
+
) {
|
|
55
|
+
super(
|
|
56
|
+
name,
|
|
57
|
+
props,
|
|
58
|
+
options
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
this.item = new Menu(
|
|
62
|
+
this.props,
|
|
63
|
+
this.refs,
|
|
64
|
+
this.element,
|
|
65
|
+
this.getDesign(),
|
|
66
|
+
this.getName(),
|
|
67
|
+
this.components,
|
|
68
|
+
this.slots,
|
|
69
|
+
this.emits
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
this.init()
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Initialization of all the necessary properties for work
|
|
77
|
+
*
|
|
78
|
+
* Инициализация всех необходимых свойств для работы.
|
|
79
|
+
*/
|
|
80
|
+
protected initExpose(): EXPOSE {
|
|
81
|
+
return {
|
|
82
|
+
...this.item.window.expose,
|
|
83
|
+
...this.item.getControlBinds()
|
|
84
|
+
} as EXPOSE
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Improvement of the obtained list of classes.
|
|
89
|
+
*
|
|
90
|
+
* Доработка полученного списка классов.
|
|
91
|
+
*/
|
|
92
|
+
protected initClasses(): Partial<CLASSES> {
|
|
93
|
+
return {
|
|
94
|
+
main: {},
|
|
95
|
+
...{
|
|
96
|
+
// :classes [!] System label / Системная метка
|
|
97
|
+
bars: this.getSubClass('bars'),
|
|
98
|
+
list: this.getSubClass('list')
|
|
99
|
+
// :classes [!] System label / Системная метка
|
|
100
|
+
}
|
|
101
|
+
} as Partial<CLASSES>
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Refinement of the received list of styles.
|
|
106
|
+
*
|
|
107
|
+
* Доработка полученного списка стилей.
|
|
108
|
+
*/
|
|
109
|
+
protected initStyles(): ConstrStyles {
|
|
110
|
+
return {}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* A method for rendering.
|
|
115
|
+
*
|
|
116
|
+
* Метод для рендеринга.
|
|
117
|
+
*/
|
|
118
|
+
protected initRender(): VNode[] {
|
|
119
|
+
return this.item.window.render(
|
|
120
|
+
{
|
|
121
|
+
control: this.renderControl,
|
|
122
|
+
title: this.renderTitle,
|
|
123
|
+
default: this.renderList,
|
|
124
|
+
footer: this.renderFooter
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
class: this.classes?.value.main
|
|
128
|
+
}
|
|
129
|
+
)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Generates data for control.
|
|
134
|
+
*
|
|
135
|
+
* Генерирует данные для контроля.
|
|
136
|
+
* @param props data for the transferable property/ данные для передаваемого свойства
|
|
137
|
+
*/
|
|
138
|
+
readonly renderControl = (
|
|
139
|
+
props: WindowControlItem
|
|
140
|
+
): VNode | undefined => {
|
|
141
|
+
return this.initSlot('control', undefined, this.getBinds(props))
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Render title element.
|
|
146
|
+
*
|
|
147
|
+
* Рендер элемента заголовка.
|
|
148
|
+
* @param props data for the transferable property/ данные для передаваемого свойства
|
|
149
|
+
*/
|
|
150
|
+
readonly renderTitle = (
|
|
151
|
+
props: WindowControlItem
|
|
152
|
+
): VNode[] => {
|
|
153
|
+
const children: any[] = []
|
|
154
|
+
if (this.item.bars.is.value) {
|
|
155
|
+
children.push(...this.item.bars.render())
|
|
156
|
+
console.log('this.item.bars.is.value', children)
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
this.initSlot('title', children, this.getBinds(props))
|
|
160
|
+
|
|
161
|
+
return children
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Render list element.
|
|
166
|
+
*
|
|
167
|
+
* Рендер элемента списка.
|
|
168
|
+
* @param props data for the transferable property/ данные для передаваемого свойства
|
|
169
|
+
*/
|
|
170
|
+
readonly renderList = (
|
|
171
|
+
props: WindowControlItem
|
|
172
|
+
): VNode | undefined => {
|
|
173
|
+
const list = this.item.request.item.value
|
|
174
|
+
|
|
175
|
+
if (list) {
|
|
176
|
+
const children: any[] = []
|
|
177
|
+
|
|
178
|
+
this.initSlot('contextTop', children, this.getBinds(props))
|
|
179
|
+
|
|
180
|
+
if (!this.props.hideList) {
|
|
181
|
+
children.push(
|
|
182
|
+
this.components.render(
|
|
183
|
+
'list',
|
|
184
|
+
toBinds(
|
|
185
|
+
{
|
|
186
|
+
...this.item.binds.value,
|
|
187
|
+
class: this.classes?.value.list,
|
|
188
|
+
|
|
189
|
+
selected: this.item.value.selected.value,
|
|
190
|
+
highlight: this.item.search.item.value,
|
|
191
|
+
|
|
192
|
+
list,
|
|
193
|
+
lite: this.item.menuWindow.lite.value
|
|
194
|
+
},
|
|
195
|
+
this.props.listAttrs
|
|
196
|
+
),
|
|
197
|
+
this.slots as RawSlots
|
|
198
|
+
)
|
|
199
|
+
)
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
this.initSlot('contextBottom', children, this.getBinds(props))
|
|
203
|
+
|
|
204
|
+
return h(
|
|
205
|
+
'div',
|
|
206
|
+
{
|
|
207
|
+
...this.getAttrs(),
|
|
208
|
+
ref: this.element,
|
|
209
|
+
onClick: this.item.onClickSlot
|
|
210
|
+
},
|
|
211
|
+
children
|
|
212
|
+
)
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
return undefined
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Render footer element.
|
|
220
|
+
*
|
|
221
|
+
* Рендер элемента футера.
|
|
222
|
+
* @param props data for the transferable property/ данные для передаваемого свойства
|
|
223
|
+
*/
|
|
224
|
+
readonly renderFooter = (
|
|
225
|
+
props: WindowControlItem
|
|
226
|
+
): VNode | undefined => {
|
|
227
|
+
return this.initSlot('footer', undefined, this.getBinds(props))
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Generates data for control.
|
|
232
|
+
*
|
|
233
|
+
* Генерирует данные для контроля.
|
|
234
|
+
* @param props data for the transferable property/ данные для передаваемого свойства
|
|
235
|
+
*/
|
|
236
|
+
protected getBinds(
|
|
237
|
+
props: WindowControlItem
|
|
238
|
+
): MenuControlItem {
|
|
239
|
+
return {
|
|
240
|
+
...props,
|
|
241
|
+
...this.item.getControlBinds()
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { computed, ref, type VNode } from 'vue'
|
|
2
|
+
import {
|
|
3
|
+
type ConstrBind,
|
|
4
|
+
DesignComponents,
|
|
5
|
+
getRef,
|
|
6
|
+
type RawSlots,
|
|
7
|
+
type RefOrNormal,
|
|
8
|
+
toBind
|
|
9
|
+
} from '@dxtmisha/functional'
|
|
10
|
+
|
|
11
|
+
import type { MenuComponentInclude, MenuExposeInclude, MenuPropsInclude } from './basicTypes'
|
|
12
|
+
import type { MenuExpose, MenuSlots } from './types'
|
|
13
|
+
import type { MenuProps } from './props'
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* MenuInclude class provides functionality for conditionally rendering menu components
|
|
17
|
+
* within other components. It manages the logic for determining when to display menu
|
|
18
|
+
* and configures the appropriate properties.
|
|
19
|
+
*
|
|
20
|
+
* Класс MenuInclude предоставляет функциональность для условного рендеринга компонентов
|
|
21
|
+
* меню внутри других компонентов. Он управляет логикой определения необходимости
|
|
22
|
+
* отображения меню и настраивает соответствующие свойства.
|
|
23
|
+
*/
|
|
24
|
+
export class MenuInclude<
|
|
25
|
+
Props extends MenuPropsInclude = MenuPropsInclude,
|
|
26
|
+
PropsExtra extends ConstrBind<MenuProps> = ConstrBind<MenuProps>
|
|
27
|
+
> {
|
|
28
|
+
/** Reference to menu element/ Ссылка на элемент меню */
|
|
29
|
+
protected readonly element = ref<ConstrBind<MenuExpose> | undefined>()
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Constructor
|
|
33
|
+
* @param props input parameter/ входной параметр
|
|
34
|
+
* @param className class name/ название класса
|
|
35
|
+
* @param components object for working with components/ объект для работы с компонентами
|
|
36
|
+
* @param extra additional parameter or property name/ дополнительный параметр или имя свойства
|
|
37
|
+
* @param index index identifier/ идентификатор индекса
|
|
38
|
+
*/
|
|
39
|
+
constructor(
|
|
40
|
+
protected readonly props: Readonly<Props>,
|
|
41
|
+
protected readonly className: string,
|
|
42
|
+
protected readonly components?: DesignComponents<MenuComponentInclude, Props>,
|
|
43
|
+
protected readonly extra?: RefOrNormal<PropsExtra>,
|
|
44
|
+
protected readonly index?: string
|
|
45
|
+
) {
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Checks whether menu should be displayed/
|
|
50
|
+
* Проверяет, нужно ли отображать меню
|
|
51
|
+
*/
|
|
52
|
+
readonly is = computed(() => Boolean(!this.props.disabled && this.components))
|
|
53
|
+
|
|
54
|
+
/** Computed bindings for the menu/ Вычисляемые привязки для меню */
|
|
55
|
+
readonly binds = computed<PropsExtra>(() => {
|
|
56
|
+
const props = toBind<PropsExtra>(
|
|
57
|
+
toBind(
|
|
58
|
+
getRef(this.extra) ?? {},
|
|
59
|
+
this.props.menuAttrs ?? {}
|
|
60
|
+
),
|
|
61
|
+
{ class: `${this.className}__menu` }
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
return {
|
|
65
|
+
...props,
|
|
66
|
+
disabled: this.props.disabled
|
|
67
|
+
}
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
/** Menu expose functionality/ Функциональность экспорта меню */
|
|
71
|
+
readonly expose: MenuExposeInclude = {
|
|
72
|
+
open: computed(() => Boolean(this.element.value?.open)),
|
|
73
|
+
setOpen: async (open: boolean) => this.element.value?.setOpen(open),
|
|
74
|
+
toOpen: async () => this.element.value?.toOpen(),
|
|
75
|
+
toClose: async () => this.element.value?.toClose(),
|
|
76
|
+
toggle: async () => this.element.value?.toggle(),
|
|
77
|
+
|
|
78
|
+
menuElement: this.element
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Render the Menu component
|
|
83
|
+
*
|
|
84
|
+
* Рендер компонента меню
|
|
85
|
+
* @param slotsChildren menu slots/ слоты меню
|
|
86
|
+
* @param attrs additional attributes/ дополнительные атрибуты
|
|
87
|
+
* @returns VNode array/ массив VNode
|
|
88
|
+
*/
|
|
89
|
+
readonly render = (
|
|
90
|
+
slotsChildren?: MenuSlots,
|
|
91
|
+
attrs?: Record<string, any>
|
|
92
|
+
): VNode[] => {
|
|
93
|
+
if (this.components && this.is.value) {
|
|
94
|
+
return this.components.render(
|
|
95
|
+
'menu',
|
|
96
|
+
{
|
|
97
|
+
ref: this.element,
|
|
98
|
+
...toBind(
|
|
99
|
+
attrs ?? {},
|
|
100
|
+
this.binds.value
|
|
101
|
+
)
|
|
102
|
+
},
|
|
103
|
+
slotsChildren as RawSlots,
|
|
104
|
+
this.index
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return []
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { computed, ref } from 'vue'
|
|
2
|
+
import { Api, executePromise, isFunction, type ListRecord } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
import type { MenuProps } from './props'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Class for working with list data requests.
|
|
8
|
+
*
|
|
9
|
+
* Класс для работы с запросами данных списка.
|
|
10
|
+
*/
|
|
11
|
+
export class MenuRequest {
|
|
12
|
+
readonly progress = ref<boolean>(false)
|
|
13
|
+
|
|
14
|
+
protected readonly buffer = ref<ListRecord>()
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Constructor
|
|
18
|
+
* @param props input data/ входные данные
|
|
19
|
+
*/
|
|
20
|
+
constructor(
|
|
21
|
+
protected readonly props: MenuProps
|
|
22
|
+
) {
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Returns current list data.
|
|
27
|
+
*
|
|
28
|
+
* Возвращает текущие данные списка.
|
|
29
|
+
*/
|
|
30
|
+
readonly item = computed(() => this.buffer.value ?? this.props.list ?? [])
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Checks whether a request is needed.
|
|
34
|
+
*
|
|
35
|
+
* Проверяет, нужно ли делать запрос.
|
|
36
|
+
*/
|
|
37
|
+
is(): boolean {
|
|
38
|
+
return Boolean(
|
|
39
|
+
this.props.ajax
|
|
40
|
+
|| this.props.request
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Prepares data.
|
|
46
|
+
*
|
|
47
|
+
* Подготавливает данные.
|
|
48
|
+
*/
|
|
49
|
+
async preparation(): Promise<boolean> {
|
|
50
|
+
await this.update()
|
|
51
|
+
|
|
52
|
+
return true
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Updates data.
|
|
57
|
+
*
|
|
58
|
+
* Обновляет данные.
|
|
59
|
+
*/
|
|
60
|
+
async update(): Promise<void> {
|
|
61
|
+
await this.read(data => (this.buffer.value = data))
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Returns data from AJAX or request function.
|
|
66
|
+
*
|
|
67
|
+
* Возвращает данные из AJAX или функции запроса.
|
|
68
|
+
*/
|
|
69
|
+
protected async getAjax(): Promise<ListRecord | undefined> {
|
|
70
|
+
if (isFunction(this.props.ajax)) {
|
|
71
|
+
return executePromise(this.props.ajax)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return await Api.request<Record<string, any>>({
|
|
75
|
+
path: this.props.ajax,
|
|
76
|
+
...this.props.request
|
|
77
|
+
})
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Executes a request to retrieve data.
|
|
82
|
+
*
|
|
83
|
+
* Выполняет запрос для получения данных.
|
|
84
|
+
*/
|
|
85
|
+
protected async read(callback: (data: ListRecord | undefined) => void): Promise<void> {
|
|
86
|
+
if (this.is()) {
|
|
87
|
+
if (
|
|
88
|
+
this.props.cache
|
|
89
|
+
&& this.buffer.value !== undefined
|
|
90
|
+
) {
|
|
91
|
+
callback(this.buffer.value)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
this.progress.value = true
|
|
95
|
+
|
|
96
|
+
callback(await this.getAjax())
|
|
97
|
+
|
|
98
|
+
this.progress.value = false
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ref } from 'vue'
|
|
2
|
+
import { isFilled } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Class for working with search.
|
|
6
|
+
*
|
|
7
|
+
* Класс для работы с поиском.
|
|
8
|
+
*/
|
|
9
|
+
export class MenuSearch {
|
|
10
|
+
readonly item = ref<string>()
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Sets the search string.
|
|
14
|
+
*
|
|
15
|
+
* Устанавливает строку поиска.
|
|
16
|
+
* @param value new value/ новое значение
|
|
17
|
+
*/
|
|
18
|
+
set(value?: string) {
|
|
19
|
+
const data = this.getValue(value)
|
|
20
|
+
|
|
21
|
+
if (this.item.value !== data) {
|
|
22
|
+
this.item.value = data
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Resets the search string.
|
|
28
|
+
*
|
|
29
|
+
* Сбрасывает строку поиска.
|
|
30
|
+
*/
|
|
31
|
+
reset(): this {
|
|
32
|
+
this.set()
|
|
33
|
+
return this
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Returns a processed value.
|
|
38
|
+
*
|
|
39
|
+
* Возвращает обработанное значение.
|
|
40
|
+
* @param value source value/ исходное значение
|
|
41
|
+
*/
|
|
42
|
+
protected getValue(value?: string): string | undefined {
|
|
43
|
+
if (isFilled(value)) {
|
|
44
|
+
return value.trim()
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return undefined
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { computed, ref, type ToRefs, watch } from 'vue'
|
|
2
|
+
import { type ConstrEmit, isObject, type ListSelectedList } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
import { ModelInclude } from '../../classes/ModelInclude'
|
|
5
|
+
|
|
6
|
+
import type { MenuEmits } from './types'
|
|
7
|
+
import type { MenuProps } from './props'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Value manager for Menu
|
|
11
|
+
*
|
|
12
|
+
* Менеджер значения для Menu
|
|
13
|
+
*/
|
|
14
|
+
export class MenuValue {
|
|
15
|
+
readonly value = ref<ListSelectedList>()
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Constructor
|
|
19
|
+
* @param props input data/ входные данные
|
|
20
|
+
* @param refs input data in the form of reactive elements/ входные данные в виде реактивных элементов
|
|
21
|
+
* @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
|
|
22
|
+
*/
|
|
23
|
+
constructor(
|
|
24
|
+
protected readonly props: MenuProps,
|
|
25
|
+
protected readonly refs: ToRefs<MenuProps>,
|
|
26
|
+
protected readonly emits?: ConstrEmit<MenuEmits>
|
|
27
|
+
) {
|
|
28
|
+
if (this.props.isSelectedByValue) {
|
|
29
|
+
new ModelInclude('value', this.emits, this.value)
|
|
30
|
+
|
|
31
|
+
if (refs.selected) {
|
|
32
|
+
watch(
|
|
33
|
+
refs.selected,
|
|
34
|
+
(value) => {
|
|
35
|
+
this.value.value = value
|
|
36
|
+
},
|
|
37
|
+
{ immediate: true }
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Computed selected value
|
|
45
|
+
*
|
|
46
|
+
* Вычисляемое выбранное значение
|
|
47
|
+
*/
|
|
48
|
+
readonly selected = computed(() => {
|
|
49
|
+
if (this.props.isSelectedByValue) {
|
|
50
|
+
return this.value.value
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return this.props.selected
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Sets a new selected value if it has changed and returns the instance for chaining.
|
|
58
|
+
*
|
|
59
|
+
* Устанавливает новое выбранное значение, если оно изменилось, и возвращает экземпляр для чейнинга.
|
|
60
|
+
* @param value selected list value/ выбранное значение списка
|
|
61
|
+
* @returns this
|
|
62
|
+
*/
|
|
63
|
+
setValue(value: ListSelectedList): this {
|
|
64
|
+
if (
|
|
65
|
+
this.props.isSelectedByValue
|
|
66
|
+
&& !isObject(value)
|
|
67
|
+
&& this.value.value !== value
|
|
68
|
+
) {
|
|
69
|
+
this.value.value = value
|
|
70
|
+
}
|
|
71
|
+
return this
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { ref } from 'vue'
|
|
2
|
+
|
|
3
|
+
import { MenuRequest } from './MenuRequest'
|
|
4
|
+
|
|
5
|
+
import type { WindowProps } from '../Window'
|
|
6
|
+
import type { MenuProps } from './props'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Window manager for Menu component
|
|
10
|
+
*
|
|
11
|
+
* Класс управления окном для компонента Menu
|
|
12
|
+
*/
|
|
13
|
+
export class MenuWindow {
|
|
14
|
+
readonly lite = ref<boolean>()
|
|
15
|
+
readonly control = ref<boolean>()
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Constructor
|
|
19
|
+
* @param props input data/ входные данные
|
|
20
|
+
* @param request menu request handler/ обработчик запросов меню
|
|
21
|
+
*/
|
|
22
|
+
constructor(
|
|
23
|
+
protected readonly props: MenuProps,
|
|
24
|
+
protected readonly request: MenuRequest
|
|
25
|
+
) {
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Returns extra methods for window management
|
|
30
|
+
*
|
|
31
|
+
* Возвращает дополнительные методы для управления окном
|
|
32
|
+
* @returns object with window management methods/ объект с методами управления окном
|
|
33
|
+
*/
|
|
34
|
+
getExtra(): WindowProps {
|
|
35
|
+
return {
|
|
36
|
+
adaptive: 'menu',
|
|
37
|
+
preparation: this.preparation,
|
|
38
|
+
opening: this.opening,
|
|
39
|
+
closing: this.closing
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Preparing data before opening the menu
|
|
45
|
+
*
|
|
46
|
+
* Подготовка данных перед открытием меню
|
|
47
|
+
* @returns Promise that resolves to true when preparation is complete/
|
|
48
|
+
* Promise, который разрешается в true после завершения подготовки
|
|
49
|
+
*/
|
|
50
|
+
protected readonly preparation = async (): Promise<void> => {
|
|
51
|
+
await this.request.preparation()
|
|
52
|
+
|
|
53
|
+
if (
|
|
54
|
+
this.props.list
|
|
55
|
+
&& this.props.liteThreshold
|
|
56
|
+
&& Number(this.props.liteThreshold) <= Object.keys(this.props.list).length
|
|
57
|
+
) {
|
|
58
|
+
this.lite.value = true
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Actions performed after opening the window
|
|
64
|
+
*
|
|
65
|
+
* Действия, выполняемые после открытия окна
|
|
66
|
+
* @returns Promise that resolves to true when opening actions are complete/
|
|
67
|
+
* Promise, который разрешается в true после завершения действий открытия
|
|
68
|
+
*/
|
|
69
|
+
protected readonly opening = async (): Promise<boolean> => {
|
|
70
|
+
this.lite.value = false
|
|
71
|
+
this.control.value = true
|
|
72
|
+
|
|
73
|
+
return true
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Actions performed when closing the window
|
|
78
|
+
*
|
|
79
|
+
* Действия, выполняемые при закрытии окна
|
|
80
|
+
* @returns Promise that resolves to true when closing actions are complete/
|
|
81
|
+
* Promise, который разрешается в true после завершения действий закрытия
|
|
82
|
+
*/
|
|
83
|
+
protected readonly closing = async (): Promise<boolean> => {
|
|
84
|
+
this.lite.value = false
|
|
85
|
+
this.control.value = false
|
|
86
|
+
|
|
87
|
+
return true
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ComputedRef, Ref } from 'vue'
|
|
2
|
+
import type { ConstrBind } from '@dxtmisha/functional'
|
|
3
|
+
import type { WindowControlItem } from '../Window'
|
|
4
|
+
|
|
5
|
+
import type { ListExpose } from '../List'
|
|
6
|
+
import type { MenuExpose } from './types'
|
|
7
|
+
import type { MenuProps } from './props'
|
|
8
|
+
|
|
9
|
+
export type MenuControlBasic
|
|
10
|
+
= ListExpose
|
|
11
|
+
& {
|
|
12
|
+
loading: Ref<boolean>
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type MenuControlItem
|
|
16
|
+
= MenuControlBasic
|
|
17
|
+
& WindowControlItem
|
|
18
|
+
|
|
19
|
+
export type MenuComponentInclude = {
|
|
20
|
+
menu?: object
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Type for menu expose functionality/ Тип для функциональности экспорта меню */
|
|
24
|
+
export interface MenuExposeInclude {
|
|
25
|
+
open: ComputedRef<boolean>
|
|
26
|
+
|
|
27
|
+
setOpen(open: boolean): Promise<void>
|
|
28
|
+
|
|
29
|
+
toOpen: MenuExpose['toOpen']
|
|
30
|
+
toClose: MenuExpose['toClose']
|
|
31
|
+
|
|
32
|
+
toggle(): Promise<void>
|
|
33
|
+
|
|
34
|
+
menuElement: Ref<ConstrBind<MenuExpose> | undefined>
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Interface for menu include props/ Интерфейс для свойств включения меню */
|
|
38
|
+
export interface MenuPropsInclude {
|
|
39
|
+
disabled?: boolean
|
|
40
|
+
menuAttrs?: ConstrBind<MenuProps>
|
|
41
|
+
}
|