@x15ventures/x15-ui-library 3.17.0 → 3.19.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/dist/cjs/autoGenerated/libraryThemes.js +12 -12
- package/dist/cjs/autoGenerated/libraryThemes.js.map +1 -1
- package/dist/cjs/autoGenerated/libraryThemes.json +12 -12
- package/dist/cjs/components/design/accordion/Accordion.js +7 -23
- package/dist/cjs/components/design/accordion/Accordion.js.map +1 -1
- package/dist/cjs/components/design/banners/pageBanner/PageBanner.js +2 -4
- package/dist/cjs/components/design/banners/pageBanner/PageBanner.js.map +1 -1
- package/dist/cjs/components/design/card/cardContent/CardContentLine.js +2 -2
- package/dist/cjs/components/design/card/cardContent/CardContentLine.js.map +1 -1
- package/dist/cjs/components/design/card/cardHeader/CardHeaderItem.js +2 -2
- package/dist/cjs/components/design/card/cardHeader/CardHeaderItem.js.map +1 -1
- package/dist/cjs/components/design/headerBar/HeaderBar.js +3 -3
- package/dist/cjs/components/design/headerBar/HeaderBar.js.map +1 -1
- package/dist/cjs/components/design/icons/notificationIcon/NotificationIcon.js +4 -5
- package/dist/cjs/components/design/icons/notificationIcon/NotificationIcon.js.map +1 -1
- package/dist/cjs/components/design/paginators/Paginator.js +4 -12
- package/dist/cjs/components/design/paginators/Paginator.js.map +1 -1
- package/dist/cjs/components/design/progressIndicators/circularProgressIndicator/CircularProgressIndicator.js +2 -1
- package/dist/cjs/components/design/progressIndicators/circularProgressIndicator/CircularProgressIndicator.js.map +1 -1
- package/dist/cjs/components/design/revealMore/RevealMoreBelow.js +1 -3
- package/dist/cjs/components/design/revealMore/RevealMoreBelow.js.map +1 -1
- package/dist/cjs/components/design/revealMore/RevealMoreInline.js +3 -5
- package/dist/cjs/components/design/revealMore/RevealMoreInline.js.map +1 -1
- package/dist/cjs/components/design/revealMore/types/revealMoreTypes.js.map +1 -1
- package/dist/cjs/components/design/sidePanel/SidePanel.js +3 -5
- package/dist/cjs/components/design/sidePanel/SidePanel.js.map +1 -1
- package/dist/cjs/components/design/statusIndicators/statusIconLabel/StatusIconLabel.js +6 -11
- package/dist/cjs/components/design/statusIndicators/statusIconLabel/StatusIconLabel.js.map +1 -1
- package/dist/cjs/components/design/tabs/Tabs.js +2 -2
- package/dist/cjs/components/design/tabs/Tabs.js.map +1 -1
- package/dist/cjs/components/design/themeLoader/ThemeLoader.js +2 -2
- package/dist/cjs/components/design/themeLoader/ThemeLoader.js.map +1 -1
- package/dist/cjs/components/design/tooltip/Tooltip.js +4 -11
- package/dist/cjs/components/design/tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/components/form/buttons/SimpleButton.js +3 -3
- package/dist/cjs/components/form/buttons/SimpleButton.js.map +1 -1
- package/dist/cjs/components/form/buttons/button.interface.js.map +1 -1
- package/dist/cjs/components/form/formFields/formFieldWrapper/formFieldProps.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.js +5 -5
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch.js +176 -0
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch.js.map +1 -0
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/_checkboxSwitchVariables.css +0 -0
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/checkboxSwitch.css +306 -0
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/checkboxSwitchProps.js +6 -0
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/checkboxSwitchProps.js.map +1 -0
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js +3 -5
- package/dist/cjs/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/inputs/file/fileAttachmentList/FileAttachmentsList.js +12 -22
- package/dist/cjs/components/form/formFields/subComponents/inputs/file/fileAttachmentList/FileAttachmentsList.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/inputs/file/fileInputProps.js.map +1 -1
- package/dist/cjs/components/index.js +7 -0
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/navigation/menu/Menu.interfaces.js.map +1 -1
- package/dist/cjs/components/navigation/menu/menuItemContent/MenuItemIcon.js +19 -31
- package/dist/cjs/components/navigation/menu/menuItemContent/MenuItemIcon.js.map +1 -1
- package/dist/cjs/constants/fileUploadTypes.js +2 -2
- package/dist/cjs/constants/fileUploadTypes.js.map +1 -1
- package/dist/cjs/helpers/iconHelpers.js +83 -0
- package/dist/cjs/helpers/iconHelpers.js.map +1 -0
- package/dist/cjs/helpers/index.js +43 -0
- package/dist/cjs/helpers/index.js.map +1 -1
- package/dist/cjs/helpers/objectHelpers.js +9 -2
- package/dist/cjs/helpers/objectHelpers.js.map +1 -1
- package/dist/cjs/index.js +57 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/headerText.interface.js.map +1 -1
- package/dist/cjs/package.json +16 -28
- package/dist/cjs/styles/index.css +61 -0
- package/dist/cjs/styles/storybook/storybook.css +7 -0
- package/dist/cjs/styles/variables/cssVars/_darkModeVariables.css +21 -0
- package/dist/cjs/styles/variables/cssVars/_formVariables.css +40 -0
- package/dist/cjs/widgets/processLauncher/ProcessLauncher.js +3 -9
- package/dist/cjs/widgets/processLauncher/ProcessLauncher.js.map +1 -1
- package/dist/cjs/widgets/processLauncher/processLauncher.interfaces.js.map +1 -1
- package/dist/components/design/accordion/Accordion.d.ts +3 -2
- package/dist/components/design/accordion/Accordion.d.ts.map +1 -1
- package/dist/components/design/banners/pageBanner/PageBanner.d.ts +2 -1
- package/dist/components/design/banners/pageBanner/PageBanner.d.ts.map +1 -1
- package/dist/components/design/card/cardContent/CardContentLine.d.ts +2 -2
- package/dist/components/design/card/cardContent/CardContentLine.d.ts.map +1 -1
- package/dist/components/design/card/cardHeader/CardHeaderItem.d.ts +2 -2
- package/dist/components/design/card/cardHeader/CardHeaderItem.d.ts.map +1 -1
- package/dist/components/design/headerBar/HeaderBar.d.ts.map +1 -1
- package/dist/components/design/icons/notificationIcon/NotificationIcon.d.ts +2 -2
- package/dist/components/design/icons/notificationIcon/NotificationIcon.d.ts.map +1 -1
- package/dist/components/design/paginators/Paginator.d.ts +3 -2
- package/dist/components/design/paginators/Paginator.d.ts.map +1 -1
- package/dist/components/design/progressIndicators/circularProgressIndicator/CircularProgressIndicator.d.ts +2 -1
- package/dist/components/design/progressIndicators/circularProgressIndicator/CircularProgressIndicator.d.ts.map +1 -1
- package/dist/components/design/revealMore/RevealMoreBelow.d.ts.map +1 -1
- package/dist/components/design/revealMore/RevealMoreInline.d.ts.map +1 -1
- package/dist/components/design/revealMore/types/revealMoreTypes.d.ts +3 -2
- package/dist/components/design/revealMore/types/revealMoreTypes.d.ts.map +1 -1
- package/dist/components/design/sidePanel/SidePanel.d.ts +3 -2
- package/dist/components/design/sidePanel/SidePanel.d.ts.map +1 -1
- package/dist/components/design/statusIndicators/statusIconLabel/StatusIconLabel.d.ts +2 -2
- package/dist/components/design/statusIndicators/statusIconLabel/StatusIconLabel.d.ts.map +1 -1
- package/dist/components/design/tabs/Tabs.d.ts +3 -3
- package/dist/components/design/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/design/tooltip/Tooltip.d.ts +5 -4
- package/dist/components/design/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/form/buttons/SimpleButton.test.d.ts +5 -0
- package/dist/components/form/buttons/SimpleButton.test.d.ts.map +1 -0
- package/dist/components/form/buttons/button.interface.d.ts +3 -3
- package/dist/components/form/buttons/button.interface.d.ts.map +1 -1
- package/dist/components/form/formFields/formFieldWrapper/formFieldProps.d.ts +2 -1
- package/dist/components/form/formFields/formFieldWrapper/formFieldProps.d.ts.map +1 -1
- package/dist/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch.d.ts +29 -0
- package/dist/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch.d.ts.map +1 -0
- package/dist/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch.test.d.ts +5 -0
- package/dist/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch.test.d.ts.map +1 -0
- package/dist/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/checkboxSwitchProps.d.ts +52 -0
- package/dist/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/checkboxSwitchProps.d.ts.map +1 -0
- package/dist/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.d.ts +3 -3
- package/dist/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.d.ts.map +1 -1
- package/dist/components/form/formFields/subComponents/inputs/file/fileAttachmentList/FileAttachmentsList.d.ts.map +1 -1
- package/dist/components/form/formFields/subComponents/inputs/file/fileInputProps.d.ts +4 -3
- package/dist/components/form/formFields/subComponents/inputs/file/fileInputProps.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/navigation/menu/Menu.interfaces.d.ts +4 -3
- package/dist/components/navigation/menu/Menu.interfaces.d.ts.map +1 -1
- package/dist/components/navigation/menu/menuItemContent/MenuItemIcon.d.ts +2 -1
- package/dist/components/navigation/menu/menuItemContent/MenuItemIcon.d.ts.map +1 -1
- package/dist/components/navigation/menu/menuItemContent/MenuItemIcon.test.d.ts +5 -0
- package/dist/components/navigation/menu/menuItemContent/MenuItemIcon.test.d.ts.map +1 -0
- package/dist/constants/fileUploadTypes.d.ts.map +1 -1
- package/dist/esm/autoGenerated/libraryThemes.js +12 -12
- package/dist/esm/autoGenerated/libraryThemes.js.map +1 -1
- package/dist/esm/autoGenerated/libraryThemes.json +12 -12
- package/dist/esm/components/design/accordion/Accordion.js +7 -23
- package/dist/esm/components/design/accordion/Accordion.js.map +1 -1
- package/dist/esm/components/design/banners/pageBanner/PageBanner.js +2 -4
- package/dist/esm/components/design/banners/pageBanner/PageBanner.js.map +1 -1
- package/dist/esm/components/design/card/cardContent/CardContentLine.js +2 -2
- package/dist/esm/components/design/card/cardContent/CardContentLine.js.map +1 -1
- package/dist/esm/components/design/card/cardHeader/CardHeaderItem.js +2 -2
- package/dist/esm/components/design/card/cardHeader/CardHeaderItem.js.map +1 -1
- package/dist/esm/components/design/headerBar/HeaderBar.js +3 -3
- package/dist/esm/components/design/headerBar/HeaderBar.js.map +1 -1
- package/dist/esm/components/design/icons/notificationIcon/NotificationIcon.js +4 -5
- package/dist/esm/components/design/icons/notificationIcon/NotificationIcon.js.map +1 -1
- package/dist/esm/components/design/paginators/Paginator.js +4 -12
- package/dist/esm/components/design/paginators/Paginator.js.map +1 -1
- package/dist/esm/components/design/progressIndicators/circularProgressIndicator/CircularProgressIndicator.js +2 -1
- package/dist/esm/components/design/progressIndicators/circularProgressIndicator/CircularProgressIndicator.js.map +1 -1
- package/dist/esm/components/design/revealMore/RevealMoreBelow.js +1 -3
- package/dist/esm/components/design/revealMore/RevealMoreBelow.js.map +1 -1
- package/dist/esm/components/design/revealMore/RevealMoreInline.js +2 -4
- package/dist/esm/components/design/revealMore/RevealMoreInline.js.map +1 -1
- package/dist/esm/components/design/revealMore/types/revealMoreTypes.js.map +1 -1
- package/dist/esm/components/design/sidePanel/SidePanel.js +3 -5
- package/dist/esm/components/design/sidePanel/SidePanel.js.map +1 -1
- package/dist/esm/components/design/statusIndicators/statusIconLabel/StatusIconLabel.js +6 -11
- package/dist/esm/components/design/statusIndicators/statusIconLabel/StatusIconLabel.js.map +1 -1
- package/dist/esm/components/design/tabs/Tabs.js +2 -2
- package/dist/esm/components/design/tabs/Tabs.js.map +1 -1
- package/dist/esm/components/design/themeLoader/ThemeLoader.js +1 -1
- package/dist/esm/components/design/themeLoader/ThemeLoader.js.map +1 -1
- package/dist/esm/components/design/tooltip/Tooltip.js +4 -11
- package/dist/esm/components/design/tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/form/buttons/SimpleButton.js +3 -3
- package/dist/esm/components/form/buttons/SimpleButton.js.map +1 -1
- package/dist/esm/components/form/buttons/button.interface.js.map +1 -1
- package/dist/esm/components/form/formFields/formFieldWrapper/formFieldProps.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.js +5 -5
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch.js +167 -0
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch.js.map +1 -0
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/_checkboxSwitchVariables.css +0 -0
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/checkboxSwitch.css +306 -0
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/checkboxSwitchProps.js +2 -0
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/checkboxSwitchProps.js.map +1 -0
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js +3 -5
- package/dist/esm/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/inputs/file/fileAttachmentList/FileAttachmentsList.js +12 -22
- package/dist/esm/components/form/formFields/subComponents/inputs/file/fileAttachmentList/FileAttachmentsList.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/inputs/file/fileInputProps.js.map +1 -1
- package/dist/esm/components/index.js +1 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/navigation/menu/Menu.interfaces.js.map +1 -1
- package/dist/esm/components/navigation/menu/menuItemContent/MenuItemIcon.js +17 -30
- package/dist/esm/components/navigation/menu/menuItemContent/MenuItemIcon.js.map +1 -1
- package/dist/esm/constants/fileUploadTypes.js +2 -2
- package/dist/esm/constants/fileUploadTypes.js.map +1 -1
- package/dist/esm/helpers/iconHelpers.js +73 -0
- package/dist/esm/helpers/iconHelpers.js.map +1 -0
- package/dist/esm/helpers/index.js +2 -1
- package/dist/esm/helpers/index.js.map +1 -1
- package/dist/esm/helpers/objectHelpers.js +7 -3
- package/dist/esm/helpers/objectHelpers.js.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/headerText.interface.js.map +1 -1
- package/dist/esm/package.json +16 -28
- package/dist/esm/styles/index.css +61 -0
- package/dist/esm/styles/storybook/storybook.css +7 -0
- package/dist/esm/styles/variables/cssVars/_darkModeVariables.css +21 -0
- package/dist/esm/styles/variables/cssVars/_formVariables.css +40 -0
- package/dist/esm/widgets/processLauncher/ProcessLauncher.js +4 -10
- package/dist/esm/widgets/processLauncher/ProcessLauncher.js.map +1 -1
- package/dist/esm/widgets/processLauncher/processLauncher.interfaces.js.map +1 -1
- package/dist/helpers/iconHelpers.d.ts +30 -0
- package/dist/helpers/iconHelpers.d.ts.map +1 -0
- package/dist/helpers/iconHelpers.test.d.ts +5 -0
- package/dist/helpers/iconHelpers.test.d.ts.map +1 -0
- package/dist/helpers/index.d.ts +4 -1
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/objectHelpers.d.ts +10 -3
- package/dist/helpers/objectHelpers.d.ts.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/interfaces/headerText.interface.d.ts +3 -3
- package/dist/interfaces/headerText.interface.d.ts.map +1 -1
- package/dist/package.json +16 -28
- package/dist/widgets/processLauncher/processLauncher.interfaces.d.ts +3 -3
- package/dist/widgets/processLauncher/processLauncher.interfaces.d.ts.map +1 -1
- package/package.json +16 -28
- package/readme.md +0 -36
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/* Popovers */
|
|
2
|
+
.checkboxSwitchField {
|
|
3
|
+
--checkboxSwitchHeight: 30px;
|
|
4
|
+
--checkboxSwitchFontSize: 15px;
|
|
5
|
+
--checkboxSwitchIconSize: 15px;
|
|
6
|
+
--checkboxSwitchPaddingInline: 10px;
|
|
7
|
+
--checkboxSwitchThumbGap: var(--checkboxSwitchThumbGapM, 3px);
|
|
8
|
+
--checkboxSwitchRadius: calc(var(--checkboxSwitchHeight) / 2);
|
|
9
|
+
}
|
|
10
|
+
.checkboxSwitchField.checkboxSwitch_xs {
|
|
11
|
+
--checkboxSwitchHeight: 20px;
|
|
12
|
+
--checkboxSwitchFontSize: 11px;
|
|
13
|
+
--checkboxSwitchIconSize: 11px;
|
|
14
|
+
--checkboxSwitchPaddingInline: 5px;
|
|
15
|
+
--checkboxSwitchThumbGap: var(--checkboxSwitchThumbGapXs, 1px);
|
|
16
|
+
}
|
|
17
|
+
.checkboxSwitchField.checkboxSwitch_s {
|
|
18
|
+
--checkboxSwitchHeight: 25px;
|
|
19
|
+
--checkboxSwitchFontSize: 13px;
|
|
20
|
+
--checkboxSwitchIconSize: 13px;
|
|
21
|
+
--checkboxSwitchPaddingInline: 5px;
|
|
22
|
+
--checkboxSwitchThumbGap: var(--checkboxSwitchThumbGapS, 2px);
|
|
23
|
+
}
|
|
24
|
+
.checkboxSwitchField.checkboxSwitch_m {
|
|
25
|
+
--checkboxSwitchHeight: 30px;
|
|
26
|
+
--checkboxSwitchFontSize: 15px;
|
|
27
|
+
--checkboxSwitchIconSize: 15px;
|
|
28
|
+
--checkboxSwitchPaddingInline: 10px;
|
|
29
|
+
--checkboxSwitchThumbGap: var(--checkboxSwitchThumbGapM, 3px);
|
|
30
|
+
}
|
|
31
|
+
.checkboxSwitchField.checkboxSwitch_l {
|
|
32
|
+
--checkboxSwitchHeight: 40px;
|
|
33
|
+
--checkboxSwitchFontSize: 17px;
|
|
34
|
+
--checkboxSwitchIconSize: 17px;
|
|
35
|
+
--checkboxSwitchPaddingInline: 10px;
|
|
36
|
+
--checkboxSwitchThumbGap: var(--checkboxSwitchThumbGapL, 4px);
|
|
37
|
+
}
|
|
38
|
+
.checkboxSwitchField.checkboxSwitch_xl {
|
|
39
|
+
--checkboxSwitchHeight: 50px;
|
|
40
|
+
--checkboxSwitchFontSize: 19px;
|
|
41
|
+
--checkboxSwitchIconSize: 19px;
|
|
42
|
+
--checkboxSwitchPaddingInline: 15px;
|
|
43
|
+
--checkboxSwitchThumbGap: var(--checkboxSwitchThumbGapXl, 5px);
|
|
44
|
+
}
|
|
45
|
+
.checkboxSwitchField.checkboxSwitch_rectangular {
|
|
46
|
+
--checkboxSwitchRadius: var(--checkboxSwitchRectangularRadius, 5px);
|
|
47
|
+
}
|
|
48
|
+
.checkboxSwitchField .checkboxSwitchLabel {
|
|
49
|
+
display: flex;
|
|
50
|
+
flex-direction: row;
|
|
51
|
+
column-gap: 10px;
|
|
52
|
+
align-items: center;
|
|
53
|
+
justify-content: flex-start;
|
|
54
|
+
cursor: pointer;
|
|
55
|
+
}
|
|
56
|
+
.checkboxSwitchField .checkboxSwitchControl {
|
|
57
|
+
position: relative;
|
|
58
|
+
display: inline-flex;
|
|
59
|
+
flex: none;
|
|
60
|
+
}
|
|
61
|
+
.checkboxSwitchField .checkboxSwitchControl input[type=checkbox] {
|
|
62
|
+
position: absolute;
|
|
63
|
+
inset: 0;
|
|
64
|
+
z-index: 2;
|
|
65
|
+
width: 100%;
|
|
66
|
+
height: 100%;
|
|
67
|
+
margin: 0;
|
|
68
|
+
opacity: 0.01;
|
|
69
|
+
cursor: pointer;
|
|
70
|
+
}
|
|
71
|
+
.checkboxSwitchField .checkboxSwitchControl input[type=checkbox]:disabled {
|
|
72
|
+
cursor: not-allowed;
|
|
73
|
+
}
|
|
74
|
+
.checkboxSwitchField .checkboxSwitchControl input[type=checkbox]:disabled ~ .checkboxSwitchTrack {
|
|
75
|
+
opacity: var(--checkboxSwitchDisabledOpacity, 0.5);
|
|
76
|
+
}
|
|
77
|
+
.checkboxSwitchField .checkboxSwitchControl input[type=checkbox]:focus-visible ~ .checkboxSwitchTrack {
|
|
78
|
+
outline: var(--inputFocusOutline, 1px dotted);
|
|
79
|
+
outline-offset: 2px;
|
|
80
|
+
}
|
|
81
|
+
.checkboxSwitchField .checkboxSwitchControl input[type=checkbox].invalidField ~ .checkboxSwitchTrack {
|
|
82
|
+
border-color: var(--inputErrorBorderColor, #c00);
|
|
83
|
+
}
|
|
84
|
+
.checkboxSwitchField .checkboxSwitchTrack {
|
|
85
|
+
position: relative;
|
|
86
|
+
box-sizing: border-box;
|
|
87
|
+
display: inline-grid;
|
|
88
|
+
grid-template-columns: 1fr 1fr;
|
|
89
|
+
height: var(--checkboxSwitchHeight);
|
|
90
|
+
border: var(--checkboxSwitchBorder, 1px solid #e5ebef);
|
|
91
|
+
border-radius: var(--checkboxSwitchRadius);
|
|
92
|
+
background: var(--checkboxSwitchTrackBg, #e5ebef);
|
|
93
|
+
color: var(--checkboxSwitchTrackFgColor, #24282b);
|
|
94
|
+
font-size: var(--checkboxSwitchFontSize);
|
|
95
|
+
line-height: 1;
|
|
96
|
+
overflow: hidden;
|
|
97
|
+
transition: background-color var(--checkboxSwitchTransition, 0.2s ease);
|
|
98
|
+
}
|
|
99
|
+
.checkboxSwitchField .checkboxSwitchState {
|
|
100
|
+
display: flex;
|
|
101
|
+
flex-direction: row;
|
|
102
|
+
column-gap: var(--checkboxSwitchStateGap, 5px);
|
|
103
|
+
align-items: center;
|
|
104
|
+
justify-content: center;
|
|
105
|
+
grid-row: 1;
|
|
106
|
+
min-width: var(--checkboxSwitchHeight);
|
|
107
|
+
padding: 0 var(--checkboxSwitchPaddingInline);
|
|
108
|
+
white-space: nowrap;
|
|
109
|
+
transition: opacity var(--checkboxSwitchTransition, 0.2s ease), background-color var(--checkboxSwitchTransition, 0.2s ease), transform var(--checkboxSwitchTransition, 0.2s ease);
|
|
110
|
+
}
|
|
111
|
+
.checkboxSwitchField .checkboxSwitchState .icon {
|
|
112
|
+
font-size: var(--checkboxSwitchIconSize);
|
|
113
|
+
}
|
|
114
|
+
.checkboxSwitchField .checkboxSwitchState .iconSvg {
|
|
115
|
+
width: var(--checkboxSwitchIconSize);
|
|
116
|
+
height: var(--checkboxSwitchIconSize);
|
|
117
|
+
}
|
|
118
|
+
.checkboxSwitchField .checkboxSwitchChecked {
|
|
119
|
+
grid-column: 1;
|
|
120
|
+
}
|
|
121
|
+
.checkboxSwitchField .checkboxSwitchUnchecked {
|
|
122
|
+
grid-column: 2;
|
|
123
|
+
}
|
|
124
|
+
.checkboxSwitchField.checkboxSwitch_slide .checkboxSwitchThumb {
|
|
125
|
+
position: absolute;
|
|
126
|
+
top: var(--checkboxSwitchThumbGap);
|
|
127
|
+
left: var(--checkboxSwitchThumbGap);
|
|
128
|
+
z-index: 1;
|
|
129
|
+
box-sizing: border-box;
|
|
130
|
+
width: calc(50% - var(--checkboxSwitchThumbGap));
|
|
131
|
+
height: calc(100% - var(--checkboxSwitchThumbGap) * 2);
|
|
132
|
+
border-radius: max(0px, var(--checkboxSwitchRadius) - var(--checkboxSwitchThumbGap));
|
|
133
|
+
background: var(--checkboxSwitchThumbBg, #fff);
|
|
134
|
+
box-shadow: var(--checkboxSwitchThumbShadow, 0 1px 3px rgba(0, 0, 0, 0.35));
|
|
135
|
+
transition: left var(--checkboxSwitchTransition, 0.2s ease), transform var(--checkboxSwitchTransition, 0.2s ease);
|
|
136
|
+
}
|
|
137
|
+
.checkboxSwitchField.checkboxSwitch_slide .checkboxSwitchChecked {
|
|
138
|
+
opacity: 0;
|
|
139
|
+
color: var(--checkboxSwitchTrackCheckedFgColor, #fff);
|
|
140
|
+
}
|
|
141
|
+
.checkboxSwitchField.checkboxSwitch_slide input[type=checkbox]:checked ~ .checkboxSwitchTrack {
|
|
142
|
+
background: var(--checkboxSwitchTrackCheckedBg, #516472);
|
|
143
|
+
}
|
|
144
|
+
.checkboxSwitchField.checkboxSwitch_slide input[type=checkbox]:checked ~ .checkboxSwitchTrack .checkboxSwitchThumb {
|
|
145
|
+
left: calc(100% - var(--checkboxSwitchThumbGap));
|
|
146
|
+
transform: translateX(-100%);
|
|
147
|
+
}
|
|
148
|
+
.checkboxSwitchField.checkboxSwitch_slide input[type=checkbox]:checked ~ .checkboxSwitchTrack .checkboxSwitchChecked {
|
|
149
|
+
opacity: 1;
|
|
150
|
+
}
|
|
151
|
+
.checkboxSwitchField.checkboxSwitch_slide input[type=checkbox]:checked ~ .checkboxSwitchTrack .checkboxSwitchUnchecked {
|
|
152
|
+
opacity: 0;
|
|
153
|
+
}
|
|
154
|
+
.checkboxSwitchField.checkboxSwitch_slide.checkboxSwitch_round .checkboxSwitchTrack {
|
|
155
|
+
grid-template-columns: 1fr;
|
|
156
|
+
}
|
|
157
|
+
.checkboxSwitchField.checkboxSwitch_slide.checkboxSwitch_round .checkboxSwitchState {
|
|
158
|
+
grid-column: 1;
|
|
159
|
+
box-sizing: border-box;
|
|
160
|
+
min-width: calc(var(--checkboxSwitchHeight) * 2);
|
|
161
|
+
}
|
|
162
|
+
.checkboxSwitchField.checkboxSwitch_slide.checkboxSwitch_round .checkboxSwitchUnchecked {
|
|
163
|
+
padding-left: calc(var(--checkboxSwitchHeight) + 5px);
|
|
164
|
+
}
|
|
165
|
+
.checkboxSwitchField.checkboxSwitch_slide.checkboxSwitch_round .checkboxSwitchChecked {
|
|
166
|
+
padding-right: calc(var(--checkboxSwitchHeight) + 5px);
|
|
167
|
+
}
|
|
168
|
+
.checkboxSwitchField.checkboxSwitch_slide.checkboxSwitch_round .checkboxSwitchThumb {
|
|
169
|
+
width: auto;
|
|
170
|
+
aspect-ratio: 1;
|
|
171
|
+
border-radius: 50%;
|
|
172
|
+
}
|
|
173
|
+
.checkboxSwitchField.checkboxSwitch_rocker .checkboxSwitchState:not(.checkboxSwitchButtonState) {
|
|
174
|
+
background: var(--checkboxSwitchRockerRaisedBg, linear-gradient(to bottom, #fff 0%, #f6f8fa 60%, #e5ebef 100%));
|
|
175
|
+
color: var(--checkboxSwitchRockerRaisedFgColor, #384147);
|
|
176
|
+
}
|
|
177
|
+
.checkboxSwitchField.checkboxSwitch_rocker .checkboxSwitchChecked {
|
|
178
|
+
border-right: var(--checkboxSwitchBorder, 1px solid #e5ebef);
|
|
179
|
+
}
|
|
180
|
+
.checkboxSwitchField.checkboxSwitch_rocker input[type=checkbox]:not(:checked) ~ .checkboxSwitchTrack .checkboxSwitchUnchecked:not(.checkboxSwitchButtonState) {
|
|
181
|
+
background: var(--checkboxSwitchRockerPressedBg, linear-gradient(to bottom, #c2d0d9 0%, #d3dee4 35%, #e5ebef 100%));
|
|
182
|
+
color: var(--checkboxSwitchRockerPressedFgColor, #181a1b);
|
|
183
|
+
}
|
|
184
|
+
.checkboxSwitchField.checkboxSwitch_rocker input[type=checkbox]:checked ~ .checkboxSwitchTrack .checkboxSwitchChecked:not(.checkboxSwitchButtonState) {
|
|
185
|
+
background: var(--checkboxSwitchRockerCheckedPressedBg, linear-gradient(to bottom, #24282b 0%, #384147 35%, #516472 100%));
|
|
186
|
+
color: var(--checkboxSwitchRockerCheckedPressedFgColor, #fff);
|
|
187
|
+
}
|
|
188
|
+
.checkboxSwitchField.checkboxSwitch_rocker.checkboxSwitch_single input[type=checkbox]:not(:checked) ~ .checkboxSwitchTrack .checkboxSwitchUnchecked:not(.checkboxSwitchButtonState) {
|
|
189
|
+
background: var(--checkboxSwitchRockerRaisedBg, linear-gradient(to bottom, #fff 0%, #f6f8fa 60%, #e5ebef 100%));
|
|
190
|
+
color: var(--checkboxSwitchRockerRaisedFgColor, #384147);
|
|
191
|
+
}
|
|
192
|
+
.checkboxSwitchField.checkboxSwitch_glow.checkboxSwitch_glowLight {
|
|
193
|
+
--checkboxSwitchGlowTrackBg: var(--checkboxSwitchGlowLightTrackBg, linear-gradient(to bottom, #fff 0%, #eef2f4 100%));
|
|
194
|
+
--checkboxSwitchGlowInactiveFgColor: var(--checkboxSwitchGlowLightInactiveFgColor, #7e97a7);
|
|
195
|
+
--checkboxSwitchGlowOffFgColor: var(--checkboxSwitchGlowLightOffFgColor, #24282b);
|
|
196
|
+
--checkboxSwitchGlowOnFgColor: var(--checkboxSwitchGlowLightOnFgColor, color-mix(in srgb, var(--checkboxSwitchGlowColor, #2bff88) 55%, #000));
|
|
197
|
+
}
|
|
198
|
+
.checkboxSwitchField.checkboxSwitch_glow.checkboxSwitch_round.checkboxSwitch_hiddenStateLabels .checkboxSwitchTrack {
|
|
199
|
+
width: var(--checkboxSwitchHeight);
|
|
200
|
+
}
|
|
201
|
+
.checkboxSwitchField.checkboxSwitch_glow.checkboxSwitch_round.checkboxSwitch_hiddenStateLabels .checkboxSwitchState {
|
|
202
|
+
min-width: 0;
|
|
203
|
+
padding: 0;
|
|
204
|
+
}
|
|
205
|
+
.checkboxSwitchField.checkboxSwitch_glow.checkboxSwitch_round.checkboxSwitch_hiddenStateLabels.checkboxSwitch_split .checkboxSwitchTrack {
|
|
206
|
+
width: calc(var(--checkboxSwitchHeight) * 2);
|
|
207
|
+
}
|
|
208
|
+
.checkboxSwitchField.checkboxSwitch_glow .checkboxSwitchTrack {
|
|
209
|
+
background: var(--checkboxSwitchGlowTrackBg, linear-gradient(to bottom, #384147 0%, #24282b 100%));
|
|
210
|
+
}
|
|
211
|
+
.checkboxSwitchField.checkboxSwitch_glow .checkboxSwitchState {
|
|
212
|
+
transition: color var(--checkboxSwitchTransition, 0.2s ease), text-shadow var(--checkboxSwitchTransition, 0.2s ease), opacity var(--checkboxSwitchTransition, 0.2s ease);
|
|
213
|
+
}
|
|
214
|
+
.checkboxSwitchField.checkboxSwitch_glow .checkboxSwitchState:not(.checkboxSwitchButtonState) {
|
|
215
|
+
color: var(--checkboxSwitchGlowInactiveFgColor, #7e97a7);
|
|
216
|
+
}
|
|
217
|
+
.checkboxSwitchField.checkboxSwitch_glow .checkboxSwitchState .iconSvg {
|
|
218
|
+
transition: filter var(--checkboxSwitchTransition, 0.2s ease);
|
|
219
|
+
}
|
|
220
|
+
.checkboxSwitchField.checkboxSwitch_glow .checkboxSwitchChecked {
|
|
221
|
+
border-right: var(--checkboxSwitchBorder, 1px solid #e5ebef);
|
|
222
|
+
}
|
|
223
|
+
.checkboxSwitchField.checkboxSwitch_glow input[type=checkbox]:not(:checked) ~ .checkboxSwitchTrack .checkboxSwitchUnchecked:not(.checkboxSwitchButtonState) {
|
|
224
|
+
color: var(--checkboxSwitchGlowOffFgColor, #e5ebef);
|
|
225
|
+
}
|
|
226
|
+
.checkboxSwitchField.checkboxSwitch_glow input[type=checkbox]:checked ~ .checkboxSwitchTrack .checkboxSwitchChecked:not(.checkboxSwitchButtonState) {
|
|
227
|
+
color: var(--checkboxSwitchGlowOnFgColor, #e8fff2);
|
|
228
|
+
}
|
|
229
|
+
.checkboxSwitchField.checkboxSwitch_glow input[type=checkbox]:checked ~ .checkboxSwitchTrack .checkboxSwitchChecked {
|
|
230
|
+
text-shadow: 0 0 var(--checkboxSwitchGlowRadius, 5px) var(--checkboxSwitchGlowColor, #2bff88), 0 0 calc(var(--checkboxSwitchGlowRadius, 5px) * 2) var(--checkboxSwitchGlowColor, #2bff88);
|
|
231
|
+
}
|
|
232
|
+
.checkboxSwitchField.checkboxSwitch_glow input[type=checkbox]:checked ~ .checkboxSwitchTrack .checkboxSwitchChecked .iconSvg {
|
|
233
|
+
filter: drop-shadow(0 0 calc(var(--checkboxSwitchGlowRadius, 5px) / 2) var(--checkboxSwitchGlowColor, #2bff88)) drop-shadow(0 0 var(--checkboxSwitchGlowRadius, 5px) var(--checkboxSwitchGlowColor, #2bff88));
|
|
234
|
+
}
|
|
235
|
+
.checkboxSwitchField.checkboxSwitch_powerButton .checkboxSwitchTrack {
|
|
236
|
+
width: var(--checkboxSwitchHeight);
|
|
237
|
+
border-radius: 50%;
|
|
238
|
+
background: var(--checkboxSwitchPowerButtonBezelBg, conic-gradient(from -45deg, #fff 0%, #ddd 50%, #fff 100%));
|
|
239
|
+
}
|
|
240
|
+
.checkboxSwitchField.checkboxSwitch_powerButton .checkboxSwitchTrack::after {
|
|
241
|
+
content: "";
|
|
242
|
+
position: absolute;
|
|
243
|
+
z-index: 1;
|
|
244
|
+
inset: var(--checkboxSwitchPowerButtonCapInset, 15%);
|
|
245
|
+
box-sizing: border-box;
|
|
246
|
+
border-radius: 50%;
|
|
247
|
+
border: var(--checkboxSwitchPowerButtonCapBorder, 1px solid #ddd);
|
|
248
|
+
background: var(--checkboxSwitchPowerButtonCapBg, radial-gradient(circle at bottom right, #fff 0%, #ddd 50%, #ccc 100%));
|
|
249
|
+
}
|
|
250
|
+
.checkboxSwitchField.checkboxSwitch_powerButton .checkboxSwitchState {
|
|
251
|
+
position: relative;
|
|
252
|
+
z-index: 2;
|
|
253
|
+
min-width: 0;
|
|
254
|
+
padding: 0;
|
|
255
|
+
color: var(--checkboxSwitchPowerButtonOffFgColor, #ccc);
|
|
256
|
+
text-shadow: var(--checkboxSwitchPowerButtonOffShadow, 0 0 1px #888);
|
|
257
|
+
transition: color var(--checkboxSwitchTransition, 0.2s ease), text-shadow var(--checkboxSwitchTransition, 0.2s ease);
|
|
258
|
+
}
|
|
259
|
+
.checkboxSwitchField.checkboxSwitch_powerButton .checkboxSwitchState .icon {
|
|
260
|
+
font-size: max(11px, var(--checkboxSwitchHeight) * 0.36);
|
|
261
|
+
}
|
|
262
|
+
.checkboxSwitchField.checkboxSwitch_powerButton .checkboxSwitchState .iconSvg {
|
|
263
|
+
width: max(11px, var(--checkboxSwitchHeight) * 0.36);
|
|
264
|
+
height: max(11px, var(--checkboxSwitchHeight) * 0.36);
|
|
265
|
+
}
|
|
266
|
+
.checkboxSwitchField.checkboxSwitch_powerButton input[type=checkbox]:checked ~ .checkboxSwitchTrack .checkboxSwitchChecked {
|
|
267
|
+
color: var(--checkboxSwitchPowerButtonOnFgColor, #f00);
|
|
268
|
+
text-shadow: var(--checkboxSwitchPowerButtonOnShadow, 0 0 1px #030);
|
|
269
|
+
}
|
|
270
|
+
.checkboxSwitchField.checkboxSwitch_single:not(.checkboxSwitch_slide) .checkboxSwitchTrack {
|
|
271
|
+
grid-template-columns: 1fr;
|
|
272
|
+
}
|
|
273
|
+
.checkboxSwitchField.checkboxSwitch_single:not(.checkboxSwitch_slide) .checkboxSwitchState {
|
|
274
|
+
grid-column: 1;
|
|
275
|
+
}
|
|
276
|
+
.checkboxSwitchField.checkboxSwitch_single:not(.checkboxSwitch_slide) .checkboxSwitchChecked {
|
|
277
|
+
border-right: 0;
|
|
278
|
+
}
|
|
279
|
+
.checkboxSwitchField.checkboxSwitch_single:not(.checkboxSwitch_slide) input[type=checkbox]:checked ~ .checkboxSwitchTrack .checkboxSwitchUnchecked,
|
|
280
|
+
.checkboxSwitchField.checkboxSwitch_single:not(.checkboxSwitch_slide) input[type=checkbox]:not(:checked) ~ .checkboxSwitchTrack .checkboxSwitchChecked {
|
|
281
|
+
visibility: hidden;
|
|
282
|
+
}
|
|
283
|
+
.checkboxSwitchField .checkboxSwitchTrack .checkboxSwitchState.checkboxSwitchButtonState {
|
|
284
|
+
box-sizing: border-box;
|
|
285
|
+
width: auto;
|
|
286
|
+
height: auto;
|
|
287
|
+
min-height: 0;
|
|
288
|
+
min-width: var(--checkboxSwitchHeight);
|
|
289
|
+
margin: 0;
|
|
290
|
+
padding: 0 var(--checkboxSwitchPaddingInline);
|
|
291
|
+
border-radius: 0;
|
|
292
|
+
font-size: inherit;
|
|
293
|
+
line-height: inherit;
|
|
294
|
+
cursor: inherit;
|
|
295
|
+
}
|
|
296
|
+
.checkboxSwitchField.checkboxSwitch_split:not(.checkboxSwitch_slide) input[type=checkbox]:checked ~ .checkboxSwitchTrack .checkboxSwitchUnchecked.checkboxSwitchButtonState,
|
|
297
|
+
.checkboxSwitchField.checkboxSwitch_split:not(.checkboxSwitch_slide) input[type=checkbox]:not(:checked) ~ .checkboxSwitchTrack .checkboxSwitchChecked.checkboxSwitchButtonState {
|
|
298
|
+
opacity: var(--checkboxSwitchButtonInactiveOpacity, 0.4);
|
|
299
|
+
}
|
|
300
|
+
@media (prefers-reduced-motion: reduce) {
|
|
301
|
+
.checkboxSwitchField .checkboxSwitchTrack,
|
|
302
|
+
.checkboxSwitchField .checkboxSwitchState,
|
|
303
|
+
.checkboxSwitchField .checkboxSwitchThumb {
|
|
304
|
+
transition: none;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkboxSwitchProps.js","names":[],"sources":["../../../../../../../../../src/components/form/formFields/subComponents/inputs/checkbox/checkboxSwitch/checkboxSwitchProps.ts"],"sourcesContent":["import { ReactNode } from 'react';\nimport {\n CustomContentProps,\n CustomFieldCssClassesProps,\n FieldProps,\n FormFieldProps,\n LabelProps\n} from '../../../../formFieldWrapper/formFieldProps';\nimport { IconSource } from '../../../../../../../helpers/iconHelpers';\nimport { InputCheckboxValidationProps } from '../inputCheckboxProps';\nimport { ButtonStyles } from '../../../../../buttons/button.interface';\n\nexport type CheckboxSwitchSize = 'xs' | 's' | 'm' | 'l' | 'xl';\n\n/** `slide` moves a thumb across a track; `rocker` presses the active half down like a light switch; `glow` lights up the \"on\" content like a power button; `powerButton` is a circular icon-only button with a raised cap. */\nexport type CheckboxSwitchVariant = 'slide' | 'rocker' | 'glow' | 'powerButton';\n\n/** `round` uses a circular slide thumb; `ellipse` stretches the thumb across half the track. Rocker and glow switches treat both as pill shaped. */\nexport type CheckboxSwitchShape = 'round' | 'ellipse' | 'rectangular';\n\n/** `split` shows both states side by side; `single` shows only the current state as one button. Slide switches always show one state. */\nexport type CheckboxSwitchStateDisplay = 'split' | 'single';\n\n/** Only applies to the `glow` variant. */\nexport type CheckboxSwitchGlowTheme = 'dark' | 'light';\n\nexport type CheckboxSwitchButtonStyle = Omit<ButtonStyles, 'size'>;\n\nexport interface CheckboxSwitchLabelProps extends Omit<LabelProps, 'position'> {\n position?: 'left' | 'right';\n}\n\nexport interface CheckboxSwitchFieldProps extends Pick<FieldProps, 'id' | 'name' | 'disabled' | 'onChange' | 'onBlur' | 'onTouched'> {\n /** Submitted when checked. When omitted the form value is a boolean. */\n value?: string;\n defaultChecked?: boolean;\n}\n\nexport interface CheckboxSwitchStateProps {\n /** Visible text for this state. */\n label?: ReactNode;\n icon?: IconSource;\n cssClass?: string;\n /** Library button appearance for this state. Size and shape come from the switch; ignored by the `slide` variant. */\n buttonStyle?: CheckboxSwitchButtonStyle;\n}\n\nexport interface CheckboxSwitchStatesProps {\n checked?: CheckboxSwitchStateProps;\n unchecked?: CheckboxSwitchStateProps;\n}\n\nexport interface CheckboxSwitchProps extends Omit<FormFieldProps, 'label' | 'field' | 'layout' | 'validation' | 'separateLabelAndField'> {\n label: CheckboxSwitchLabelProps;\n field: CheckboxSwitchFieldProps;\n validation?: InputCheckboxValidationProps;\n variant?: CheckboxSwitchVariant;\n shape?: CheckboxSwitchShape;\n size?: CheckboxSwitchSize;\n states?: CheckboxSwitchStatesProps;\n stateDisplay?: CheckboxSwitchStateDisplay;\n glowTheme?: CheckboxSwitchGlowTheme;\n /** Visually hides the per-state labels while keeping any state icons. */\n hideStateLabels?: boolean;\n showSpinner?: boolean;\n customCssClasses?: CustomFieldCssClassesProps;\n customContent?: CustomContentProps;\n}\n"],"mappings":"","ignoreList":[]}
|
package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputCheckboxProps.js","names":[],"sources":["../../../../../../../../src/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"inputCheckboxProps.js","names":[],"sources":["../../../../../../../../src/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.ts"],"sourcesContent":["import { IconSource } from '../../../../../../helpers/iconHelpers';\nimport {\n CustomContentProps,\n CustomFieldCssClassesProps,\n FieldProps,\n FormFieldProps,\n LabelProps,\n ValidationProps\n} from '../../../formFieldWrapper/formFieldProps';\n\nexport interface InputCheckboxLabelProps extends Omit<LabelProps, 'hide' | 'position'> {\n position?: 'left' | 'right';\n}\n\nexport interface InputCheckboxIconsProps {\n checked: IconSource;\n unchecked: IconSource;\n}\n\nexport interface InputCheckboxFieldProps extends Omit<FieldProps, 'type' | 'placeholder' | 'value' | 'defaultValue' | 'referenceDate' | 'includeEmptyOption' | 'options'> {\n value: boolean | string;\n defaultChecked?: boolean;\n defaultValue?: boolean | string | number | readonly string[];\n}\n\nexport interface InputCheckboxValidationProps<TFieldValue = unknown, TFormValues = unknown>\n extends Omit<ValidationProps<TFieldValue, TFormValues>, 'validate'> {\n}\n\nexport interface InputCheckboxProps extends Omit<FormFieldProps, 'label' | 'field' | 'layout' | 'validation'> {\n label: InputCheckboxLabelProps,\n field: InputCheckboxFieldProps,\n validation?: InputCheckboxValidationProps;\n showSpinner?: boolean;\n icons?: InputCheckboxIconsProps;\n customCssClasses?: CustomFieldCssClassesProps;\n customContent?: CustomContentProps;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { arrowUpFromBracket } from '@x15ventures/x15-ui-library-icons/iconDefinitions';
|
|
5
|
-
import { SvgIcon } from '@x15ventures/x15-ui-library-icons/svgIcon/SvgIcon';
|
|
6
5
|
import { useFormContext } from 'react-hook-form';
|
|
6
|
+
import { renderIcon } from '../../../../../../../helpers/iconHelpers';
|
|
7
7
|
import { HookFormWrapper } from '../../../../../hookFormWrapper/HookFormWrapper';
|
|
8
8
|
import { Spinner } from '../../../../../../design/spinner/Spinner';
|
|
9
9
|
import { FormFieldLabel } from '../../../../subComponents/labels/FormFieldLabel';
|
|
@@ -31,9 +31,7 @@ const DragAndDropFileUploadField = ({
|
|
|
31
31
|
color: 'primary',
|
|
32
32
|
variant: 'outline'
|
|
33
33
|
},
|
|
34
|
-
labelUploadIcon =
|
|
35
|
-
svgDefinition: arrowUpFromBracket
|
|
36
|
-
}),
|
|
34
|
+
labelUploadIcon = arrowUpFromBracket,
|
|
37
35
|
multiple = false,
|
|
38
36
|
restrictionsTxt = '',
|
|
39
37
|
validFiles = {
|
|
@@ -168,7 +166,7 @@ const DragAndDropFileUploadField = ({
|
|
|
168
166
|
}
|
|
169
167
|
}, /*#__PURE__*/React.createElement("span", {
|
|
170
168
|
className: "dragAndDropFileUploadLabel"
|
|
171
|
-
}, labelUploadIcon
|
|
169
|
+
}, renderIcon(labelUploadIcon), /*#__PURE__*/React.createElement(FormFieldLabel, labelProps), restrictionsTxt && /*#__PURE__*/React.createElement("span", {
|
|
172
170
|
className: "fileRestrictionsText"
|
|
173
171
|
}, restrictionsTxt)), /*#__PURE__*/React.createElement("span", {
|
|
174
172
|
className: "inputContainer"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DragAndDropFileUpload.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","arrowUpFromBracket","SvgIcon","useFormContext","HookFormWrapper","Spinner","FormFieldLabel","InputFile","ValidationMessages","generateButtonClass","FileAttachmentsList","DEFAULT_UPLOAD_FILE_EXTENSIONS","DEFAULT_UPLOAD_FILE_TYPES","BLACKLISTED_FILE_TYPES","DragAndDropFileUpload","props","createElement","formContext","DragAndDropFileUploadField","label","field","showSpinner","fileDisplayStyle","fileListSettings","fileList","validation","customContent","customCssClasses","labelStyle","labelAsButtonStyles","color","variant","labelUploadIcon","svgDefinition","multiple","restrictionsTxt","validFiles","extensions","fileTypes","maxFileCount","maxFileSize","onFilesChange","setValue","trigger","activeFileList","setFileList","isTouched","setIsTouched","isDragActive","setIsDragActive","inputId","id","inputElRef","dialogOpenRef","current","document","getElementById","onFocus","noneSelected","files","length","name","window","addEventListener","removeEventListener","supportedFileTypes","join","validateAndCommit","validated","filter","file","ext","split","pop","toLowerCase","isBlacklisted","includes","isValidExt","isValidSize","size","clipped","slice","shouldValidate","shouldDirty","shouldTouch","handleFileInputChange","event","target","Array","from","handleDrop","dropped","handleFilesEdited","wrapperCssClass","wrapper","position","labelProps","isRequired","required","labelStyleAsButtonClasses","cssClass","buttonStyle","hideLabel","hide","labelCssClass","className","onDragOver","e","preventDefault","onDragLeave","currentTarget","onDrop","dataTransfer","labelId","htmlFor","onClick","type","defaultValue","accept","onInput","map","index","key","customFileListSettings","onFilesRemoved","onFilesEdited"],"sources":["../../../../../../../../../src/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.tsx"],"sourcesContent":["'use client';\n\nimport React, { FormEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { arrowUpFromBracket } from '@x15ventures/x15-ui-library-icons/iconDefinitions';\nimport { SvgIcon } from '@x15ventures/x15-ui-library-icons/svgIcon/SvgIcon';\nimport { useFormContext } from 'react-hook-form';\nimport { HookFormWrapper } from '../../../../../hookFormWrapper/HookFormWrapper';\nimport { Spinner } from '../../../../../../design/spinner/Spinner';\nimport { FormFieldLabel } from '../../../../subComponents/labels/FormFieldLabel';\nimport { InputFile } from '../../../../subComponents/inputs/file/InputFile';\nimport { ValidationMessages } from '../../../../../validation/ValidationMessages';\nimport { generateButtonClass } from '../../../../../buttons/button.helpers';\nimport { FileAttachmentsList } from '../fileAttachmentList/FileAttachmentsList';\nimport { DragAndDropFileUploadProps } from '../fileInputProps';\nimport {\n DEFAULT_UPLOAD_FILE_EXTENSIONS,\n DEFAULT_UPLOAD_FILE_TYPES,\n BLACKLISTED_FILE_TYPES\n} from '../../../../../../../constants';\n\nimport './dragAndDropFileUpload.scss';\n\nexport const DragAndDropFileUpload: React.FC<DragAndDropFileUploadProps> = (props) => (\n <HookFormWrapper formContext={ props.formContext }>\n <DragAndDropFileUploadField { ...props } />\n </HookFormWrapper>\n);\n\nconst DragAndDropFileUploadField: React.FC<DragAndDropFileUploadProps> = (\n {\n label,\n field,\n showSpinner,\n fileDisplayStyle = 'names',\n fileListSettings,\n fileList,\n validation,\n customContent,\n customCssClasses,\n labelStyle = 'dragArea',\n labelAsButtonStyles = { color: 'primary', variant: 'outline' },\n labelUploadIcon = <SvgIcon svgDefinition={ arrowUpFromBracket } />,\n multiple = false,\n restrictionsTxt = '',\n validFiles = {\n extensions: DEFAULT_UPLOAD_FILE_EXTENSIONS,\n fileTypes: DEFAULT_UPLOAD_FILE_TYPES,\n maxFileCount: 5,\n maxFileSize: 52428800 // 50 MB\n },\n onFilesChange = () => {}\n }\n) => {\n const { setValue, trigger } = useFormContext();\n\n const [activeFileList, setFileList] = useState<File[]>(fileList || []);\n const [isTouched, setIsTouched] = useState(false);\n const [isDragActive, setIsDragActive] = useState(false);\n\n const inputId = field.id;\n const inputElRef = useRef<HTMLInputElement | null>(null);\n const dialogOpenRef = useRef(false);\n\n useEffect(() => {\n inputElRef.current = document.getElementById(inputId) as HTMLInputElement | null;\n }, [inputId]);\n\n // Detect “Cancel” -> dialog closes, window regains focus, but input had no change.\n useEffect(() => {\n const onFocus = () => {\n if (!dialogOpenRef.current) { return; }\n dialogOpenRef.current = false;\n const noneSelected = !inputElRef.current?.files?.length;\n if (noneSelected) {\n // Trigger React Hook Form validators (e.g., required)\n trigger(field.name);\n }\n };\n window.addEventListener('focus', onFocus);\n return () => window.removeEventListener('focus', onFocus);\n }, [trigger, field.name]);\n\n const supportedFileTypes = useMemo(\n () => validFiles?.fileTypes?.join(', ') || '',\n [validFiles?.fileTypes]\n );\n\n const validateAndCommit = useCallback(\n (files: File[]) => {\n // basic validations\n const validated = files.filter((file) => {\n const ext = file.name.split('.').pop()?.toLowerCase() || '';\n const isBlacklisted = BLACKLISTED_FILE_TYPES.includes(ext);\n const isValidExt = validFiles.extensions ? validFiles.extensions.includes(ext) : true;\n const isValidSize = validFiles.maxFileSize ? file.size <= validFiles.maxFileSize : true;\n return !isBlacklisted && isValidExt && isValidSize;\n });\n\n const clipped = validFiles.maxFileCount\n ? validated.slice(0, validFiles.maxFileCount)\n : validated;\n\n setFileList(clipped);\n setIsTouched(true);\n\n setValue(field.name, clipped.length ? clipped : null, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n\n onFilesChange(clipped);\n },\n [field.name, onFilesChange, setValue, fileDisplayStyle, validFiles]\n );\n\n const handleFileInputChange = useCallback((event: FormEvent<HTMLInputElement>) => {\n const target = event.target as HTMLInputElement;\n const files = Array.from(target.files ?? []);\n validateAndCommit(files);\n trigger(field.name);\n dialogOpenRef.current = false;\n }, [trigger, field.name, validateAndCommit]);\n\n const handleDrop = useCallback((dropped: File[]) => {\n validateAndCommit(dropped);\n trigger(field.name);\n }, [trigger, field.name, validateAndCommit]);\n\n const handleFilesEdited = useCallback((files: File[]) => {\n // No need to validate again as they were already validated\n // Changes may include renaming or removing files\n setFileList(files);\n setValue(field.name, files.length > 0 ? files : null, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n onFilesChange(files);\n }, [field.name, setValue, onFilesChange]);\n\n const wrapperCssClass = `\n formField \n dragAndDropFileUpload \n ${ fileDisplayStyle === 'list' ? 'withFileList' : '' } \n ${ labelStyle || '' }Style \n ${ customCssClasses?.wrapper || '' } \n ${ isTouched ? 'touched' : '' } \n ${ typeof validation !== 'undefined' ? 'withValidation' : '' } \n ${ label?.position === 'inset' ? 'insetLabel' : '' } \n ${ isDragActive ? 'isDragActive' : '' }\n `;\n\n const labelProps = {\n ...label,\n inputId: inputId,\n isRequired: validation && typeof validation.required !== 'undefined',\n customContent\n };\n\n const labelStyleAsButtonClasses = generateButtonClass({\n cssClass: 'button dragAndDropFileUploadButtonLabel',\n buttonStyle: labelAsButtonStyles,\n hideLabel: label.hide\n });\n\n const labelCssClass = `\n ${ labelStyle === 'button' ? labelStyleAsButtonClasses : '' }\n ${ customCssClasses?.label || '' } \n ${ showSpinner ? 'withSpinner' : '' } \n ${ label.hide ? 'hiddenLabel' : '' }\n `;\n\n return (\n <div\n className={ wrapperCssClass }\n onDragOver={ (e) => {\n e.preventDefault();\n if (!isDragActive) setIsDragActive(true);\n } }\n onDragLeave={ (e) => {\n if (e.currentTarget === e.target) setIsDragActive(false);\n } }\n onDrop={ (e) => {\n e.preventDefault();\n setIsDragActive(false);\n const files = Array.from(e.dataTransfer?.files ?? []);\n handleDrop(files);\n } }\n >\n <label\n id={ label.labelId || `${ inputId }_label` }\n className={ labelCssClass }\n htmlFor={ inputId }\n onClick={ () => { dialogOpenRef.current = true; } }\n >\n <span className=\"dragAndDropFileUploadLabel\">\n { labelUploadIcon || null }\n <FormFieldLabel { ...labelProps } />\n { restrictionsTxt && <span className=\"fileRestrictionsText\">{ restrictionsTxt }</span> }\n </span>\n\n <span className=\"inputContainer\">\n <InputFile\n {\n ...{\n label,\n field: {\n ...field,\n type: 'file',\n id: inputId, // ensure we can query it by id\n defaultValue: '',\n multiple,\n accept: supportedFileTypes,\n onInput: (event: FormEvent<HTMLInputElement>) => {\n handleFileInputChange(event);\n }\n },\n validation,\n showSpinner,\n customCssClasses,\n customContent\n }\n }\n />\n </span>\n\n { showSpinner && <Spinner /> }\n\n { fileDisplayStyle === 'names' && activeFileList.length > 0 && (\n <span className=\"uploadedFileNames\">\n { activeFileList.map((file, index) => (\n <small key={ index } className=\"uploadedFileName\">\n { file.name }{ index < activeFileList.length - 1 ? ', ' : '' }\n </small>\n )) }\n </span>\n ) }\n\n <ValidationMessages name={ field.name } validation={ validation } />\n </label>\n\n { fileDisplayStyle === 'list' && activeFileList.length > 0 && (\n <FileAttachmentsList\n customFileListSettings={ fileListSettings }\n files={ activeFileList }\n onFilesRemoved={ handleFilesEdited }\n onFilesEdited={ handleFilesEdited }\n />\n ) }\n </div>\n );\n};\n\nexport default { DragAndDropFileUpload };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DragAndDropFileUpload.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","arrowUpFromBracket","useFormContext","renderIcon","HookFormWrapper","Spinner","FormFieldLabel","InputFile","ValidationMessages","generateButtonClass","FileAttachmentsList","DEFAULT_UPLOAD_FILE_EXTENSIONS","DEFAULT_UPLOAD_FILE_TYPES","BLACKLISTED_FILE_TYPES","DragAndDropFileUpload","props","createElement","formContext","DragAndDropFileUploadField","label","field","showSpinner","fileDisplayStyle","fileListSettings","fileList","validation","customContent","customCssClasses","labelStyle","labelAsButtonStyles","color","variant","labelUploadIcon","multiple","restrictionsTxt","validFiles","extensions","fileTypes","maxFileCount","maxFileSize","onFilesChange","setValue","trigger","activeFileList","setFileList","isTouched","setIsTouched","isDragActive","setIsDragActive","inputId","id","inputElRef","dialogOpenRef","current","document","getElementById","onFocus","noneSelected","files","length","name","window","addEventListener","removeEventListener","supportedFileTypes","join","validateAndCommit","validated","filter","file","ext","split","pop","toLowerCase","isBlacklisted","includes","isValidExt","isValidSize","size","clipped","slice","shouldValidate","shouldDirty","shouldTouch","handleFileInputChange","event","target","Array","from","handleDrop","dropped","handleFilesEdited","wrapperCssClass","wrapper","position","labelProps","isRequired","required","labelStyleAsButtonClasses","cssClass","buttonStyle","hideLabel","hide","labelCssClass","className","onDragOver","e","preventDefault","onDragLeave","currentTarget","onDrop","dataTransfer","labelId","htmlFor","onClick","type","defaultValue","accept","onInput","map","index","key","customFileListSettings","onFilesRemoved","onFilesEdited"],"sources":["../../../../../../../../../src/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.tsx"],"sourcesContent":["'use client';\n\nimport React, { FormEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { arrowUpFromBracket } from '@x15ventures/x15-ui-library-icons/iconDefinitions';\nimport { useFormContext } from 'react-hook-form';\nimport { renderIcon } from '../../../../../../../helpers/iconHelpers';\nimport { HookFormWrapper } from '../../../../../hookFormWrapper/HookFormWrapper';\nimport { Spinner } from '../../../../../../design/spinner/Spinner';\nimport { FormFieldLabel } from '../../../../subComponents/labels/FormFieldLabel';\nimport { InputFile } from '../../../../subComponents/inputs/file/InputFile';\nimport { ValidationMessages } from '../../../../../validation/ValidationMessages';\nimport { generateButtonClass } from '../../../../../buttons/button.helpers';\nimport { FileAttachmentsList } from '../fileAttachmentList/FileAttachmentsList';\nimport { DragAndDropFileUploadProps } from '../fileInputProps';\nimport {\n DEFAULT_UPLOAD_FILE_EXTENSIONS,\n DEFAULT_UPLOAD_FILE_TYPES,\n BLACKLISTED_FILE_TYPES\n} from '../../../../../../../constants';\n\nimport './dragAndDropFileUpload.scss';\n\nexport const DragAndDropFileUpload: React.FC<DragAndDropFileUploadProps> = (props) => (\n <HookFormWrapper formContext={ props.formContext }>\n <DragAndDropFileUploadField { ...props } />\n </HookFormWrapper>\n);\n\nconst DragAndDropFileUploadField: React.FC<DragAndDropFileUploadProps> = (\n {\n label,\n field,\n showSpinner,\n fileDisplayStyle = 'names',\n fileListSettings,\n fileList,\n validation,\n customContent,\n customCssClasses,\n labelStyle = 'dragArea',\n labelAsButtonStyles = { color: 'primary', variant: 'outline' },\n labelUploadIcon = arrowUpFromBracket,\n multiple = false,\n restrictionsTxt = '',\n validFiles = {\n extensions: DEFAULT_UPLOAD_FILE_EXTENSIONS,\n fileTypes: DEFAULT_UPLOAD_FILE_TYPES,\n maxFileCount: 5,\n maxFileSize: 52428800 // 50 MB\n },\n onFilesChange = () => {}\n }\n) => {\n const { setValue, trigger } = useFormContext();\n\n const [activeFileList, setFileList] = useState<File[]>(fileList || []);\n const [isTouched, setIsTouched] = useState(false);\n const [isDragActive, setIsDragActive] = useState(false);\n\n const inputId = field.id;\n const inputElRef = useRef<HTMLInputElement | null>(null);\n const dialogOpenRef = useRef(false);\n\n useEffect(() => {\n inputElRef.current = document.getElementById(inputId) as HTMLInputElement | null;\n }, [inputId]);\n\n // Detect “Cancel” -> dialog closes, window regains focus, but input had no change.\n useEffect(() => {\n const onFocus = () => {\n if (!dialogOpenRef.current) { return; }\n dialogOpenRef.current = false;\n const noneSelected = !inputElRef.current?.files?.length;\n if (noneSelected) {\n // Trigger React Hook Form validators (e.g., required)\n trigger(field.name);\n }\n };\n window.addEventListener('focus', onFocus);\n return () => window.removeEventListener('focus', onFocus);\n }, [trigger, field.name]);\n\n const supportedFileTypes = useMemo(\n () => validFiles?.fileTypes?.join(', ') || '',\n [validFiles?.fileTypes]\n );\n\n const validateAndCommit = useCallback(\n (files: File[]) => {\n // basic validations\n const validated = files.filter((file) => {\n const ext = file.name.split('.').pop()?.toLowerCase() || '';\n const isBlacklisted = BLACKLISTED_FILE_TYPES.includes(ext);\n const isValidExt = validFiles.extensions ? validFiles.extensions.includes(ext) : true;\n const isValidSize = validFiles.maxFileSize ? file.size <= validFiles.maxFileSize : true;\n return !isBlacklisted && isValidExt && isValidSize;\n });\n\n const clipped = validFiles.maxFileCount\n ? validated.slice(0, validFiles.maxFileCount)\n : validated;\n\n setFileList(clipped);\n setIsTouched(true);\n\n setValue(field.name, clipped.length ? clipped : null, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n\n onFilesChange(clipped);\n },\n [field.name, onFilesChange, setValue, fileDisplayStyle, validFiles]\n );\n\n const handleFileInputChange = useCallback((event: FormEvent<HTMLInputElement>) => {\n const target = event.target as HTMLInputElement;\n const files = Array.from(target.files ?? []);\n validateAndCommit(files);\n trigger(field.name);\n dialogOpenRef.current = false;\n }, [trigger, field.name, validateAndCommit]);\n\n const handleDrop = useCallback((dropped: File[]) => {\n validateAndCommit(dropped);\n trigger(field.name);\n }, [trigger, field.name, validateAndCommit]);\n\n const handleFilesEdited = useCallback((files: File[]) => {\n // No need to validate again as they were already validated\n // Changes may include renaming or removing files\n setFileList(files);\n setValue(field.name, files.length > 0 ? files : null, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n onFilesChange(files);\n }, [field.name, setValue, onFilesChange]);\n\n const wrapperCssClass = `\n formField \n dragAndDropFileUpload \n ${ fileDisplayStyle === 'list' ? 'withFileList' : '' } \n ${ labelStyle || '' }Style \n ${ customCssClasses?.wrapper || '' } \n ${ isTouched ? 'touched' : '' } \n ${ typeof validation !== 'undefined' ? 'withValidation' : '' } \n ${ label?.position === 'inset' ? 'insetLabel' : '' } \n ${ isDragActive ? 'isDragActive' : '' }\n `;\n\n const labelProps = {\n ...label,\n inputId: inputId,\n isRequired: validation && typeof validation.required !== 'undefined',\n customContent\n };\n\n const labelStyleAsButtonClasses = generateButtonClass({\n cssClass: 'button dragAndDropFileUploadButtonLabel',\n buttonStyle: labelAsButtonStyles,\n hideLabel: label.hide\n });\n\n const labelCssClass = `\n ${ labelStyle === 'button' ? labelStyleAsButtonClasses : '' }\n ${ customCssClasses?.label || '' } \n ${ showSpinner ? 'withSpinner' : '' } \n ${ label.hide ? 'hiddenLabel' : '' }\n `;\n\n return (\n <div\n className={ wrapperCssClass }\n onDragOver={ (e) => {\n e.preventDefault();\n if (!isDragActive) setIsDragActive(true);\n } }\n onDragLeave={ (e) => {\n if (e.currentTarget === e.target) setIsDragActive(false);\n } }\n onDrop={ (e) => {\n e.preventDefault();\n setIsDragActive(false);\n const files = Array.from(e.dataTransfer?.files ?? []);\n handleDrop(files);\n } }\n >\n <label\n id={ label.labelId || `${ inputId }_label` }\n className={ labelCssClass }\n htmlFor={ inputId }\n onClick={ () => { dialogOpenRef.current = true; } }\n >\n <span className=\"dragAndDropFileUploadLabel\">\n { renderIcon(labelUploadIcon) }\n <FormFieldLabel { ...labelProps } />\n { restrictionsTxt && <span className=\"fileRestrictionsText\">{ restrictionsTxt }</span> }\n </span>\n\n <span className=\"inputContainer\">\n <InputFile\n {\n ...{\n label,\n field: {\n ...field,\n type: 'file',\n id: inputId, // ensure we can query it by id\n defaultValue: '',\n multiple,\n accept: supportedFileTypes,\n onInput: (event: FormEvent<HTMLInputElement>) => {\n handleFileInputChange(event);\n }\n },\n validation,\n showSpinner,\n customCssClasses,\n customContent\n }\n }\n />\n </span>\n\n { showSpinner && <Spinner /> }\n\n { fileDisplayStyle === 'names' && activeFileList.length > 0 && (\n <span className=\"uploadedFileNames\">\n { activeFileList.map((file, index) => (\n <small key={ index } className=\"uploadedFileName\">\n { file.name }{ index < activeFileList.length - 1 ? ', ' : '' }\n </small>\n )) }\n </span>\n ) }\n\n <ValidationMessages name={ field.name } validation={ validation } />\n </label>\n\n { fileDisplayStyle === 'list' && activeFileList.length > 0 && (\n <FileAttachmentsList\n customFileListSettings={ fileListSettings }\n files={ activeFileList }\n onFilesRemoved={ handleFilesEdited }\n onFilesEdited={ handleFilesEdited }\n />\n ) }\n </div>\n );\n};\n\nexport default { DragAndDropFileUpload };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ import { SimpleButton } from '../../../../../buttons/SimpleButton';
|
|
|
6
6
|
import { pencil, trash, xmark, check } from '@x15ventures/x15-ui-library-icons/iconDefinitions';
|
|
7
7
|
import { SvgIcon } from '@x15ventures/x15-ui-library-icons/svgIcon/SvgIcon';
|
|
8
8
|
import { deepMergeObjects } from '../../../../../../../helpers';
|
|
9
|
+
import { renderIcon } from '../../../../../../../helpers/iconHelpers';
|
|
9
10
|
import './fileAttachmentsList.css';
|
|
10
11
|
export const DefaultFileListSettings = {
|
|
11
12
|
isEditable: true,
|
|
@@ -77,18 +78,15 @@ export const FileAttachmentsList = ({
|
|
|
77
78
|
setAdjustedFiles(updatedFiles);
|
|
78
79
|
onFilesRemoved(updatedFiles);
|
|
79
80
|
};
|
|
80
|
-
const
|
|
81
|
-
|
|
81
|
+
const editIcon = renderIcon(fileListSettings.design?.editing?.edit?.icon, {
|
|
82
|
+
fallback: pencil
|
|
82
83
|
});
|
|
83
|
-
const
|
|
84
|
-
|
|
84
|
+
const deleteIcon = renderIcon(fileListSettings.design?.editing?.delete?.icon, {
|
|
85
|
+
fallback: trash
|
|
85
86
|
});
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
const SaveIcon = () => /*#__PURE__*/React.createElement(SvgIcon, {
|
|
90
|
-
svgDefinition: check,
|
|
91
|
-
customCssClass: "saveIcon"
|
|
87
|
+
const cancelIcon = renderIcon(xmark);
|
|
88
|
+
const saveIcon = renderIcon(check, {
|
|
89
|
+
customCssClass: 'saveIcon'
|
|
92
90
|
});
|
|
93
91
|
const isFileNameEditable = fileListSettings.isEditable && !fileListSettings.design?.editing?.edit?.disable;
|
|
94
92
|
const isFileDeletable = fileListSettings.isEditable && !fileListSettings.design?.editing?.delete?.disable;
|
|
@@ -126,9 +124,7 @@ export const FileAttachmentsList = ({
|
|
|
126
124
|
variant: 'icon-only',
|
|
127
125
|
size: 'compact'
|
|
128
126
|
},
|
|
129
|
-
leftIcon:
|
|
130
|
-
icon: /*#__PURE__*/React.createElement(CancelIcon, null)
|
|
131
|
-
},
|
|
127
|
+
leftIcon: cancelIcon,
|
|
132
128
|
id: `cancelEditFileButton${index}`,
|
|
133
129
|
onClickHandler: () => setEditingIndex(null)
|
|
134
130
|
}), /*#__PURE__*/React.createElement(SimpleButton, {
|
|
@@ -139,9 +135,7 @@ export const FileAttachmentsList = ({
|
|
|
139
135
|
size: 'compact',
|
|
140
136
|
color: 'primary'
|
|
141
137
|
},
|
|
142
|
-
leftIcon:
|
|
143
|
-
icon: /*#__PURE__*/React.createElement(SaveIcon, null)
|
|
144
|
-
},
|
|
138
|
+
leftIcon: saveIcon,
|
|
145
139
|
id: `saveEditFileButton${index}`,
|
|
146
140
|
onClickHandler: () => handleFileNameEdit(index)
|
|
147
141
|
})) : /*#__PURE__*/React.createElement("span", {
|
|
@@ -150,18 +144,14 @@ export const FileAttachmentsList = ({
|
|
|
150
144
|
label: "Edit file name",
|
|
151
145
|
hideLabel: true,
|
|
152
146
|
buttonStyle: fileListSettings.design?.editing?.edit?.buttonStyle,
|
|
153
|
-
leftIcon:
|
|
154
|
-
icon: /*#__PURE__*/React.createElement(EditIcon, null)
|
|
155
|
-
},
|
|
147
|
+
leftIcon: editIcon,
|
|
156
148
|
id: `editFileButton${index}`,
|
|
157
149
|
onClickHandler: () => setEditingIndex(index)
|
|
158
150
|
}), isFileDeletable && /*#__PURE__*/React.createElement(SimpleButton, {
|
|
159
151
|
label: "Remove file",
|
|
160
152
|
hideLabel: true,
|
|
161
153
|
buttonStyle: fileListSettings.design?.editing?.delete?.buttonStyle,
|
|
162
|
-
leftIcon:
|
|
163
|
-
icon: /*#__PURE__*/React.createElement(DeleteIcon, null)
|
|
164
|
-
},
|
|
154
|
+
leftIcon: deleteIcon,
|
|
165
155
|
id: `removeFileButton${index}`,
|
|
166
156
|
onClickHandler: () => handleFileRemoved(index)
|
|
167
157
|
}))))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileAttachmentsList.js","names":["React","useEffect","useState","SimpleButton","pencil","trash","xmark","check","SvgIcon","deepMergeObjects","DefaultFileListSettings","isEditable","design","animation","editing","delete","icon","createElement","svgDefinition","label","disable","buttonStyle","variant","size","edit","heading","isVisible","prefix","includeFileCount","FileAttachmentsList","customFileListSettings","onFilesRemoved","onFilesEdited","files","adjustedFiles","setAdjustedFiles","editingIndex","setEditingIndex","filesList","createRef","fileListSettings","baseObject","overrideObject","handleFileNameEdit","index","newName","adjustedName","current","children","querySelector","value","trim","updatedFiles","map","file","i","File","type","handleFileRemoved","filter","_","EditIcon","DeleteIcon","CancelIcon","SaveIcon","customCssClass","isFileNameEditable","isFileDeletable","className","length","ref","key","name","defaultValue","onKeyDown","e","target","autoFocus","hideLabel","leftIcon","id","onClickHandler","color"],"sources":["../../../../../../../../../src/components/form/formFields/subComponents/inputs/file/fileAttachmentList/FileAttachmentsList.tsx"],"sourcesContent":["/* eslint-disable no-unused-vars */\n'use client';\nimport React, { FC, useEffect, useState } from 'react';\nimport { SimpleButton } from '../../../../../buttons/SimpleButton';\nimport { pencil, trash, xmark, check } from '@x15ventures/x15-ui-library-icons/iconDefinitions';\nimport { SvgIcon } from '@x15ventures/x15-ui-library-icons/svgIcon/SvgIcon';\nimport { FileAttachmentListSettingsProps } from '../fileInputProps';\nimport { deepMergeObjects } from '../../../../../../../helpers';\n\nimport './fileAttachmentsList.scss';\n\ninterface FileAttachmentsProps {\n customFileListSettings?: FileAttachmentListSettingsProps;\n onFilesRemoved: (files: File[]) => void;\n onFilesEdited: (files: File[]) => void;\n files: File[];\n}\n\nexport const DefaultFileListSettings: FileAttachmentListSettingsProps = {\n isEditable: true,\n design: {\n animation: 'reveal',\n editing: {\n delete: {\n icon: <SvgIcon svgDefinition={ trash }/>,\n label: 'Remove file',\n disable: false,\n buttonStyle: {\n variant: 'icon-only',\n size: 'compact',\n }\n },\n edit: {\n icon: <SvgIcon svgDefinition={ pencil }/>,\n label: 'Edit file name',\n disable: false,\n buttonStyle: {\n variant: 'icon-only',\n size: 'compact',\n }\n }\n },\n heading: {\n isVisible: false,\n prefix: 'Attached files',\n includeFileCount: true\n }\n }\n};\n\nexport const FileAttachmentsList: FC<FileAttachmentsProps> = (\n {\n customFileListSettings,\n onFilesRemoved = () => {},\n onFilesEdited = () => {},\n files\n }\n) => {\n const [adjustedFiles, setAdjustedFiles] = useState<File[]>(files);\n const [editingIndex, setEditingIndex] = useState<number | null>(null);\n const filesList = React.createRef<HTMLUListElement>();\n\n const fileListSettings: FileAttachmentListSettingsProps = deepMergeObjects({\n baseObject: DefaultFileListSettings,\n overrideObject: customFileListSettings || {}\n });\n\n useEffect(() => {\n setAdjustedFiles(files);\n }, [files]);\n\n const handleFileNameEdit = (index: number, newName?: string) => {\n const adjustedName = newName || (filesList.current?.children[index].querySelector('input') as HTMLInputElement)?.value.trim();\n\n const updatedFiles = adjustedFiles.map((file, i) => {\n if (i === index) {\n return new File([file], adjustedName, { type: file.type });\n }\n return file;\n });\n setAdjustedFiles(updatedFiles);\n setEditingIndex(null);\n onFilesEdited(updatedFiles);\n };\n\n const handleFileRemoved = (index: number) => {\n const updatedFiles = adjustedFiles.filter((_, i) => i !== index);\n setAdjustedFiles(updatedFiles);\n onFilesRemoved(updatedFiles);\n };\n\n const EditIcon: FC = () => fileListSettings.design?.editing?.edit?.icon || <SvgIcon svgDefinition={ pencil } />;\n const DeleteIcon: FC = () => fileListSettings.design?.editing?.delete?.icon || <SvgIcon svgDefinition={ trash } />;\n const CancelIcon: FC = () => <SvgIcon svgDefinition={ xmark } />;\n const SaveIcon: FC = () => <SvgIcon svgDefinition={ check } customCssClass=\"saveIcon\" />;\n\n const isFileNameEditable = fileListSettings.isEditable && !fileListSettings.design?.editing?.edit?.disable;\n const isFileDeletable = fileListSettings.isEditable && !fileListSettings.design?.editing?.delete?.disable;\n\n return (\n <div className=\"fileAttachmentsList\">\n {\n fileListSettings.design?.heading?.isVisible && (\n <h4>\n {\n fileListSettings.design?.heading?.prefix || 'Attached files'\n }\n {\n fileListSettings.design?.heading?.includeFileCount && ` (${ adjustedFiles.length })`\n }\n </h4>\n )\n }\n <div className={ `fileUploadList ${ adjustedFiles.length > 0 ? 'withFiles' : 'noFiles' }` }>\n { adjustedFiles.length > 0 && (\n <ul className=\"noBullet\" ref={ filesList }>\n { adjustedFiles.map((file, index) => (\n <li key={ index }>\n {\n editingIndex === index && isFileNameEditable ? (\n <span className=\"editFileNameContainer\">\n <input\n type=\"text\"\n aria-label={ `Edit file name (${ file.name })` }\n defaultValue={ file.name }\n className=\"fileNameInput\"\n onKeyDown={ (e) => {\n if (e.key === 'Enter') {\n const newName = (e.target as HTMLInputElement).value.trim();\n if (newName && newName !== file.name) {\n handleFileNameEdit(index, newName);\n }\n } else if (e.key === 'Escape' || e.key === 'Tab') {\n setEditingIndex(null);\n }\n } }\n autoFocus\n />\n <SimpleButton\n label=\"Cancel\"\n hideLabel\n buttonStyle={ { variant: 'icon-only', size: 'compact' } }\n leftIcon={ { icon: <CancelIcon /> } }\n id={ `cancelEditFileButton${ index }` }\n onClickHandler={ () => setEditingIndex(null) }\n />\n <SimpleButton\n label=\"Save\"\n hideLabel\n buttonStyle={ { variant: 'icon-only', size: 'compact', color: 'primary' } }\n leftIcon={ { icon: <SaveIcon /> } }\n id={ `saveEditFileButton${ index }` }\n onClickHandler={ () => handleFileNameEdit(index) }\n />\n </span>\n ) :\n <span className=\"fileNameDisplay\">{ file.name }</span>\n }\n\n {\n isFileNameEditable && (\n <SimpleButton\n label=\"Edit file name\"\n hideLabel\n buttonStyle={ fileListSettings.design?.editing?.edit?.buttonStyle }\n leftIcon={ { icon: <EditIcon /> } }\n id={ `editFileButton${ index }` }\n onClickHandler={ () => setEditingIndex(index) }\n />\n )\n }\n\n {\n isFileDeletable && (\n <SimpleButton\n label=\"Remove file\"\n hideLabel\n buttonStyle={ fileListSettings.design?.editing?.delete?.buttonStyle }\n leftIcon={ { icon: <DeleteIcon /> } }\n id={ `removeFileButton${ index }` }\n onClickHandler={ () => handleFileRemoved(index) }\n />\n )\n }\n </li>\n )) }\n </ul>\n ) }\n </div>\n </div>\n );\n};\n\nexport default {\n FileAttachmentsList\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FileAttachmentsList.js","names":["React","useEffect","useState","SimpleButton","pencil","trash","xmark","check","SvgIcon","deepMergeObjects","renderIcon","DefaultFileListSettings","isEditable","design","animation","editing","delete","icon","createElement","svgDefinition","label","disable","buttonStyle","variant","size","edit","heading","isVisible","prefix","includeFileCount","FileAttachmentsList","customFileListSettings","onFilesRemoved","onFilesEdited","files","adjustedFiles","setAdjustedFiles","editingIndex","setEditingIndex","filesList","createRef","fileListSettings","baseObject","overrideObject","handleFileNameEdit","index","newName","adjustedName","current","children","querySelector","value","trim","updatedFiles","map","file","i","File","type","handleFileRemoved","filter","_","editIcon","fallback","deleteIcon","cancelIcon","saveIcon","customCssClass","isFileNameEditable","isFileDeletable","className","length","ref","key","name","defaultValue","onKeyDown","e","target","autoFocus","hideLabel","leftIcon","id","onClickHandler","color"],"sources":["../../../../../../../../../src/components/form/formFields/subComponents/inputs/file/fileAttachmentList/FileAttachmentsList.tsx"],"sourcesContent":["/* eslint-disable no-unused-vars */\n'use client';\nimport React, { FC, useEffect, useState } from 'react';\nimport { SimpleButton } from '../../../../../buttons/SimpleButton';\nimport { pencil, trash, xmark, check } from '@x15ventures/x15-ui-library-icons/iconDefinitions';\nimport { SvgIcon } from '@x15ventures/x15-ui-library-icons/svgIcon/SvgIcon';\nimport { FileAttachmentListSettingsProps } from '../fileInputProps';\nimport { deepMergeObjects } from '../../../../../../../helpers';\nimport { renderIcon } from '../../../../../../../helpers/iconHelpers';\n\nimport './fileAttachmentsList.scss';\n\ninterface FileAttachmentsProps {\n customFileListSettings?: FileAttachmentListSettingsProps;\n onFilesRemoved: (files: File[]) => void;\n onFilesEdited: (files: File[]) => void;\n files: File[];\n}\n\nexport const DefaultFileListSettings: FileAttachmentListSettingsProps = {\n isEditable: true,\n design: {\n animation: 'reveal',\n editing: {\n delete: {\n icon: <SvgIcon svgDefinition={ trash }/>,\n label: 'Remove file',\n disable: false,\n buttonStyle: {\n variant: 'icon-only',\n size: 'compact',\n }\n },\n edit: {\n icon: <SvgIcon svgDefinition={ pencil }/>,\n label: 'Edit file name',\n disable: false,\n buttonStyle: {\n variant: 'icon-only',\n size: 'compact',\n }\n }\n },\n heading: {\n isVisible: false,\n prefix: 'Attached files',\n includeFileCount: true\n }\n }\n};\n\nexport const FileAttachmentsList: FC<FileAttachmentsProps> = (\n {\n customFileListSettings,\n onFilesRemoved = () => {},\n onFilesEdited = () => {},\n files\n }\n) => {\n const [adjustedFiles, setAdjustedFiles] = useState<File[]>(files);\n const [editingIndex, setEditingIndex] = useState<number | null>(null);\n const filesList = React.createRef<HTMLUListElement>();\n\n const fileListSettings: FileAttachmentListSettingsProps = deepMergeObjects({\n baseObject: DefaultFileListSettings,\n overrideObject: customFileListSettings || {}\n });\n\n useEffect(() => {\n setAdjustedFiles(files);\n }, [files]);\n\n const handleFileNameEdit = (index: number, newName?: string) => {\n const adjustedName = newName || (filesList.current?.children[index].querySelector('input') as HTMLInputElement)?.value.trim();\n\n const updatedFiles = adjustedFiles.map((file, i) => {\n if (i === index) {\n return new File([file], adjustedName, { type: file.type });\n }\n return file;\n });\n setAdjustedFiles(updatedFiles);\n setEditingIndex(null);\n onFilesEdited(updatedFiles);\n };\n\n const handleFileRemoved = (index: number) => {\n const updatedFiles = adjustedFiles.filter((_, i) => i !== index);\n setAdjustedFiles(updatedFiles);\n onFilesRemoved(updatedFiles);\n };\n\n const editIcon = renderIcon(fileListSettings.design?.editing?.edit?.icon, { fallback: pencil });\n const deleteIcon = renderIcon(fileListSettings.design?.editing?.delete?.icon, { fallback: trash });\n const cancelIcon = renderIcon(xmark);\n const saveIcon = renderIcon(check, { customCssClass: 'saveIcon' });\n\n const isFileNameEditable = fileListSettings.isEditable && !fileListSettings.design?.editing?.edit?.disable;\n const isFileDeletable = fileListSettings.isEditable && !fileListSettings.design?.editing?.delete?.disable;\n\n return (\n <div className=\"fileAttachmentsList\">\n {\n fileListSettings.design?.heading?.isVisible && (\n <h4>\n {\n fileListSettings.design?.heading?.prefix || 'Attached files'\n }\n {\n fileListSettings.design?.heading?.includeFileCount && ` (${ adjustedFiles.length })`\n }\n </h4>\n )\n }\n <div className={ `fileUploadList ${ adjustedFiles.length > 0 ? 'withFiles' : 'noFiles' }` }>\n { adjustedFiles.length > 0 && (\n <ul className=\"noBullet\" ref={ filesList }>\n { adjustedFiles.map((file, index) => (\n <li key={ index }>\n {\n editingIndex === index && isFileNameEditable ? (\n <span className=\"editFileNameContainer\">\n <input\n type=\"text\"\n aria-label={ `Edit file name (${ file.name })` }\n defaultValue={ file.name }\n className=\"fileNameInput\"\n onKeyDown={ (e) => {\n if (e.key === 'Enter') {\n const newName = (e.target as HTMLInputElement).value.trim();\n if (newName && newName !== file.name) {\n handleFileNameEdit(index, newName);\n }\n } else if (e.key === 'Escape' || e.key === 'Tab') {\n setEditingIndex(null);\n }\n } }\n autoFocus\n />\n <SimpleButton\n label=\"Cancel\"\n hideLabel\n buttonStyle={ { variant: 'icon-only', size: 'compact' } }\n leftIcon={ cancelIcon }\n id={ `cancelEditFileButton${ index }` }\n onClickHandler={ () => setEditingIndex(null) }\n />\n <SimpleButton\n label=\"Save\"\n hideLabel\n buttonStyle={ { variant: 'icon-only', size: 'compact', color: 'primary' } }\n leftIcon={ saveIcon }\n id={ `saveEditFileButton${ index }` }\n onClickHandler={ () => handleFileNameEdit(index) }\n />\n </span>\n ) :\n <span className=\"fileNameDisplay\">{ file.name }</span>\n }\n\n {\n isFileNameEditable && (\n <SimpleButton\n label=\"Edit file name\"\n hideLabel\n buttonStyle={ fileListSettings.design?.editing?.edit?.buttonStyle }\n leftIcon={ editIcon }\n id={ `editFileButton${ index }` }\n onClickHandler={ () => setEditingIndex(index) }\n />\n )\n }\n\n {\n isFileDeletable && (\n <SimpleButton\n label=\"Remove file\"\n hideLabel\n buttonStyle={ fileListSettings.design?.editing?.delete?.buttonStyle }\n leftIcon={ deleteIcon }\n id={ `removeFileButton${ index }` }\n onClickHandler={ () => handleFileRemoved(index) }\n />\n )\n }\n </li>\n )) }\n </ul>\n ) }\n </div>\n </div>\n );\n};\n\nexport default {\n FileAttachmentsList\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileInputProps.js","names":[],"sources":["../../../../../../../../src/components/form/formFields/subComponents/inputs/file/fileInputProps.ts"],"sourcesContent":["/* eslint-disable no-unused-vars */\nimport React, { FormEvent } from 'react';\nimport { FieldProps, FormFieldProps } from '../../../formFieldWrapper/formFieldProps';\nimport { ButtonStyles } from '../../../../buttons/button.interface';\n\nexport interface ValidFilesProps {\n extensions?: string[];\n fileTypes?: string[];\n maxFileCount?: number;\n maxFileSize?: number;\n}\n\nexport interface FileAttachmentListSettingsProps {\n design?: {\n animation?: 'reveal' | 'slide' | 'none';\n editing?: {\n delete?: {\n icon?:
|
|
1
|
+
{"version":3,"file":"fileInputProps.js","names":[],"sources":["../../../../../../../../src/components/form/formFields/subComponents/inputs/file/fileInputProps.ts"],"sourcesContent":["/* eslint-disable no-unused-vars */\nimport React, { FormEvent } from 'react';\nimport { FieldProps, FormFieldProps } from '../../../formFieldWrapper/formFieldProps';\nimport { ButtonStyles } from '../../../../buttons/button.interface';\nimport { IconSource } from '../../../../../../helpers/iconHelpers';\n\nexport interface ValidFilesProps {\n extensions?: string[];\n fileTypes?: string[];\n maxFileCount?: number;\n maxFileSize?: number;\n}\n\nexport interface FileAttachmentListSettingsProps {\n design?: {\n animation?: 'reveal' | 'slide' | 'none';\n editing?: {\n delete?: {\n icon?: IconSource;\n label?: string;\n disable?: boolean;\n buttonStyle?: ButtonStyles;\n };\n edit?: {\n icon?: IconSource;\n label?: string;\n disable?: boolean;\n buttonStyle?: ButtonStyles;\n };\n },\n heading?: {\n isVisible?: boolean;\n prefix?: string;\n includeFileCount?: boolean;\n }\n };\n isEditable?: boolean;\n}\n\nexport interface DragAndDropFileUploadProps extends Omit<FormFieldProps, 'field'> {\n field: Omit<FieldProps, 'type' | 'onInput'> & {\n type?: 'file';\n };\n labelStyle?: 'simple' | 'button' | 'dragArea';\n labelUploadIcon?: IconSource | null;\n labelAsButtonStyles?: ButtonStyles;\n fileDisplayStyle?: 'list' | 'names' | 'none';\n fileListSettings?: FileAttachmentListSettingsProps;\n labelStyleButtonProps?: ButtonStyles;\n customFileUploadLabel?: string | React.ReactElement;\n fileList?: File[];\n validFiles?: ValidFilesProps;\n onFilesChange?: (files: File[] | null) => void;\n restrictionsTxt?: string | React.ReactElement;\n multiple?: boolean;\n}\n\nexport interface FileInputProps extends DragAndDropFileUploadProps, React.InputHTMLAttributes<HTMLInputElement> {\n field: Omit<FieldProps, 'type' | 'onInput'> & {\n type: 'file';\n multiple?: boolean;\n accept: string;\n onInput?: (event: FormEvent<HTMLInputElement>) => void;\n };\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -31,6 +31,7 @@ export { PageBanner, Banner, Alert } from './design/banners/pageBanner/PageBanne
|
|
|
31
31
|
export { SimpleButton, Button } from './form/buttons/SimpleButton';
|
|
32
32
|
export { FormField } from './form/formFields/formFieldWrapper/FormField';
|
|
33
33
|
export { InputCheckbox, CheckboxInput } from './form/formFields/subComponents/inputs/checkbox/InputCheckbox';
|
|
34
|
+
export { CheckboxSwitch } from './form/formFields/subComponents/inputs/checkbox/checkboxSwitch/CheckboxSwitch';
|
|
34
35
|
export { StyledRadioGroup } from './form/formFields/subComponents/inputs/radio/styled/StyledRadioGroup';
|
|
35
36
|
export { StyledRadioInput } from './form/formFields/subComponents/inputs/radio/styled/StyledRadioInput';
|
|
36
37
|
export { StyledRadioLabel } from './form/formFields/subComponents/inputs/radio/styled/StyledRadioLabel';
|