@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,36 @@
|
|
|
1
|
+
@use "@dxtmisha/styles/properties" as ui;
|
|
2
|
+
|
|
3
|
+
@mixin mixinList {
|
|
4
|
+
&__menuGroup {
|
|
5
|
+
@include ui.subclass('menu') {
|
|
6
|
+
display: none;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
&--axis {
|
|
11
|
+
&--x {
|
|
12
|
+
display: flex;
|
|
13
|
+
align-items: stretch;
|
|
14
|
+
|
|
15
|
+
@include ui.subclass('space') {
|
|
16
|
+
width: var(--sys-height);
|
|
17
|
+
height: auto;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@include ui.subclass('line') {
|
|
21
|
+
@include ui.marginY(0);
|
|
22
|
+
|
|
23
|
+
width: var(--sys-height);
|
|
24
|
+
height: 100%;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@include ui.subclass('subtitle') {
|
|
28
|
+
display: none;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@include ui.subclass('group') {
|
|
32
|
+
display: none;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { ConstrClass, ListList, ListNames } from '@dxtmisha/functional'
|
|
2
|
+
import type { EventClickEmits } from '../../types/eventClickTypes'
|
|
3
|
+
|
|
4
|
+
import type { ListItemComponentInclude } from '../ListItem'
|
|
5
|
+
import type { ListGroupComponentInclude } from '../ListGroup'
|
|
6
|
+
import type { ListMenuComponentInclude } from '../ListMenu'
|
|
7
|
+
import type { ComputedRef } from 'vue'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Interface for describing which components need to be connected for work.
|
|
11
|
+
*
|
|
12
|
+
* Интерфейс для описания, какие компоненты надо подключить для работы.
|
|
13
|
+
*/
|
|
14
|
+
export type ListComponents
|
|
15
|
+
= ListItemComponentInclude
|
|
16
|
+
& ListGroupComponentInclude
|
|
17
|
+
& ListMenuComponentInclude
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Type describing available events.
|
|
21
|
+
*
|
|
22
|
+
* Тип, описывающий доступные события.
|
|
23
|
+
*/
|
|
24
|
+
export type ListEmits
|
|
25
|
+
= EventClickEmits
|
|
26
|
+
& {
|
|
27
|
+
close: []
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Type describing available properties.
|
|
32
|
+
*
|
|
33
|
+
* Тип, описывающий доступные свойства.
|
|
34
|
+
*/
|
|
35
|
+
export interface ListExpose {
|
|
36
|
+
isSelected: ComputedRef<boolean>
|
|
37
|
+
selectedList: ComputedRef<ListList>
|
|
38
|
+
selectedNames: ComputedRef<ListNames>
|
|
39
|
+
selectedValues: ComputedRef<any[]>
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Type describing available slots.
|
|
44
|
+
*
|
|
45
|
+
* Тип, описывающий доступные слоты.
|
|
46
|
+
*/
|
|
47
|
+
export type ListSlots = Record<string, (props: any) => any>
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Type describing subclasses.
|
|
51
|
+
*
|
|
52
|
+
* Тип, описывающий подклассы.
|
|
53
|
+
*/
|
|
54
|
+
export type ListClasses = {
|
|
55
|
+
main: ConstrClass
|
|
56
|
+
// :classes [!] System label / Системная метка
|
|
57
|
+
space: string
|
|
58
|
+
line: string
|
|
59
|
+
subtitle: string
|
|
60
|
+
html: string
|
|
61
|
+
management: string
|
|
62
|
+
group: string
|
|
63
|
+
menu: string
|
|
64
|
+
menuGroup: string
|
|
65
|
+
// :classes [!] System label / Системная метка
|
|
66
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type Ref, type ToRefs } from 'vue'
|
|
2
|
+
import { type ConstrBind, type ConstrEmit, DesignComp } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
import { ListGroupOpen } from './ListGroupOpen'
|
|
5
|
+
|
|
6
|
+
import type { MotionTransformProps } from '../MotionTransform'
|
|
7
|
+
import type { ListGroupComponents, ListGroupEmits, ListGroupSlots } from './types'
|
|
8
|
+
import type { ListGroupProps } from './props'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* ListGroup
|
|
12
|
+
*/
|
|
13
|
+
export class ListGroup {
|
|
14
|
+
readonly open: ListGroupOpen<ListGroupProps>
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Constructor
|
|
18
|
+
* @param props input data/ входные данные
|
|
19
|
+
* @param refs input data in the form of reactive elements/ входные данные в виде реактивных элементов
|
|
20
|
+
* @param element input element/ элемент ввода
|
|
21
|
+
* @param classDesign design name/ название дизайна
|
|
22
|
+
* @param className class name/ название класса
|
|
23
|
+
* @param components object for working with components/ объект для работы с компонентами
|
|
24
|
+
* @param slots object for working with slots/ объект для работы со слотами
|
|
25
|
+
* @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
|
|
26
|
+
*/
|
|
27
|
+
constructor(
|
|
28
|
+
protected readonly props: ListGroupProps,
|
|
29
|
+
protected readonly refs: ToRefs<ListGroupProps>,
|
|
30
|
+
protected readonly element: Ref<HTMLElement | undefined>,
|
|
31
|
+
protected readonly classDesign: string,
|
|
32
|
+
protected readonly className: string,
|
|
33
|
+
protected readonly components?: DesignComp<ListGroupComponents, ListGroupProps>,
|
|
34
|
+
protected readonly slots?: ListGroupSlots,
|
|
35
|
+
protected readonly emits?: ConstrEmit<ListGroupEmits>
|
|
36
|
+
) {
|
|
37
|
+
this.open = new ListGroupOpen(this.props)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Returns the property for the transformation component.
|
|
42
|
+
*
|
|
43
|
+
* Возвращает свойство для компонента трансформации.
|
|
44
|
+
*/
|
|
45
|
+
readonly transformBinds = (): ConstrBind<MotionTransformProps> => {
|
|
46
|
+
return {
|
|
47
|
+
autoClose: false,
|
|
48
|
+
section: true,
|
|
49
|
+
adaptive: 'planeAlways',
|
|
50
|
+
onTransformLite: this.open.onOpen
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { h, type VNode } from 'vue'
|
|
2
|
+
import {
|
|
3
|
+
type ConstrOptions,
|
|
4
|
+
type ConstrStyles,
|
|
5
|
+
DesignConstructorAbstract
|
|
6
|
+
} from '@dxtmisha/functional'
|
|
7
|
+
|
|
8
|
+
import { ListGroup } from './ListGroup'
|
|
9
|
+
|
|
10
|
+
import {
|
|
11
|
+
type ListGroupPropsBasic
|
|
12
|
+
} from './props'
|
|
13
|
+
import {
|
|
14
|
+
type ListGroupClasses,
|
|
15
|
+
type ListGroupComponents,
|
|
16
|
+
type ListGroupEmits,
|
|
17
|
+
type ListGroupExpose,
|
|
18
|
+
type ListGroupSlots
|
|
19
|
+
} from './types'
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* ListGroupDesign
|
|
23
|
+
*/
|
|
24
|
+
export class ListGroupDesign<
|
|
25
|
+
COMP extends ListGroupComponents,
|
|
26
|
+
EXPOSE extends ListGroupExpose,
|
|
27
|
+
CLASSES extends ListGroupClasses,
|
|
28
|
+
P extends ListGroupPropsBasic
|
|
29
|
+
> extends DesignConstructorAbstract<
|
|
30
|
+
HTMLDivElement,
|
|
31
|
+
COMP,
|
|
32
|
+
ListGroupEmits,
|
|
33
|
+
EXPOSE,
|
|
34
|
+
ListGroupSlots,
|
|
35
|
+
CLASSES,
|
|
36
|
+
P
|
|
37
|
+
> {
|
|
38
|
+
protected readonly item: ListGroup
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Constructor
|
|
42
|
+
* @param name class name/ название класса
|
|
43
|
+
* @param props properties/ свойства
|
|
44
|
+
* @param options list of additional parameters/ список дополнительных параметров
|
|
45
|
+
*/
|
|
46
|
+
constructor(
|
|
47
|
+
name: string,
|
|
48
|
+
props: Readonly<P>,
|
|
49
|
+
options?: ConstrOptions<COMP, ListGroupEmits, P>
|
|
50
|
+
) {
|
|
51
|
+
super(
|
|
52
|
+
name,
|
|
53
|
+
props,
|
|
54
|
+
options
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
this.item = new ListGroup(
|
|
58
|
+
this.props,
|
|
59
|
+
this.refs,
|
|
60
|
+
this.element,
|
|
61
|
+
this.getDesign(),
|
|
62
|
+
this.getName(),
|
|
63
|
+
this.components,
|
|
64
|
+
this.slots,
|
|
65
|
+
this.emits
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
this.init()
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Initialization of all the necessary properties for work
|
|
73
|
+
*
|
|
74
|
+
* Инициализация всех необходимых свойств для работы.
|
|
75
|
+
*/
|
|
76
|
+
protected initExpose(): EXPOSE {
|
|
77
|
+
return {
|
|
78
|
+
open: this.item.open.is
|
|
79
|
+
} as EXPOSE
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Improvement of the obtained list of classes.
|
|
84
|
+
*
|
|
85
|
+
* Доработка полученного списка классов.
|
|
86
|
+
*/
|
|
87
|
+
protected initClasses(): Partial<CLASSES> {
|
|
88
|
+
return {
|
|
89
|
+
main: {},
|
|
90
|
+
...{
|
|
91
|
+
// :classes [!] System label / Системная метка
|
|
92
|
+
head: this.getSubClass('head'),
|
|
93
|
+
list: this.getSubClass('list')
|
|
94
|
+
// :classes [!] System label / Системная метка
|
|
95
|
+
}
|
|
96
|
+
} as Partial<CLASSES>
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Refinement of the received list of styles.
|
|
101
|
+
*
|
|
102
|
+
* Доработка полученного списка стилей.
|
|
103
|
+
*/
|
|
104
|
+
protected initStyles(): ConstrStyles {
|
|
105
|
+
return {}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* A method for rendering.
|
|
110
|
+
*
|
|
111
|
+
* Метод для рендеринга.
|
|
112
|
+
*/
|
|
113
|
+
protected initRender(): VNode {
|
|
114
|
+
return h(
|
|
115
|
+
'div',
|
|
116
|
+
{
|
|
117
|
+
...this.getAttrs(),
|
|
118
|
+
'class': this.classes?.value.main,
|
|
119
|
+
'data-open': this.item.open.is.value ? 'open' : 'close',
|
|
120
|
+
'data-divider': this.props.divider ? 'divider' : undefined
|
|
121
|
+
},
|
|
122
|
+
this.renderTransform()
|
|
123
|
+
)
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Render transformation element.
|
|
128
|
+
*
|
|
129
|
+
* Рендер элемента трансформации.
|
|
130
|
+
*/
|
|
131
|
+
readonly renderTransform = (): VNode[] => {
|
|
132
|
+
return this.components.render(
|
|
133
|
+
'motionTransform',
|
|
134
|
+
{
|
|
135
|
+
...this.item.transformBinds(),
|
|
136
|
+
open: this.item.open.is.value
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
head: this.renderHead,
|
|
140
|
+
body: this.renderList
|
|
141
|
+
}
|
|
142
|
+
)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Render title element.
|
|
147
|
+
*
|
|
148
|
+
* Рендер элемента заголовка.
|
|
149
|
+
*/
|
|
150
|
+
readonly renderHead = (): VNode => {
|
|
151
|
+
return h(
|
|
152
|
+
'div',
|
|
153
|
+
{
|
|
154
|
+
class: this.classes?.value.head
|
|
155
|
+
},
|
|
156
|
+
this.initSlot(
|
|
157
|
+
'head',
|
|
158
|
+
undefined,
|
|
159
|
+
{
|
|
160
|
+
open: this.item.open.is.value
|
|
161
|
+
}
|
|
162
|
+
)
|
|
163
|
+
)
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Render list element.
|
|
168
|
+
*
|
|
169
|
+
* Рендер элемента списка.
|
|
170
|
+
*/
|
|
171
|
+
readonly renderList = (): VNode => {
|
|
172
|
+
return h(
|
|
173
|
+
'div',
|
|
174
|
+
{
|
|
175
|
+
class: this.classes?.value.list
|
|
176
|
+
},
|
|
177
|
+
this.initSlot('list')
|
|
178
|
+
)
|
|
179
|
+
}
|
|
180
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { computed, ref } from 'vue'
|
|
2
|
+
import type { MotionTransformEmitOptions } from '../MotionTransform'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Class for managing the open/close state of ListGroup component.
|
|
6
|
+
* Handles the visibility state and provides computed properties and methods
|
|
7
|
+
* for controlling group expansion and collapse.
|
|
8
|
+
*
|
|
9
|
+
* Класс для управления состоянием открытия/закрытия компонента ListGroup.
|
|
10
|
+
* Управляет состоянием видимости и предоставляет вычисляемые свойства и методы
|
|
11
|
+
* для контроля разворачивания и сворачивания группы.
|
|
12
|
+
*/
|
|
13
|
+
export class ListGroupOpen<T extends { open?: boolean }> {
|
|
14
|
+
/**
|
|
15
|
+
* Internal reactive state for group open/close status.
|
|
16
|
+
* This state is independent from props and can be controlled programmatically.
|
|
17
|
+
*
|
|
18
|
+
* Внутреннее реактивное состояние для статуса открытия/закрытия группы.
|
|
19
|
+
* Это состояние независимо от пропсов и может контролироваться программно.
|
|
20
|
+
*/
|
|
21
|
+
readonly open = ref<boolean>(false)
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Constructor initializes the ListGroupOpen with component props.
|
|
25
|
+
*
|
|
26
|
+
* Конструктор инициализирует ListGroupOpen с пропсами компонента.
|
|
27
|
+
* @param props - ListGroup component properties / свойства компонента ListGroup
|
|
28
|
+
*/
|
|
29
|
+
constructor(
|
|
30
|
+
protected readonly props: T
|
|
31
|
+
) {
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Returns information about the opening status.
|
|
36
|
+
*
|
|
37
|
+
* Возвращает информацию о статусе открытия.
|
|
38
|
+
*/
|
|
39
|
+
readonly is = computed<boolean>(
|
|
40
|
+
() => this.open.value || Boolean(this.props.open)
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Events for opening the element.
|
|
45
|
+
*
|
|
46
|
+
* События для открытия элемента.
|
|
47
|
+
* @param options event parameters/ параметры события
|
|
48
|
+
*/
|
|
49
|
+
readonly onOpen = (
|
|
50
|
+
{ open }: MotionTransformEmitOptions
|
|
51
|
+
) => {
|
|
52
|
+
if (this.open.value !== open) {
|
|
53
|
+
this.open.value = open
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
interface ListGroupPropsToken {
|
|
2
|
+
// :type [!] System label / Системная метка
|
|
3
|
+
open?: boolean
|
|
4
|
+
divider?: boolean
|
|
5
|
+
// :type [!] System label / Системная метка
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface ListGroupPropsBasic {
|
|
9
|
+
divider?: boolean
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Type describing incoming properties.
|
|
14
|
+
*
|
|
15
|
+
* Тип, описывающий входящие свойства.
|
|
16
|
+
*/
|
|
17
|
+
export interface ListGroupProps extends ListGroupPropsBasic, ListGroupPropsToken {
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Default value for property.
|
|
22
|
+
*
|
|
23
|
+
* Значение по умолчанию для свойства.
|
|
24
|
+
*/
|
|
25
|
+
export const defaultsListGroup = {
|
|
26
|
+
...{
|
|
27
|
+
// :default [!] System label / Системная метка
|
|
28
|
+
// :default [!] System label / Системная метка
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
@use "@dxtmisha/styles/properties" as ui;
|
|
2
|
+
|
|
3
|
+
@mixin mixinListGroup {
|
|
4
|
+
&__head,
|
|
5
|
+
&__list {
|
|
6
|
+
display: flow-root;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@at-root {
|
|
10
|
+
& + &[data-divider="divider"],
|
|
11
|
+
#{ui.c('?listItem')} + &[data-divider="divider"],
|
|
12
|
+
#{ui.c('?list__menuGroup--divider')}:not(:first-child) > &[data-divider="divider"] {
|
|
13
|
+
border-top-style: solid;
|
|
14
|
+
border-top-width: ui.v('??borderWidth');
|
|
15
|
+
@include ui.borderColor(ui.v('??borderColor'), ui.v('??borderOpacity'));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ComputedRef } from 'vue'
|
|
2
|
+
import type { ConstrClass } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
import type { MotionTransformComponentInclude } from '../MotionTransform'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Interface for describing which components need to be connected for work.
|
|
8
|
+
*
|
|
9
|
+
* Интерфейс для описания, какие компоненты надо подключить для работы.
|
|
10
|
+
*/
|
|
11
|
+
export type ListGroupComponents
|
|
12
|
+
= MotionTransformComponentInclude
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Type describing available events.
|
|
16
|
+
*
|
|
17
|
+
* Тип, описывающий доступные события.
|
|
18
|
+
*/
|
|
19
|
+
export type ListGroupEmits = {}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Type describing available properties.
|
|
23
|
+
*
|
|
24
|
+
* Тип, описывающий доступные свойства.
|
|
25
|
+
*/
|
|
26
|
+
export interface ListGroupExpose {
|
|
27
|
+
open: ComputedRef<boolean>
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Type describing available slots.
|
|
32
|
+
*
|
|
33
|
+
* Тип, описывающий доступные слоты.
|
|
34
|
+
*/
|
|
35
|
+
export interface ListGroupSlots {
|
|
36
|
+
head?(props: { open: boolean }): any
|
|
37
|
+
list?(props: any): any
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Type describing subclasses.
|
|
42
|
+
*
|
|
43
|
+
* Тип, описывающий подклассы.
|
|
44
|
+
*/
|
|
45
|
+
export type ListGroupClasses = {
|
|
46
|
+
main: ConstrClass
|
|
47
|
+
// :classes [!] System label / Системная метка
|
|
48
|
+
head: string
|
|
49
|
+
list: string
|
|
50
|
+
// :classes [!] System label / Системная метка
|
|
51
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { computed, type Ref, type ToRefs } from 'vue'
|
|
2
|
+
import { type ConstrClassObject, type ConstrEmit, DesignComp } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
import { getClassTegAStatic } from '../../functions/getClassTegAStatic'
|
|
5
|
+
|
|
6
|
+
import { IconTrailingInclude } from '../Icon'
|
|
7
|
+
import { ProgressInclude } from '../Progress'
|
|
8
|
+
import { RippleInclude } from '../Ripple'
|
|
9
|
+
import { SkeletonInclude } from '../Skeleton'
|
|
10
|
+
|
|
11
|
+
import { LabelHighlightInclude } from '../../classes/LabelHighlightInclude'
|
|
12
|
+
import { PrefixInclude } from '../../classes/PrefixInclude'
|
|
13
|
+
import { CaptionInclude } from '../../classes/CaptionInclude'
|
|
14
|
+
import { SuffixInclude } from '../../classes/SuffixInclude'
|
|
15
|
+
import { DescriptionInclude } from '../../classes/DescriptionInclude'
|
|
16
|
+
import { BadgeInclude } from '../Badge/BadgeInclude'
|
|
17
|
+
|
|
18
|
+
import { EnabledInclude } from '../../classes/EnabledInclude'
|
|
19
|
+
|
|
20
|
+
import type { ListItemComponents, ListItemEmits, ListItemSlots } from './types'
|
|
21
|
+
import type { ListItemPropsBasic } from './props'
|
|
22
|
+
import { EventClickInclude } from '../../classes/EventClickInclude'
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* ListItem
|
|
26
|
+
*/
|
|
27
|
+
export class ListItem {
|
|
28
|
+
readonly icon: IconTrailingInclude
|
|
29
|
+
readonly label: LabelHighlightInclude
|
|
30
|
+
readonly prefix: PrefixInclude
|
|
31
|
+
readonly caption: CaptionInclude
|
|
32
|
+
readonly suffix: SuffixInclude
|
|
33
|
+
readonly description: DescriptionInclude
|
|
34
|
+
readonly badge: BadgeInclude
|
|
35
|
+
|
|
36
|
+
readonly ripple: RippleInclude
|
|
37
|
+
readonly progress: ProgressInclude
|
|
38
|
+
readonly skeleton: SkeletonInclude
|
|
39
|
+
|
|
40
|
+
readonly enabled: EnabledInclude
|
|
41
|
+
readonly event: EventClickInclude
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Constructor
|
|
45
|
+
* @param props input data/ входные данные
|
|
46
|
+
* @param refs input data in the form of reactive elements/ входные данные в виде реактивных элементов
|
|
47
|
+
* @param element input element/ элемент ввода
|
|
48
|
+
* @param classDesign design name/ название дизайна
|
|
49
|
+
* @param className class name/ название класса
|
|
50
|
+
* @param components object for working with components/ объект для работы с компонентами
|
|
51
|
+
* @param slots object for working with slots/ объект для работы со слотами
|
|
52
|
+
* @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
|
|
53
|
+
*/
|
|
54
|
+
constructor(
|
|
55
|
+
protected readonly props: ListItemPropsBasic,
|
|
56
|
+
protected readonly refs: ToRefs<ListItemPropsBasic>,
|
|
57
|
+
protected readonly element: Ref<HTMLElement | undefined>,
|
|
58
|
+
protected readonly classDesign: string,
|
|
59
|
+
protected readonly className: string,
|
|
60
|
+
protected readonly components?: DesignComp<ListItemComponents, ListItemPropsBasic>,
|
|
61
|
+
protected readonly slots?: ListItemSlots,
|
|
62
|
+
protected readonly emits?: ConstrEmit<ListItemEmits>
|
|
63
|
+
) {
|
|
64
|
+
const progress = new ProgressInclude(
|
|
65
|
+
props,
|
|
66
|
+
className,
|
|
67
|
+
components,
|
|
68
|
+
{
|
|
69
|
+
circular: true,
|
|
70
|
+
inverse: true
|
|
71
|
+
}
|
|
72
|
+
)
|
|
73
|
+
const skeleton = new SkeletonInclude(
|
|
74
|
+
props,
|
|
75
|
+
classDesign,
|
|
76
|
+
['classTextVariant']
|
|
77
|
+
)
|
|
78
|
+
const enabled = new EnabledInclude(props, progress)
|
|
79
|
+
|
|
80
|
+
this.icon = new IconTrailingInclude(props, className, components)
|
|
81
|
+
this.label = new LabelHighlightInclude(
|
|
82
|
+
props,
|
|
83
|
+
className,
|
|
84
|
+
undefined,
|
|
85
|
+
slots,
|
|
86
|
+
undefined,
|
|
87
|
+
skeleton
|
|
88
|
+
)
|
|
89
|
+
this.prefix = new PrefixInclude(props, className, slots, skeleton)
|
|
90
|
+
this.caption = new CaptionInclude(props, className, slots)
|
|
91
|
+
this.suffix = new SuffixInclude(props, className, slots)
|
|
92
|
+
this.description = new DescriptionInclude(props, className, slots, skeleton)
|
|
93
|
+
this.badge = new BadgeInclude(
|
|
94
|
+
props,
|
|
95
|
+
className,
|
|
96
|
+
components,
|
|
97
|
+
{
|
|
98
|
+
overlap: 'static'
|
|
99
|
+
}
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
this.ripple = new RippleInclude(className, components, enabled)
|
|
103
|
+
this.progress = progress
|
|
104
|
+
this.skeleton = skeleton
|
|
105
|
+
|
|
106
|
+
this.enabled = enabled
|
|
107
|
+
this.event = new EventClickInclude(props, enabled, emits)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** values for the class/ значения для класса */
|
|
111
|
+
readonly classes = computed<ConstrClassObject>(() => ({
|
|
112
|
+
[`${this.className}--description`]: this.description.is.value,
|
|
113
|
+
[getClassTegAStatic(this.classDesign)]: true
|
|
114
|
+
}))
|
|
115
|
+
}
|