@dxtmisha/constructor 0.23.0 → 0.30.1
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/package.json +36 -6
- package/src/classes/AriaStaticInclude.ts +269 -0
- package/src/classes/DescriptionInclude.ts +19 -2
- package/src/classes/EnabledInclude.ts +11 -0
- package/src/classes/EventClickInclude.ts +2 -2
- package/src/classes/LabelHighlightInclude.ts +35 -0
- package/src/classes/LabelInclude.ts +40 -5
- package/src/classes/ModelInclude.ts +50 -1
- package/src/classes/ModelValueInclude.ts +73 -0
- package/src/classes/TabIndexInclude.ts +260 -0
- package/src/classes/TextInclude.ts +102 -0
- package/src/classes/TouchEventInclude.ts +284 -0
- package/src/classes/field/FieldArrowInclude.ts +189 -0
- package/src/classes/field/FieldAttributesInclude.ts +87 -28
- package/src/classes/field/FieldChangeInclude.ts +1 -1
- package/src/classes/field/FieldElementInclude.ts +1 -1
- package/src/classes/field/FieldEventInclude.ts +253 -0
- package/src/classes/field/FieldInputModeInclude.ts +48 -0
- package/src/classes/field/FieldMatchInclude.ts +9 -3
- package/src/classes/field/FieldTypeInclude.ts +11 -6
- package/src/classes/field/FieldValidationInclude.ts +1 -4
- package/src/classes/field/FieldValueInclude.ts +10 -0
- package/src/constructors/Accordion/Accordion.ts +68 -0
- package/src/constructors/Accordion/AccordionDesign.tsx +192 -0
- package/src/constructors/Accordion/basicTypes.ts +0 -0
- package/src/constructors/Accordion/index.ts +5 -0
- package/src/constructors/Accordion/properties.json +16 -0
- package/src/constructors/Accordion/props.ts +55 -0
- package/src/constructors/Accordion/style.scss +12 -0
- package/src/constructors/Accordion/types.ts +63 -0
- package/src/constructors/ActionSheet/ActionSheet.ts +78 -0
- package/src/constructors/ActionSheet/ActionSheetDesign.tsx +125 -0
- package/src/constructors/ActionSheet/basicTypes.ts +0 -0
- package/src/constructors/ActionSheet/index.ts +5 -0
- package/src/constructors/ActionSheet/properties.json +14 -0
- package/src/constructors/ActionSheet/props.ts +44 -0
- package/src/constructors/ActionSheet/style.scss +25 -0
- package/src/constructors/ActionSheet/types.ts +54 -0
- package/src/constructors/Actions/Actions.ts +60 -0
- package/src/constructors/Actions/ActionsDesign.tsx +212 -0
- package/src/constructors/Actions/ActionsInclude.ts +109 -0
- package/src/constructors/Actions/basicTypes.ts +40 -0
- package/src/constructors/Actions/index.ts +6 -0
- package/src/constructors/Actions/properties.json +63 -0
- package/src/constructors/Actions/props.ts +42 -0
- package/src/constructors/Actions/style.scss +11 -0
- package/src/constructors/Actions/types.ts +52 -0
- package/src/constructors/Anchor/Anchor.ts +113 -0
- package/src/constructors/Anchor/AnchorDesign.tsx +242 -0
- package/src/constructors/Anchor/AnchorEvent.ts +76 -0
- package/src/constructors/Anchor/AnchorHref.ts +54 -0
- package/src/constructors/Anchor/AnchorIcon.ts +54 -0
- package/src/constructors/Anchor/AnchorTo.ts +46 -0
- package/src/constructors/Anchor/basicTypes.ts +9 -0
- package/src/constructors/Anchor/index.ts +5 -0
- package/src/constructors/Anchor/properties.json +3 -0
- package/src/constructors/Anchor/props.ts +54 -0
- package/src/constructors/Anchor/style.scss +10 -0
- package/src/constructors/Anchor/types.ts +47 -0
- package/src/constructors/Arrow/Arrow.ts +134 -0
- package/src/constructors/Arrow/ArrowDesign.tsx +226 -0
- package/src/constructors/Arrow/ArrowElement.ts +139 -0
- package/src/constructors/Arrow/ArrowElementTarget.ts +72 -0
- package/src/constructors/Arrow/ArrowEvent.ts +126 -0
- package/src/constructors/Arrow/ArrowInclude.ts +85 -0
- package/src/constructors/Arrow/ArrowParent.ts +100 -0
- package/src/constructors/Arrow/ArrowPosition.ts +231 -0
- package/src/constructors/Arrow/basicTypes.ts +50 -0
- package/src/constructors/Arrow/index.ts +6 -0
- package/src/constructors/Arrow/properties.json +23 -0
- package/src/constructors/Arrow/props.ts +31 -0
- package/src/constructors/Arrow/style.scss +133 -0
- package/src/constructors/Arrow/types.ts +54 -0
- package/src/constructors/Badge/BadgeDesign.tsx +4 -1
- package/src/constructors/Badge/properties.json +36 -36
- package/src/constructors/Badge/props.ts +3 -1
- package/src/constructors/Badge/types.ts +3 -3
- package/src/constructors/Bars/Bars.ts +10 -4
- package/src/constructors/Bars/BarsDesign.tsx +17 -11
- package/src/constructors/Bars/BarsInclude.ts +5 -2
- package/src/constructors/Bars/properties.json +6 -6
- package/src/constructors/Bars/props.ts +3 -1
- package/src/constructors/Bars/style.scss +4 -0
- package/src/constructors/Bars/types.ts +3 -3
- package/src/constructors/Block/Block.ts +105 -0
- package/src/constructors/Block/BlockDesign.tsx +219 -0
- package/src/constructors/Block/basicTypes.ts +0 -0
- package/src/constructors/Block/index.ts +5 -0
- package/src/constructors/Block/properties.json +10 -0
- package/src/constructors/Block/props.ts +46 -0
- package/src/constructors/Block/style.scss +11 -0
- package/src/constructors/Block/types.ts +64 -0
- package/src/constructors/Button/Button.ts +26 -2
- package/src/constructors/Button/ButtonDesign.tsx +11 -6
- package/src/constructors/Button/ButtonInclude.ts +8 -5
- package/src/constructors/Button/index.ts +1 -0
- package/src/constructors/Button/properties.json +84 -84
- package/src/constructors/Button/props.ts +5 -1
- package/src/constructors/Button/style.scss +1 -1
- package/src/constructors/Button/types.ts +2 -2
- package/src/constructors/Cell/Cell.ts +23 -6
- package/src/constructors/Cell/CellDesign.tsx +53 -22
- package/src/constructors/Cell/basicTypes.ts +33 -0
- package/src/constructors/Cell/properties.json +52 -52
- package/src/constructors/Cell/props.ts +16 -13
- package/src/constructors/Cell/style.scss +1 -1
- package/src/constructors/Cell/types.ts +3 -3
- package/src/constructors/Chip/ChipDesign.tsx +5 -5
- package/src/constructors/Chip/ChipInclude.ts +83 -0
- package/src/constructors/Chip/basicTypes.ts +12 -0
- package/src/constructors/Chip/index.ts +2 -0
- package/src/constructors/Chip/properties.json +3 -3
- package/src/constructors/Chip/types.ts +5 -5
- package/src/constructors/ChipGroup/ChipGroup.ts +74 -0
- package/src/constructors/ChipGroup/ChipGroupDesign.tsx +162 -0
- package/src/constructors/ChipGroup/basicTypes.ts +6 -0
- package/src/constructors/ChipGroup/index.ts +5 -0
- package/src/constructors/ChipGroup/properties.json +3 -0
- package/src/constructors/ChipGroup/props.ts +50 -0
- package/src/constructors/ChipGroup/style.scss +6 -0
- package/src/constructors/ChipGroup/types.ts +47 -0
- package/src/constructors/Dialog/Dialog.ts +145 -0
- package/src/constructors/Dialog/DialogDesign.tsx +135 -0
- package/src/constructors/Dialog/basicTypes.ts +0 -0
- package/src/constructors/Dialog/index.ts +5 -0
- package/src/constructors/Dialog/properties.json +23 -0
- package/src/constructors/Dialog/props.ts +76 -0
- package/src/constructors/Dialog/style.scss +18 -0
- package/src/constructors/Dialog/types.ts +67 -0
- package/src/constructors/Field/Field.ts +58 -19
- package/src/constructors/Field/FieldDesign.tsx +35 -17
- package/src/constructors/Field/FieldInclude.ts +141 -11
- package/src/constructors/Field/basicTypes.ts +35 -19
- package/src/constructors/Field/properties.json +92 -86
- package/src/constructors/Field/props.ts +6 -3
- package/src/constructors/Field/style.scss +36 -20
- package/src/constructors/Field/types.ts +13 -13
- package/src/constructors/FieldCounter/FieldCounterDesign.tsx +1 -0
- package/src/constructors/FieldCounter/FieldCounterInclude.ts +3 -1
- package/src/constructors/FieldCounter/basicTypes.ts +1 -0
- package/src/constructors/FieldCounter/properties.json +3 -3
- package/src/constructors/FieldCounter/props.ts +5 -2
- package/src/constructors/FieldCounter/types.ts +1 -1
- package/src/constructors/FieldLabel/FieldLabelDesign.tsx +6 -2
- package/src/constructors/FieldLabel/FieldLabelInclude.ts +13 -4
- package/src/constructors/FieldLabel/properties.json +4 -4
- package/src/constructors/FieldLabel/props.ts +2 -2
- package/src/constructors/FieldLabel/types.ts +2 -2
- package/src/constructors/FieldMessage/FieldMessage.ts +19 -0
- package/src/constructors/FieldMessage/FieldMessageDesign.tsx +36 -4
- package/src/constructors/FieldMessage/FieldMessageInclude.ts +11 -1
- package/src/constructors/FieldMessage/basicTypes.ts +15 -1
- package/src/constructors/FieldMessage/properties.json +10 -9
- package/src/constructors/FieldMessage/props.ts +4 -0
- package/src/constructors/FieldMessage/style.scss +16 -1
- package/src/constructors/FieldMessage/types.ts +4 -2
- package/src/constructors/Icon/Icon.ts +37 -2
- package/src/constructors/Icon/IconDesign.tsx +46 -39
- package/src/constructors/Icon/properties.json +25 -25
- package/src/constructors/Icon/props.ts +22 -16
- package/src/constructors/Icon/types.ts +1 -1
- package/src/constructors/Image/Image.ts +68 -10
- package/src/constructors/Image/ImageBackground.ts +15 -2
- package/src/constructors/Image/ImageCoordinator.ts +4 -2
- package/src/constructors/Image/ImageData.ts +4 -0
- package/src/constructors/Image/ImageDesign.tsx +81 -15
- package/src/constructors/Image/ImageFile.ts +2 -13
- package/src/constructors/Image/ImageImg.ts +218 -0
- package/src/constructors/Image/ImagePdf.ts +2 -2
- package/src/constructors/Image/basicTypes.ts +5 -0
- package/src/constructors/Image/properties.json +17 -17
- package/src/constructors/Image/props.ts +34 -7
- package/src/constructors/Image/style.scss +42 -0
- package/src/constructors/Image/types.ts +1 -1
- package/src/constructors/Input/Input.ts +146 -0
- package/src/constructors/Input/InputDesign.tsx +174 -0
- package/src/constructors/Input/InputPassword.ts +54 -0
- package/src/constructors/Input/basicTypes.ts +3 -0
- package/src/constructors/Input/index.ts +5 -0
- package/src/constructors/Input/properties.json +2 -0
- package/src/constructors/Input/props.ts +53 -0
- package/src/constructors/Input/style.scss +5 -0
- package/src/constructors/Input/types.ts +48 -0
- package/src/constructors/List/List.ts +36 -11
- package/src/constructors/List/ListControl.ts +2 -2
- package/src/constructors/List/ListDesign.tsx +59 -38
- package/src/constructors/List/ListGo.ts +5 -3
- package/src/constructors/List/properties.json +16 -16
- package/src/constructors/List/props.ts +7 -0
- package/src/constructors/List/style.scss +14 -0
- package/src/constructors/List/types.ts +9 -9
- package/src/constructors/ListGroup/ListGroupDesign.tsx +8 -3
- package/src/constructors/ListGroup/basicTypes.ts +7 -0
- package/src/constructors/ListGroup/properties.json +15 -15
- package/src/constructors/ListGroup/props.ts +4 -4
- package/src/constructors/ListGroup/types.ts +2 -1
- package/src/constructors/ListItem/ListItem.ts +67 -7
- package/src/constructors/ListItem/ListItemDesign.tsx +13 -10
- package/src/constructors/ListItem/properties.json +52 -52
- package/src/constructors/ListItem/props.ts +24 -15
- package/src/constructors/ListItem/types.ts +12 -12
- package/src/constructors/ListMenu/ListMenu.ts +2 -1
- package/src/constructors/ListMenu/ListMenuDesign.tsx +3 -3
- package/src/constructors/ListMenu/properties.json +19 -19
- package/src/constructors/ListMenu/types.ts +3 -3
- package/src/constructors/Mask/MaskDesign.tsx +33 -28
- package/src/constructors/Mask/MaskEvent.ts +41 -2
- package/src/constructors/Mask/MaskInclude.ts +147 -0
- package/src/constructors/Mask/basicTypes.ts +19 -1
- package/src/constructors/Mask/properties.json +30 -29
- package/src/constructors/Mask/props.ts +1 -1
- package/src/constructors/Mask/style.scss +2 -4
- package/src/constructors/Mask/types.ts +4 -4
- package/src/constructors/Menu/Menu.ts +17 -5
- package/src/constructors/Menu/MenuDesign.tsx +11 -11
- package/src/constructors/Menu/MenuGo.ts +72 -0
- package/src/constructors/Menu/MenuInclude.ts +20 -10
- package/src/constructors/Menu/MenuSearch.ts +20 -1
- package/src/constructors/Menu/MenuValue.ts +7 -3
- package/src/constructors/Menu/MenuWindow.ts +2 -1
- package/src/constructors/Menu/basicTypes.ts +21 -4
- package/src/constructors/Menu/properties.json +17 -17
- package/src/constructors/Menu/props.ts +15 -3
- package/src/constructors/Menu/types.ts +6 -16
- package/src/constructors/Modal/Modal.ts +53 -0
- package/src/constructors/Modal/ModalAbstract.ts +74 -0
- package/src/constructors/Modal/ModalDesign.tsx +63 -0
- package/src/constructors/Modal/ModalDesignAbstract.tsx +226 -0
- package/src/constructors/Modal/basicTypes.ts +0 -0
- package/src/constructors/Modal/index.ts +5 -0
- package/src/constructors/Modal/properties.json +17 -0
- package/src/constructors/Modal/props.ts +45 -0
- package/src/constructors/Modal/style.scss +20 -0
- package/src/constructors/Modal/types.ts +62 -0
- package/src/constructors/MotionTransform/MotionTransform.ts +65 -8
- package/src/constructors/MotionTransform/MotionTransformDesign.tsx +55 -21
- package/src/constructors/MotionTransform/MotionTransformElement.ts +7 -2
- package/src/constructors/MotionTransform/MotionTransformInclude.ts +2 -1
- package/src/constructors/MotionTransform/MotionTransformState.ts +5 -0
- package/src/constructors/MotionTransform/basicTypes.ts +18 -2
- package/src/constructors/MotionTransform/properties.json +35 -35
- package/src/constructors/MotionTransform/props.ts +13 -7
- package/src/constructors/MotionTransform/style.scss +24 -2
- package/src/constructors/MotionTransform/types.ts +7 -7
- package/src/constructors/Progress/Progress.ts +12 -2
- package/src/constructors/Progress/ProgressDesign.tsx +75 -53
- package/src/constructors/Progress/ProgressInclude.ts +13 -1
- package/src/constructors/Progress/properties.json +47 -47
- package/src/constructors/Progress/props.ts +5 -1
- package/src/constructors/Progress/style.scss +2 -2
- package/src/constructors/Progress/types.ts +4 -4
- package/src/constructors/Ripple/Ripple.ts +1 -1
- package/src/constructors/Ripple/RippleDesign.tsx +7 -4
- package/src/constructors/Ripple/RippleItem.ts +1 -1
- package/src/constructors/Ripple/style.scss +4 -0
- package/src/constructors/Ripple/types.ts +2 -2
- package/src/constructors/Scrollbar/Scrollbar.ts +3 -3
- package/src/constructors/Scrollbar/ScrollbarDesign.tsx +1 -1
- package/src/constructors/Scrollbar/properties.json +33 -33
- package/src/constructors/Scrollbar/types.ts +1 -1
- package/src/constructors/Section/Section.ts +33 -0
- package/src/constructors/Section/SectionDesign.tsx +127 -0
- package/src/constructors/Section/basicTypes.ts +0 -0
- package/src/constructors/Section/index.ts +5 -0
- package/src/constructors/Section/properties.json +2 -0
- package/src/constructors/Section/props.ts +29 -0
- package/src/constructors/Section/style.scss +5 -0
- package/src/constructors/Section/types.ts +47 -0
- package/src/constructors/Select/Select.ts +172 -0
- package/src/constructors/Select/SelectDesign.tsx +288 -0
- package/src/constructors/Select/SelectFilter.ts +43 -0
- package/src/constructors/Select/SelectInput.ts +68 -0
- package/src/constructors/Select/basicTypes.ts +0 -0
- package/src/constructors/Select/index.ts +5 -0
- package/src/constructors/Select/properties.json +3 -0
- package/src/constructors/Select/props.ts +63 -0
- package/src/constructors/Select/style.scss +5 -0
- package/src/constructors/Select/types.ts +53 -0
- package/src/constructors/SelectValue/SelectValue.ts +95 -0
- package/src/constructors/SelectValue/SelectValueDesign.tsx +198 -0
- package/src/constructors/SelectValue/SelectValueInclude.ts +92 -0
- package/src/constructors/SelectValue/basicTypes.ts +17 -0
- package/src/constructors/SelectValue/index.ts +6 -0
- package/src/constructors/SelectValue/properties.json +7 -0
- package/src/constructors/SelectValue/props.ts +48 -0
- package/src/constructors/SelectValue/style.scss +14 -0
- package/src/constructors/SelectValue/types.ts +47 -0
- package/src/constructors/Skeleton/Skeleton.ts +1 -3
- package/src/constructors/Skeleton/SkeletonDesign.tsx +7 -1
- package/src/constructors/Skeleton/SkeletonInclude.ts +5 -0
- package/src/constructors/Skeleton/properties.json +24 -24
- package/src/constructors/Skeleton/types.ts +1 -1
- package/src/constructors/TextareaAutosize/TextareaAutosize.ts +41 -0
- package/src/constructors/TextareaAutosize/TextareaAutosizeDesign.tsx +147 -0
- package/src/constructors/TextareaAutosize/TextareaAutosizeResize.ts +109 -0
- package/src/constructors/TextareaAutosize/TextareaAutosizeValue.ts +69 -0
- package/src/constructors/TextareaAutosize/basicTypes.ts +0 -0
- package/src/constructors/TextareaAutosize/index.ts +5 -0
- package/src/constructors/TextareaAutosize/properties.json +6 -0
- package/src/constructors/TextareaAutosize/props.ts +34 -0
- package/src/constructors/TextareaAutosize/style.scss +31 -0
- package/src/constructors/TextareaAutosize/types.ts +50 -0
- package/src/constructors/Tooltip/Tooltip.ts +138 -0
- package/src/constructors/Tooltip/TooltipClasses.ts +90 -0
- package/src/constructors/Tooltip/TooltipDesign.tsx +198 -0
- package/src/constructors/Tooltip/TooltipEvent.ts +103 -0
- package/src/constructors/Tooltip/TooltipInclude.ts +114 -0
- package/src/constructors/Tooltip/TooltipOpen.ts +128 -0
- package/src/constructors/Tooltip/TooltipPosition.ts +92 -0
- package/src/constructors/Tooltip/TooltipStatus.ts +97 -0
- package/src/constructors/Tooltip/TooltipStyle.ts +123 -0
- package/src/constructors/Tooltip/basicTypes.ts +39 -0
- package/src/constructors/Tooltip/index.ts +6 -0
- package/src/constructors/Tooltip/properties.json +14 -0
- package/src/constructors/Tooltip/props.ts +49 -0
- package/src/constructors/Tooltip/style.scss +43 -0
- package/src/constructors/Tooltip/types.ts +58 -0
- package/src/constructors/Window/Window.ts +52 -16
- package/src/constructors/Window/WindowClasses.ts +33 -0
- package/src/constructors/Window/WindowClient.ts +39 -0
- package/src/constructors/Window/WindowDesign.tsx +31 -14
- package/src/constructors/Window/WindowEsc.ts +114 -0
- package/src/constructors/Window/WindowHidden.ts +120 -0
- package/src/constructors/Window/WindowInclude.ts +2 -2
- package/src/constructors/Window/WindowOpen.ts +10 -1
- package/src/constructors/Window/WindowOrigin.ts +5 -1
- package/src/constructors/Window/WindowStatic.ts +3 -1
- package/src/constructors/Window/WindowVerification.ts +8 -5
- package/src/constructors/Window/basicTypes.ts +26 -16
- package/src/constructors/Window/properties.json +239 -236
- package/src/constructors/Window/props.ts +10 -1
- package/src/constructors/Window/style.scss +11 -0
- package/src/constructors/Window/types.ts +2 -2
- package/src/functions/{getClassTegAStatic.ts → getClassTagAStatic.ts} +1 -1
- package/src/library.ts +13 -1
- package/src/types/ariaTypes.ts +366 -0
- package/src/types/descriptionTypes.ts +8 -0
- package/src/types/fieldTypes.ts +120 -16
- package/src/types/labelTypes.ts +39 -0
- package/src/types/modelTypes.ts +16 -0
- package/src/types/roleTypes.ts +88 -0
- package/src/types/textTypes.ts +33 -0
- package/src/types/touchEventTypes.ts +43 -0
|
@@ -2,7 +2,7 @@ import { computed } from 'vue'
|
|
|
2
2
|
|
|
3
3
|
import { FieldVisibilityInclude } from './FieldVisibilityInclude'
|
|
4
4
|
|
|
5
|
-
import type { FieldAllProps } from '../../types/fieldTypes'
|
|
5
|
+
import type { FieldAllProps, FieldType } from '../../types/fieldTypes'
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Class for working with the input type.
|
|
@@ -23,11 +23,7 @@ export class FieldTypeInclude {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
/** Returns the input type/ Возвращает тип ввода */
|
|
26
|
-
readonly item = computed<
|
|
27
|
-
if (this.props.arrow) {
|
|
28
|
-
return 'number'
|
|
29
|
-
}
|
|
30
|
-
|
|
26
|
+
readonly item = computed<FieldType>(() => {
|
|
31
27
|
const type = this.props.type
|
|
32
28
|
|
|
33
29
|
if (
|
|
@@ -39,4 +35,13 @@ export class FieldTypeInclude {
|
|
|
39
35
|
|
|
40
36
|
return type ?? 'text'
|
|
41
37
|
})
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Returns the input type.
|
|
41
|
+
*
|
|
42
|
+
* Возвращает тип ввода.
|
|
43
|
+
*/
|
|
44
|
+
get(): FieldType {
|
|
45
|
+
return this.item.value
|
|
46
|
+
}
|
|
42
47
|
}
|
|
@@ -2,7 +2,6 @@ import { computed, ref } from 'vue'
|
|
|
2
2
|
|
|
3
3
|
import { FieldInputCheckInclude } from './FieldInputCheckInclude'
|
|
4
4
|
|
|
5
|
-
import type { FieldElementInclude } from './FieldElementInclude'
|
|
6
5
|
import type { FieldAttributesInclude } from './FieldAttributesInclude'
|
|
7
6
|
import type { FieldChangeInclude } from './FieldChangeInclude'
|
|
8
7
|
import type { FieldValueInclude } from './FieldValueInclude'
|
|
@@ -16,14 +15,13 @@ import type { FieldAllProps, FieldValidationItem } from '../../types/fieldTypes'
|
|
|
16
15
|
*
|
|
17
16
|
* Класс для работы с валидностью
|
|
18
17
|
*/
|
|
19
|
-
export class
|
|
18
|
+
export class FieldValidationInclude {
|
|
20
19
|
/** Internal validation state/ Внутреннее состояние валидации */
|
|
21
20
|
protected readonly validation = ref<FieldValidationItem>()
|
|
22
21
|
|
|
23
22
|
/**
|
|
24
23
|
* Constructor
|
|
25
24
|
* @param props input data/ входные данные
|
|
26
|
-
* @param element object for working with input element/ объект для работы с элементом ввода
|
|
27
25
|
* @param attributes object for working with input attributes/ объект для работы с атрибутами ввода
|
|
28
26
|
* @param value object for value work/ объект для работы со значениями
|
|
29
27
|
* @param change object for change state/ объект для состояния изменения
|
|
@@ -32,7 +30,6 @@ export class InputValidation {
|
|
|
32
30
|
*/
|
|
33
31
|
constructor(
|
|
34
32
|
protected readonly props: FieldAllProps,
|
|
35
|
-
protected readonly element: FieldElementInclude,
|
|
36
33
|
protected readonly attributes: FieldAttributesInclude,
|
|
37
34
|
protected readonly value: FieldValueInclude,
|
|
38
35
|
protected readonly change?: FieldChangeInclude,
|
|
@@ -97,6 +97,15 @@ export class FieldValueInclude<Value = any> {
|
|
|
97
97
|
return this.string.value.length ?? 0
|
|
98
98
|
})
|
|
99
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Returns the current value.
|
|
102
|
+
*
|
|
103
|
+
* Возвращает текущее значение.
|
|
104
|
+
*/
|
|
105
|
+
get(): Value | undefined {
|
|
106
|
+
return this.item.value
|
|
107
|
+
}
|
|
108
|
+
|
|
100
109
|
/**
|
|
101
110
|
* Returns the current value as an array.
|
|
102
111
|
*
|
|
@@ -147,6 +156,7 @@ export class FieldValueInclude<Value = any> {
|
|
|
147
156
|
setByEvent(value: Record<string, any>): this
|
|
148
157
|
setByEvent(value: any): this
|
|
149
158
|
setByEvent(eventValue: Event | Record<string, any> | any): this {
|
|
159
|
+
console.log('setByEvent')
|
|
150
160
|
switch (typeof eventValue) {
|
|
151
161
|
case 'object':
|
|
152
162
|
if (eventValue) {
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { computed, ref, type Ref, type ToRefs } from 'vue'
|
|
2
|
+
import { type ConstrEmit, DesignComp } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
import { EventClickInclude } from '../../classes/EventClickInclude'
|
|
5
|
+
import { MotionTransformInclude } from '../MotionTransform'
|
|
6
|
+
import { ModelInclude } from '../../classes/ModelInclude'
|
|
7
|
+
|
|
8
|
+
import type { CellExpose } from '../Cell'
|
|
9
|
+
import type { AccordionComponents, AccordionEmits, AccordionSlots } from './types'
|
|
10
|
+
import type { AccordionProps } from './props'
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Accordion
|
|
14
|
+
*/
|
|
15
|
+
export class Accordion {
|
|
16
|
+
readonly motionTransform: MotionTransformInclude
|
|
17
|
+
|
|
18
|
+
readonly event: EventClickInclude
|
|
19
|
+
|
|
20
|
+
readonly open = ref<boolean>(false)
|
|
21
|
+
readonly model: ModelInclude<boolean>
|
|
22
|
+
|
|
23
|
+
readonly elementHead = ref<CellExpose>()
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Constructor
|
|
27
|
+
* @param props input data/ входные данные
|
|
28
|
+
* @param refs input data in the form of reactive elements/ входные данные в виде реактивных элементов
|
|
29
|
+
* @param element input element/ элемент ввода
|
|
30
|
+
* @param classDesign design name/ название дизайна
|
|
31
|
+
* @param className class name/ название класса
|
|
32
|
+
* @param components object for working with components/ объект для работы с компонентами
|
|
33
|
+
* @param slots object for working with slots/ объект для работы со слотами
|
|
34
|
+
* @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
|
|
35
|
+
*/
|
|
36
|
+
constructor(
|
|
37
|
+
protected readonly props: AccordionProps,
|
|
38
|
+
protected readonly refs: ToRefs<AccordionProps>,
|
|
39
|
+
protected readonly element: Ref<HTMLElement | undefined>,
|
|
40
|
+
protected readonly classDesign: string,
|
|
41
|
+
protected readonly className: string,
|
|
42
|
+
protected readonly components?: DesignComp<AccordionComponents, AccordionProps>,
|
|
43
|
+
protected readonly slots?: AccordionSlots,
|
|
44
|
+
protected readonly emits?: ConstrEmit<AccordionEmits>
|
|
45
|
+
) {
|
|
46
|
+
this.motionTransform = new MotionTransformInclude(
|
|
47
|
+
this.props,
|
|
48
|
+
this.className,
|
|
49
|
+
this.components,
|
|
50
|
+
this.emits,
|
|
51
|
+
computed(() => ({
|
|
52
|
+
section: true,
|
|
53
|
+
adaptive: 'planeAlways',
|
|
54
|
+
inDom: true,
|
|
55
|
+
ariaLabelledby: this.elementHead.value?.labelId,
|
|
56
|
+
ariaDescribedby: this.elementHead.value?.descriptionId
|
|
57
|
+
}))
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
this.event = new EventClickInclude(
|
|
61
|
+
undefined,
|
|
62
|
+
undefined,
|
|
63
|
+
emits
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
this.model = new ModelInclude('open', this.emits, this.open)
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { h, type VNode } from 'vue'
|
|
2
|
+
import {
|
|
3
|
+
type ConstrOptions,
|
|
4
|
+
type ConstrStyles,
|
|
5
|
+
DesignConstructorAbstract,
|
|
6
|
+
toBinds
|
|
7
|
+
} from '@dxtmisha/functional'
|
|
8
|
+
|
|
9
|
+
import { Accordion } from './Accordion'
|
|
10
|
+
|
|
11
|
+
import type { MotionTransformControlItem } from '../MotionTransform'
|
|
12
|
+
import {
|
|
13
|
+
type AccordionProps
|
|
14
|
+
} from './props'
|
|
15
|
+
import {
|
|
16
|
+
type AccordionClasses,
|
|
17
|
+
type AccordionComponents,
|
|
18
|
+
type AccordionEmits,
|
|
19
|
+
type AccordionExpose,
|
|
20
|
+
type AccordionSlots
|
|
21
|
+
} from './types'
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* AccordionDesign
|
|
25
|
+
*/
|
|
26
|
+
export class AccordionDesign<
|
|
27
|
+
COMP extends AccordionComponents,
|
|
28
|
+
EXPOSE extends AccordionExpose,
|
|
29
|
+
CLASSES extends AccordionClasses,
|
|
30
|
+
P extends AccordionProps
|
|
31
|
+
> extends DesignConstructorAbstract<
|
|
32
|
+
HTMLDivElement,
|
|
33
|
+
COMP,
|
|
34
|
+
AccordionEmits,
|
|
35
|
+
EXPOSE,
|
|
36
|
+
AccordionSlots,
|
|
37
|
+
CLASSES,
|
|
38
|
+
P
|
|
39
|
+
> {
|
|
40
|
+
protected readonly item: Accordion
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Constructor
|
|
44
|
+
* @param name class name/ название класса
|
|
45
|
+
* @param props properties/ свойства
|
|
46
|
+
* @param options list of additional parameters/ список дополнительных параметров
|
|
47
|
+
*/
|
|
48
|
+
constructor(
|
|
49
|
+
name: string,
|
|
50
|
+
props: Readonly<P>,
|
|
51
|
+
options?: ConstrOptions<COMP, AccordionEmits, P>
|
|
52
|
+
) {
|
|
53
|
+
super(
|
|
54
|
+
name,
|
|
55
|
+
props,
|
|
56
|
+
options
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
this.item = new Accordion(
|
|
60
|
+
this.props,
|
|
61
|
+
this.refs,
|
|
62
|
+
this.element,
|
|
63
|
+
this.getDesign(),
|
|
64
|
+
this.getName(),
|
|
65
|
+
this.components,
|
|
66
|
+
this.slots,
|
|
67
|
+
this.emits
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
this.init()
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Initialization of all the necessary properties for work
|
|
75
|
+
*
|
|
76
|
+
* Инициализация всех необходимых свойств для работы.
|
|
77
|
+
*/
|
|
78
|
+
protected initExpose(): EXPOSE {
|
|
79
|
+
return {
|
|
80
|
+
...this.item.motionTransform.expose
|
|
81
|
+
} as EXPOSE
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Improvement of the obtained list of classes.
|
|
86
|
+
*
|
|
87
|
+
* Доработка полученного списка классов.
|
|
88
|
+
*/
|
|
89
|
+
protected initClasses(): Partial<CLASSES> {
|
|
90
|
+
return {
|
|
91
|
+
main: {},
|
|
92
|
+
...{
|
|
93
|
+
// :classes [!] System label / Системная метка
|
|
94
|
+
head: this.getSubClass('head'),
|
|
95
|
+
body: this.getSubClass('body')
|
|
96
|
+
// :classes [!] System label / Системная метка
|
|
97
|
+
}
|
|
98
|
+
} as Partial<CLASSES>
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Refinement of the received list of styles.
|
|
103
|
+
*
|
|
104
|
+
* Доработка полученного списка стилей.
|
|
105
|
+
*/
|
|
106
|
+
protected initStyles(): ConstrStyles {
|
|
107
|
+
return {}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* A method for rendering.
|
|
112
|
+
*
|
|
113
|
+
* Метод для рендеринга.
|
|
114
|
+
*/
|
|
115
|
+
protected initRender(): VNode[] {
|
|
116
|
+
return this.item.motionTransform.render(
|
|
117
|
+
{
|
|
118
|
+
head: this.renderHead,
|
|
119
|
+
body: this.renderBody
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
...this.getAttrs(),
|
|
123
|
+
'class': this.classes?.value.main,
|
|
124
|
+
'data-divider': this.props.divider ? 'divider' : undefined,
|
|
125
|
+
...this.item.model.getBinds()
|
|
126
|
+
}
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Generates data for the header.
|
|
132
|
+
*
|
|
133
|
+
* Генерирует данные для заголовка.
|
|
134
|
+
* @param open open status/ статус открытия
|
|
135
|
+
*/
|
|
136
|
+
protected readonly renderHead = (
|
|
137
|
+
{ isOpen, binds }: MotionTransformControlItem
|
|
138
|
+
): VNode | undefined => {
|
|
139
|
+
const slots: Record<string, any> = {}
|
|
140
|
+
|
|
141
|
+
if (this.slots) {
|
|
142
|
+
if ('label' in this.slots) {
|
|
143
|
+
slots.label = (props: any) => this.initSlot('label', undefined, props)
|
|
144
|
+
}
|
|
145
|
+
if ('description' in this.slots) {
|
|
146
|
+
slots.description = (props: any) => this.initSlot('description', undefined, props)
|
|
147
|
+
}
|
|
148
|
+
if ('caption' in this.slots) {
|
|
149
|
+
slots.caption = (props: any) => this.initSlot('caption', undefined, props)
|
|
150
|
+
}
|
|
151
|
+
if ('trailing' in this.slots) {
|
|
152
|
+
slots.trailing = (props: any) => this.initSlot('trailing', undefined, props)
|
|
153
|
+
}
|
|
154
|
+
if ('body' in this.slots) {
|
|
155
|
+
slots.body = (props: any) => this.initSlot('body', undefined, props)
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return this.components.renderOne(
|
|
160
|
+
'cell',
|
|
161
|
+
toBinds(
|
|
162
|
+
{
|
|
163
|
+
ref: this.item.elementHead,
|
|
164
|
+
icon: this.props.icon,
|
|
165
|
+
iconTrailing: this.props.iconArrowDown,
|
|
166
|
+
iconTurn: isOpen.value,
|
|
167
|
+
label: this.props.label,
|
|
168
|
+
description: this.props.description,
|
|
169
|
+
class: this.classes?.value.head,
|
|
170
|
+
dynamic: true,
|
|
171
|
+
onClick: this.item.event.onClick,
|
|
172
|
+
...binds
|
|
173
|
+
},
|
|
174
|
+
this.props.cellAttrs
|
|
175
|
+
),
|
|
176
|
+
slots
|
|
177
|
+
)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Generates data for the body.
|
|
182
|
+
*
|
|
183
|
+
* Генерирует данные для тела.
|
|
184
|
+
*/
|
|
185
|
+
protected readonly renderBody = (props: any): VNode => {
|
|
186
|
+
return h(
|
|
187
|
+
'div',
|
|
188
|
+
{ class: this.classes?.value.body },
|
|
189
|
+
this.initSlot('default', undefined, props)
|
|
190
|
+
)
|
|
191
|
+
}
|
|
192
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ConstrBind } from '@dxtmisha/functional'
|
|
2
|
+
|
|
3
|
+
import type { LabelProps } from '../../types/labelTypes'
|
|
4
|
+
import type { DescriptionProps } from '../../types/descriptionTypes'
|
|
5
|
+
|
|
6
|
+
import type { IconLitePropsInclude, IconPropsBasic, IconValue } from '../Icon'
|
|
7
|
+
import type { CellPropsBasic } from '../Cell'
|
|
8
|
+
import type { MotionTransformPropsBasic, MotionTransformPropsInclude } from '../MotionTransform'
|
|
9
|
+
|
|
10
|
+
interface AccordionPropsToken {
|
|
11
|
+
// :type [!] System label / Системная метка
|
|
12
|
+
divider?: boolean
|
|
13
|
+
// :type [!] System label / Системная метка
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface AccordionPropsBasic<
|
|
17
|
+
Icon extends IconPropsBasic = IconPropsBasic,
|
|
18
|
+
Cell extends CellPropsBasic = CellPropsBasic,
|
|
19
|
+
MotionTransform extends MotionTransformPropsBasic = MotionTransformPropsBasic
|
|
20
|
+
> extends LabelProps,
|
|
21
|
+
DescriptionProps,
|
|
22
|
+
IconLitePropsInclude<Icon>,
|
|
23
|
+
MotionTransformPropsInclude<MotionTransform> {
|
|
24
|
+
// Style
|
|
25
|
+
'cellAttrs'?: ConstrBind<Cell>
|
|
26
|
+
'iconArrowDown'?: IconValue<Icon>
|
|
27
|
+
|
|
28
|
+
// Event
|
|
29
|
+
'modelOpen'?: boolean
|
|
30
|
+
'onUpdate:open'?: (value: boolean) => void
|
|
31
|
+
'onUpdate:modelOpen'?: (value: boolean) => void
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Type describing incoming properties.
|
|
36
|
+
*
|
|
37
|
+
* Тип, описывающий входящие свойства.
|
|
38
|
+
*/
|
|
39
|
+
export interface AccordionProps extends AccordionPropsBasic, AccordionPropsToken {
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Default value for property.
|
|
44
|
+
*
|
|
45
|
+
* Значение по умолчанию для свойства.
|
|
46
|
+
*/
|
|
47
|
+
export const defaultsAccordion = {
|
|
48
|
+
clickOpen: true,
|
|
49
|
+
autoClose: true,
|
|
50
|
+
...{
|
|
51
|
+
// :default [!] System label / Системная метка
|
|
52
|
+
divider: true
|
|
53
|
+
// :default [!] System label / Системная метка
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
@use "@dxtmisha/styles/properties" as ui;
|
|
2
|
+
|
|
3
|
+
@mixin mixinAccordion {
|
|
4
|
+
@at-root {
|
|
5
|
+
&--divider + &--divider,
|
|
6
|
+
[data-divider="divider"] + &[data-divider="divider"] {
|
|
7
|
+
border-top-style: solid;
|
|
8
|
+
border-top-width: ui.v('??borderWidth');
|
|
9
|
+
@include ui.borderColor(ui.v('??borderColor'), ui.v('??borderOpacity'));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { ConstrClass } from '@dxtmisha/functional'
|
|
2
|
+
|
|
3
|
+
import type { EventClickEmits } from '../../types/eventClickTypes'
|
|
4
|
+
|
|
5
|
+
import type { CellComponentInclude, CellSlotsInclude } from '../Cell'
|
|
6
|
+
import type {
|
|
7
|
+
MotionTransformComponentInclude,
|
|
8
|
+
MotionTransformControlItem,
|
|
9
|
+
MotionTransformEmitsInclude,
|
|
10
|
+
MotionTransformExposeInclude
|
|
11
|
+
} from '../MotionTransform'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Interface for describing which components need to be connected for work.
|
|
15
|
+
*
|
|
16
|
+
* Интерфейс для описания, какие компоненты надо подключить для работы.
|
|
17
|
+
*/
|
|
18
|
+
export type AccordionComponents
|
|
19
|
+
= CellComponentInclude
|
|
20
|
+
& MotionTransformComponentInclude
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Type describing available events.
|
|
24
|
+
*
|
|
25
|
+
* Тип, описывающий доступные события.
|
|
26
|
+
*/
|
|
27
|
+
export type AccordionEmits
|
|
28
|
+
= EventClickEmits
|
|
29
|
+
& MotionTransformEmitsInclude
|
|
30
|
+
& {
|
|
31
|
+
'update:open': [value: boolean]
|
|
32
|
+
'update:modelOpen': [value: boolean]
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Type describing available properties.
|
|
37
|
+
*
|
|
38
|
+
* Тип, описывающий доступные свойства.
|
|
39
|
+
*/
|
|
40
|
+
export interface AccordionExpose extends MotionTransformExposeInclude {
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Type describing available slots.
|
|
45
|
+
*
|
|
46
|
+
* Тип, описывающий доступные слоты.
|
|
47
|
+
*/
|
|
48
|
+
export interface AccordionSlots extends CellSlotsInclude {
|
|
49
|
+
default?(props: MotionTransformControlItem): any
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Type describing subclasses.
|
|
54
|
+
*
|
|
55
|
+
* Тип, описывающий подклассы.
|
|
56
|
+
*/
|
|
57
|
+
export type AccordionClasses = {
|
|
58
|
+
main: ConstrClass
|
|
59
|
+
// :classes [!] System label / Системная метка
|
|
60
|
+
head: string
|
|
61
|
+
body: string
|
|
62
|
+
// :classes [!] System label / Системная метка
|
|
63
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { computed, type Ref, type ToRefs } from 'vue'
|
|
2
|
+
import { type ConstrEmit, DesignComp } from '@dxtmisha/functional'
|
|
3
|
+
|
|
4
|
+
import { ModalAbstract } from '../Modal/ModalAbstract'
|
|
5
|
+
import { TouchEventInclude } from '../../classes/TouchEventInclude'
|
|
6
|
+
|
|
7
|
+
import type { TouchEventTypeY } from '../../types/touchEventTypes'
|
|
8
|
+
import type { ActionSheetComponents, ActionSheetEmits, ActionSheetSlots } from './types'
|
|
9
|
+
import type { ActionSheetProps } from './props'
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* ActionSheet
|
|
13
|
+
*/
|
|
14
|
+
export class ActionSheet extends ModalAbstract {
|
|
15
|
+
readonly touchEvent: TouchEventInclude
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Constructor
|
|
19
|
+
* @param props input data/ входные данные
|
|
20
|
+
* @param refs input data in the form of reactive elements/ входные данные в виде реактивных элементов
|
|
21
|
+
* @param element input element/ элемент ввода
|
|
22
|
+
* @param classDesign design name/ название дизайна
|
|
23
|
+
* @param className class name/ название класса
|
|
24
|
+
* @param components object for working with components/ объект для работы с компонентами
|
|
25
|
+
* @param slots object for working with slots/ объект для работы со слотами
|
|
26
|
+
* @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
|
|
27
|
+
*/
|
|
28
|
+
constructor(
|
|
29
|
+
protected readonly props: ActionSheetProps,
|
|
30
|
+
protected readonly refs: ToRefs<ActionSheetProps>,
|
|
31
|
+
protected readonly element: Ref<HTMLElement | undefined>,
|
|
32
|
+
protected readonly classDesign: string,
|
|
33
|
+
protected readonly className: string,
|
|
34
|
+
protected readonly components?: DesignComp<ActionSheetComponents, ActionSheetProps>,
|
|
35
|
+
protected readonly slots?: ActionSheetSlots,
|
|
36
|
+
protected readonly emits?: ConstrEmit<ActionSheetEmits>
|
|
37
|
+
) {
|
|
38
|
+
super(
|
|
39
|
+
props,
|
|
40
|
+
refs,
|
|
41
|
+
element,
|
|
42
|
+
classDesign,
|
|
43
|
+
className,
|
|
44
|
+
components,
|
|
45
|
+
slots,
|
|
46
|
+
emits,
|
|
47
|
+
computed(() => ({
|
|
48
|
+
open: props.open,
|
|
49
|
+
|
|
50
|
+
adaptive: 'actionSheet',
|
|
51
|
+
closeButton: props.barsBackHide,
|
|
52
|
+
closeMobileHide: props.touchClose
|
|
53
|
+
})),
|
|
54
|
+
undefined,
|
|
55
|
+
{
|
|
56
|
+
align: 'auto'
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
this.touchEvent = new TouchEventInclude(
|
|
61
|
+
undefined,
|
|
62
|
+
(
|
|
63
|
+
_,
|
|
64
|
+
__,
|
|
65
|
+
___,
|
|
66
|
+
clientY: number
|
|
67
|
+
) => clientY >= 0,
|
|
68
|
+
(_, type: TouchEventTypeY) => {
|
|
69
|
+
if (type === 'bottom') {
|
|
70
|
+
this.window.expose.setOpen(false).then()
|
|
71
|
+
return false
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return true
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
}
|