@alfalab/core-components-select 19.0.6 → 19.1.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/components/arrow/index.css +4 -4
- package/components/arrow/index.module.css.js +1 -1
- package/components/base-checkmark/Component.d.ts +2 -2
- package/components/base-checkmark/Component.js +14 -7
- package/components/base-checkmark/Component.js.map +1 -1
- package/components/base-checkmark/index.css +32 -5
- package/components/base-checkmark/index.module.css.js +1 -1
- package/components/base-checkmark/index.module.css.js.map +1 -1
- package/components/base-option/Component.js +4 -16
- package/components/base-option/Component.js.map +1 -1
- package/components/base-option/index.css +14 -20
- package/components/base-option/index.module.css.js +1 -1
- package/components/base-option/index.module.css.js.map +1 -1
- package/components/base-select/index.css +11 -11
- package/components/base-select/index.module.css.js +1 -1
- package/components/base-select/mobile.css +11 -11
- package/components/base-select/mobile.module.css.js +1 -1
- package/components/checkmark/Component.d.ts +1 -1
- package/components/checkmark/Component.js +3 -4
- package/components/checkmark/Component.js.map +1 -1
- package/components/checkmark/index.css +23 -31
- package/components/checkmark/index.module.css.js +1 -1
- package/components/checkmark/index.module.css.js.map +1 -1
- package/components/checkmark-mobile/Component.d.ts +1 -1
- package/components/checkmark-mobile/Component.js +2 -2
- package/components/checkmark-mobile/Component.js.map +1 -1
- package/components/checkmark-mobile/index.css +14 -7
- package/components/checkmark-mobile/index.module.css.js +1 -1
- package/components/checkmark-mobile/index.module.css.js.map +1 -1
- package/components/clear-button/index.css +4 -4
- package/components/clear-button/index.module.css.js +1 -1
- package/components/field/Component.js +6 -23
- package/components/field/Component.js.map +1 -1
- package/components/field/index.css +13 -13
- package/components/field/index.module.css.js +1 -1
- package/components/footer/index.css +4 -4
- package/components/footer/index.module.css.js +1 -1
- package/components/optgroup/index.css +4 -4
- package/components/optgroup/index.module.css.js +1 -1
- package/components/option/Component.js +8 -4
- package/components/option/Component.js.map +1 -1
- package/components/option/desktop/index.css +19 -19
- package/components/option/desktop/index.module.css.js +1 -1
- package/components/option/mobile/index.css +16 -16
- package/components/option/mobile/index.module.css.js +1 -1
- package/components/options-list/index.css +13 -13
- package/components/options-list/index.module.css.js +1 -1
- package/components/search/index.css +1 -1
- package/components/search/index.module.css.js +1 -1
- package/components/virtual-options-list/index.css +13 -13
- package/components/virtual-options-list/index.module.css.js +1 -1
- package/cssm/components/base-checkmark/Component.d.ts +2 -2
- package/cssm/components/base-checkmark/Component.js +14 -7
- package/cssm/components/base-checkmark/Component.js.map +1 -1
- package/cssm/components/base-checkmark/index.module.css +29 -2
- package/cssm/components/base-option/Component.js +4 -16
- package/cssm/components/base-option/Component.js.map +1 -1
- package/cssm/components/base-option/index.module.css +0 -6
- package/cssm/components/checkmark/Component.d.ts +1 -1
- package/cssm/components/checkmark/Component.js +4 -5
- package/cssm/components/checkmark/Component.js.map +1 -1
- package/cssm/components/checkmark/index.module.css +16 -24
- package/cssm/components/checkmark-mobile/Component.d.ts +1 -1
- package/cssm/components/checkmark-mobile/Component.js +2 -2
- package/cssm/components/checkmark-mobile/Component.js.map +1 -1
- package/cssm/components/checkmark-mobile/index.module.css +10 -3
- package/cssm/components/field/Component.js +6 -23
- package/cssm/components/field/Component.js.map +1 -1
- package/cssm/components/option/Component.js +8 -4
- package/cssm/components/option/Component.js.map +1 -1
- package/cssm/desktop/Component.desktop.js +0 -2
- package/cssm/desktop/Component.desktop.js.map +1 -1
- package/cssm/mobile/Component.mobile.js +2 -3
- package/cssm/mobile/Component.mobile.js.map +1 -1
- package/cssm/presets/useLazyLoading/hook.js +0 -2
- package/cssm/presets/useLazyLoading/hook.js.map +1 -1
- package/cssm/presets/useSelectWithApply/hook.d.ts +7 -1
- package/cssm/presets/useSelectWithApply/hook.js +9 -8
- package/cssm/presets/useSelectWithApply/hook.js.map +1 -1
- package/cssm/presets/useSelectWithApply/options-list-with-apply/header/Component.d.ts +1 -0
- package/cssm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +3 -3
- package/cssm/presets/useSelectWithApply/options-list-with-apply/header/Component.js.map +1 -1
- package/cssm/presets/useSelectWithApply/options-list-with-apply/header/index.module.css +5 -1
- package/cssm/presets/useSelectWithLoading/hook.js +0 -2
- package/cssm/presets/useSelectWithLoading/hook.js.map +1 -1
- package/cssm/typings.d.ts +9 -0
- package/desktop/Component.desktop.js +0 -2
- package/desktop/Component.desktop.js.map +1 -1
- package/esm/components/arrow/index.css +4 -4
- package/esm/components/arrow/index.module.css.js +1 -1
- package/esm/components/base-checkmark/Component.d.ts +2 -2
- package/esm/components/base-checkmark/Component.js +14 -7
- package/esm/components/base-checkmark/Component.js.map +1 -1
- package/esm/components/base-checkmark/index.css +32 -5
- package/esm/components/base-checkmark/index.module.css.js +1 -1
- package/esm/components/base-checkmark/index.module.css.js.map +1 -1
- package/esm/components/base-option/Component.js +4 -16
- package/esm/components/base-option/Component.js.map +1 -1
- package/esm/components/base-option/index.css +14 -20
- package/esm/components/base-option/index.module.css.js +1 -1
- package/esm/components/base-option/index.module.css.js.map +1 -1
- package/esm/components/base-select/index.css +11 -11
- package/esm/components/base-select/index.module.css.js +1 -1
- package/esm/components/base-select/mobile.css +11 -11
- package/esm/components/base-select/mobile.module.css.js +1 -1
- package/esm/components/checkmark/Component.d.ts +1 -1
- package/esm/components/checkmark/Component.js +3 -4
- package/esm/components/checkmark/Component.js.map +1 -1
- package/esm/components/checkmark/index.css +23 -31
- package/esm/components/checkmark/index.module.css.js +1 -1
- package/esm/components/checkmark/index.module.css.js.map +1 -1
- package/esm/components/checkmark-mobile/Component.d.ts +1 -1
- package/esm/components/checkmark-mobile/Component.js +2 -2
- package/esm/components/checkmark-mobile/Component.js.map +1 -1
- package/esm/components/checkmark-mobile/index.css +14 -7
- package/esm/components/checkmark-mobile/index.module.css.js +1 -1
- package/esm/components/checkmark-mobile/index.module.css.js.map +1 -1
- package/esm/components/clear-button/index.css +4 -4
- package/esm/components/clear-button/index.module.css.js +1 -1
- package/esm/components/field/Component.js +8 -25
- package/esm/components/field/Component.js.map +1 -1
- package/esm/components/field/index.css +13 -13
- package/esm/components/field/index.module.css.js +1 -1
- package/esm/components/footer/index.css +4 -4
- package/esm/components/footer/index.module.css.js +1 -1
- package/esm/components/optgroup/index.css +4 -4
- package/esm/components/optgroup/index.module.css.js +1 -1
- package/esm/components/option/Component.js +8 -4
- package/esm/components/option/Component.js.map +1 -1
- package/esm/components/option/desktop/index.css +19 -19
- package/esm/components/option/desktop/index.module.css.js +1 -1
- package/esm/components/option/mobile/index.css +16 -16
- package/esm/components/option/mobile/index.module.css.js +1 -1
- package/esm/components/options-list/index.css +13 -13
- package/esm/components/options-list/index.module.css.js +1 -1
- package/esm/components/search/index.css +1 -1
- package/esm/components/search/index.module.css.js +1 -1
- package/esm/components/virtual-options-list/index.css +13 -13
- package/esm/components/virtual-options-list/index.module.css.js +1 -1
- package/esm/desktop/Component.desktop.js +0 -2
- package/esm/desktop/Component.desktop.js.map +1 -1
- package/esm/mobile/Component.mobile.js +2 -3
- package/esm/mobile/Component.mobile.js.map +1 -1
- package/esm/presets/useLazyLoading/hook.js +0 -2
- package/esm/presets/useLazyLoading/hook.js.map +1 -1
- package/esm/presets/useSelectWithApply/hook.d.ts +7 -1
- package/esm/presets/useSelectWithApply/hook.js +9 -8
- package/esm/presets/useSelectWithApply/hook.js.map +1 -1
- package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
- package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css.js +1 -1
- package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.d.ts +1 -0
- package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +3 -3
- package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.js.map +1 -1
- package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.css +8 -4
- package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js +1 -1
- package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js.map +1 -1
- package/esm/presets/useSelectWithLoading/hook.js +0 -2
- package/esm/presets/useSelectWithLoading/hook.js.map +1 -1
- package/esm/presets/useSelectWithLoading/index.css +1 -1
- package/esm/presets/useSelectWithLoading/index.module.css.js +1 -1
- package/esm/typings.d.ts +9 -0
- package/mobile/Component.mobile.js +2 -3
- package/mobile/Component.mobile.js.map +1 -1
- package/modern/components/arrow/index.css +4 -4
- package/modern/components/arrow/index.module.css.js +1 -1
- package/modern/components/base-checkmark/Component.d.ts +2 -2
- package/modern/components/base-checkmark/Component.js +10 -6
- package/modern/components/base-checkmark/Component.js.map +1 -1
- package/modern/components/base-checkmark/index.css +32 -5
- package/modern/components/base-checkmark/index.module.css.js +1 -1
- package/modern/components/base-checkmark/index.module.css.js.map +1 -1
- package/modern/components/base-option/Component.js +4 -15
- package/modern/components/base-option/Component.js.map +1 -1
- package/modern/components/base-option/index.css +14 -20
- package/modern/components/base-option/index.module.css.js +1 -1
- package/modern/components/base-option/index.module.css.js.map +1 -1
- package/modern/components/base-select/index.css +11 -11
- package/modern/components/base-select/index.module.css.js +1 -1
- package/modern/components/base-select/mobile.css +11 -11
- package/modern/components/base-select/mobile.module.css.js +1 -1
- package/modern/components/checkmark/Component.d.ts +1 -1
- package/modern/components/checkmark/Component.js +3 -4
- package/modern/components/checkmark/Component.js.map +1 -1
- package/modern/components/checkmark/index.css +23 -31
- package/modern/components/checkmark/index.module.css.js +1 -1
- package/modern/components/checkmark/index.module.css.js.map +1 -1
- package/modern/components/checkmark-mobile/Component.d.ts +1 -1
- package/modern/components/checkmark-mobile/Component.js +1 -1
- package/modern/components/checkmark-mobile/Component.js.map +1 -1
- package/modern/components/checkmark-mobile/index.css +14 -7
- package/modern/components/checkmark-mobile/index.module.css.js +1 -1
- package/modern/components/checkmark-mobile/index.module.css.js.map +1 -1
- package/modern/components/clear-button/index.css +4 -4
- package/modern/components/clear-button/index.module.css.js +1 -1
- package/modern/components/field/Component.js +8 -25
- package/modern/components/field/Component.js.map +1 -1
- package/modern/components/field/index.css +13 -13
- package/modern/components/field/index.module.css.js +1 -1
- package/modern/components/footer/index.css +4 -4
- package/modern/components/footer/index.module.css.js +1 -1
- package/modern/components/optgroup/index.css +4 -4
- package/modern/components/optgroup/index.module.css.js +1 -1
- package/modern/components/option/Component.js +5 -3
- package/modern/components/option/Component.js.map +1 -1
- package/modern/components/option/desktop/index.css +19 -19
- package/modern/components/option/desktop/index.module.css.js +1 -1
- package/modern/components/option/mobile/index.css +16 -16
- package/modern/components/option/mobile/index.module.css.js +1 -1
- package/modern/components/options-list/index.css +13 -13
- package/modern/components/options-list/index.module.css.js +1 -1
- package/modern/components/search/index.css +1 -1
- package/modern/components/search/index.module.css.js +1 -1
- package/modern/components/virtual-options-list/index.css +13 -13
- package/modern/components/virtual-options-list/index.module.css.js +1 -1
- package/modern/desktop/Component.desktop.js +0 -2
- package/modern/desktop/Component.desktop.js.map +1 -1
- package/modern/mobile/Component.mobile.js +2 -3
- package/modern/mobile/Component.mobile.js.map +1 -1
- package/modern/presets/useLazyLoading/hook.js +0 -2
- package/modern/presets/useLazyLoading/hook.js.map +1 -1
- package/modern/presets/useSelectWithApply/hook.d.ts +7 -1
- package/modern/presets/useSelectWithApply/hook.js +3 -1
- package/modern/presets/useSelectWithApply/hook.js.map +1 -1
- package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
- package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css.js +1 -1
- package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.d.ts +1 -0
- package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.js +2 -2
- package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.js.map +1 -1
- package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.css +8 -4
- package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js +1 -1
- package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js.map +1 -1
- package/modern/presets/useSelectWithLoading/hook.js +0 -2
- package/modern/presets/useSelectWithLoading/hook.js.map +1 -1
- package/modern/presets/useSelectWithLoading/index.css +1 -1
- package/modern/presets/useSelectWithLoading/index.module.css.js +1 -1
- package/modern/typings.d.ts +9 -0
- package/moderncssm/components/base-checkmark/Component.d.ts +2 -2
- package/moderncssm/components/base-checkmark/Component.js +10 -6
- package/moderncssm/components/base-checkmark/Component.js.map +1 -1
- package/moderncssm/components/base-checkmark/index.module.css +32 -2
- package/moderncssm/components/base-option/Component.js +4 -15
- package/moderncssm/components/base-option/Component.js.map +1 -1
- package/moderncssm/components/base-option/index.module.css +0 -8
- package/moderncssm/components/checkmark/Component.d.ts +1 -1
- package/moderncssm/components/checkmark/Component.js +3 -4
- package/moderncssm/components/checkmark/Component.js.map +1 -1
- package/moderncssm/components/checkmark/index.module.css +19 -18
- package/moderncssm/components/checkmark-mobile/Component.d.ts +1 -1
- package/moderncssm/components/checkmark-mobile/Component.js +1 -1
- package/moderncssm/components/checkmark-mobile/Component.js.map +1 -1
- package/moderncssm/components/checkmark-mobile/index.module.css +8 -4
- package/moderncssm/components/field/Component.js +8 -25
- package/moderncssm/components/field/Component.js.map +1 -1
- package/moderncssm/components/option/Component.js +5 -3
- package/moderncssm/components/option/Component.js.map +1 -1
- package/moderncssm/desktop/Component.desktop.js +0 -2
- package/moderncssm/desktop/Component.desktop.js.map +1 -1
- package/moderncssm/mobile/Component.mobile.js +2 -3
- package/moderncssm/mobile/Component.mobile.js.map +1 -1
- package/moderncssm/presets/useLazyLoading/hook.js +0 -2
- package/moderncssm/presets/useLazyLoading/hook.js.map +1 -1
- package/moderncssm/presets/useSelectWithApply/hook.d.ts +7 -1
- package/moderncssm/presets/useSelectWithApply/hook.js +3 -1
- package/moderncssm/presets/useSelectWithApply/hook.js.map +1 -1
- package/moderncssm/presets/useSelectWithApply/options-list-with-apply/header/Component.d.ts +1 -0
- package/moderncssm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +2 -2
- package/moderncssm/presets/useSelectWithApply/options-list-with-apply/header/Component.js.map +1 -1
- package/moderncssm/presets/useSelectWithApply/options-list-with-apply/header/index.module.css +6 -1
- package/moderncssm/presets/useSelectWithLoading/hook.js +0 -2
- package/moderncssm/presets/useSelectWithLoading/hook.js.map +1 -1
- package/moderncssm/typings.d.ts +9 -0
- package/package.json +8 -9
- package/presets/useLazyLoading/hook.js +0 -2
- package/presets/useLazyLoading/hook.js.map +1 -1
- package/presets/useSelectWithApply/hook.d.ts +7 -1
- package/presets/useSelectWithApply/hook.js +9 -8
- package/presets/useSelectWithApply/hook.js.map +1 -1
- package/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
- package/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css.js +1 -1
- package/presets/useSelectWithApply/options-list-with-apply/header/Component.d.ts +1 -0
- package/presets/useSelectWithApply/options-list-with-apply/header/Component.js +3 -3
- package/presets/useSelectWithApply/options-list-with-apply/header/Component.js.map +1 -1
- package/presets/useSelectWithApply/options-list-with-apply/header/index.css +8 -4
- package/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js +1 -1
- package/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js.map +1 -1
- package/presets/useSelectWithLoading/hook.js +0 -2
- package/presets/useSelectWithLoading/hook.js.map +1 -1
- package/presets/useSelectWithLoading/index.css +1 -1
- package/presets/useSelectWithLoading/index.module.css.js +1 -1
- package/src/components/base-checkmark/Component.tsx +26 -9
- package/src/components/base-checkmark/index.module.css +30 -1
- package/src/components/base-option/Component.tsx +17 -27
- package/src/components/base-option/index.module.css +0 -8
- package/src/components/checkmark/Component.tsx +3 -13
- package/src/components/checkmark/index.module.css +17 -9
- package/src/components/checkmark-mobile/Component.tsx +2 -2
- package/src/components/checkmark-mobile/index.module.css +8 -4
- package/src/components/field/Component.tsx +12 -26
- package/src/components/option/Component.tsx +14 -17
- package/src/mobile/Component.mobile.tsx +2 -0
- package/src/presets/useSelectWithApply/hook.ts +9 -1
- package/src/presets/useSelectWithApply/options-list-with-apply/header/Component.tsx +4 -0
- package/src/presets/useSelectWithApply/options-list-with-apply/header/index.module.css +5 -1
- package/src/typings.ts +11 -0
- package/src/vars.css +3 -3
- package/typings.d.ts +9 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { type FC } from 'react';
|
|
2
2
|
import cn from 'classnames';
|
|
3
3
|
|
|
4
4
|
import { Checkbox } from '@alfalab/core-components-checkbox';
|
|
@@ -8,27 +8,44 @@ import { type CheckmarkProps } from '../../typings';
|
|
|
8
8
|
|
|
9
9
|
import styles from './index.module.css';
|
|
10
10
|
|
|
11
|
-
export const BaseCheckmark = ({
|
|
11
|
+
export const BaseCheckmark: FC<CheckmarkProps> = ({
|
|
12
12
|
selected,
|
|
13
13
|
disabled = false,
|
|
14
14
|
className,
|
|
15
15
|
multiple,
|
|
16
16
|
align = 'center',
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
position = 'before',
|
|
18
|
+
content,
|
|
19
|
+
}) => {
|
|
20
|
+
const renderCheckmarkIcon = () => (
|
|
21
|
+
<CheckmarkMIcon
|
|
22
|
+
className={cn(styles.singleIcon, styles[position], {
|
|
23
|
+
[styles.selected]: selected,
|
|
24
|
+
})}
|
|
25
|
+
/>
|
|
26
|
+
);
|
|
22
27
|
|
|
23
28
|
return multiple ? (
|
|
24
29
|
<Checkbox
|
|
30
|
+
block={true}
|
|
25
31
|
checked={selected}
|
|
26
32
|
disabled={disabled}
|
|
27
|
-
|
|
33
|
+
contentClassName={cn({ [styles.positionAfter]: position === 'after' })}
|
|
34
|
+
className={cn(styles.checkmark, styles[align], className, {
|
|
35
|
+
[styles.selected]: selected,
|
|
36
|
+
})}
|
|
28
37
|
size={24}
|
|
38
|
+
position={position}
|
|
39
|
+
label={content}
|
|
29
40
|
hiddenInput={true}
|
|
30
41
|
/>
|
|
31
42
|
) : (
|
|
32
|
-
<
|
|
43
|
+
<div className={cn(styles.container, styles[align], className)}>
|
|
44
|
+
{position === 'before' && renderCheckmarkIcon()}
|
|
45
|
+
|
|
46
|
+
<div className={styles.content}>{content}</div>
|
|
47
|
+
|
|
48
|
+
{position === 'after' && renderCheckmarkIcon()}
|
|
49
|
+
</div>
|
|
33
50
|
);
|
|
34
51
|
};
|
|
@@ -14,13 +14,42 @@
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
.
|
|
17
|
+
.positionAfter {
|
|
18
|
+
margin-left: unset;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.container {
|
|
18
22
|
display: flex;
|
|
19
23
|
align-items: center;
|
|
20
24
|
justify-content: center;
|
|
25
|
+
width: 100%;
|
|
26
|
+
|
|
27
|
+
&.start {
|
|
28
|
+
align-items: flex-start;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
&.center {
|
|
32
|
+
align-items: center;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.singleIcon {
|
|
37
|
+
flex-shrink: 0;
|
|
21
38
|
opacity: 0;
|
|
22
39
|
|
|
40
|
+
&.before {
|
|
41
|
+
margin-right: var(--gap-12);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
&.after {
|
|
45
|
+
margin-left: var(--gap-12);
|
|
46
|
+
}
|
|
47
|
+
|
|
23
48
|
&.selected {
|
|
24
49
|
opacity: 1;
|
|
25
50
|
}
|
|
26
51
|
}
|
|
52
|
+
|
|
53
|
+
.content {
|
|
54
|
+
flex: 1;
|
|
55
|
+
}
|
|
@@ -24,27 +24,8 @@ export const BaseOption: FC<OptionProps> = ({
|
|
|
24
24
|
}) => {
|
|
25
25
|
const content = children || option.content || option.key;
|
|
26
26
|
const { showCheckMark = true } = option;
|
|
27
|
-
|
|
28
27
|
const isTextContent = !isValidElement(content);
|
|
29
|
-
|
|
30
|
-
const renderCheckmark = () => {
|
|
31
|
-
if (Checkmark && showCheckMark) {
|
|
32
|
-
return (
|
|
33
|
-
<Checkmark
|
|
34
|
-
className={cn({
|
|
35
|
-
[styles.checkmarkBeforeContent]: checkmarkPosition === 'before',
|
|
36
|
-
[styles.checkmarkAfterContent]: checkmarkPosition === 'after',
|
|
37
|
-
})}
|
|
38
|
-
disabled={disabled}
|
|
39
|
-
selected={selected}
|
|
40
|
-
multiple={multiple}
|
|
41
|
-
align={align}
|
|
42
|
-
/>
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return null;
|
|
47
|
-
};
|
|
28
|
+
const showCheckmark = Checkmark && showCheckMark;
|
|
48
29
|
|
|
49
30
|
return (
|
|
50
31
|
<div
|
|
@@ -55,17 +36,26 @@ export const BaseOption: FC<OptionProps> = ({
|
|
|
55
36
|
[styles.disabled]: disabled,
|
|
56
37
|
[styles.textContent]: isTextContent,
|
|
57
38
|
[styles.mobile]: mobile,
|
|
58
|
-
[styles.checkmarkAfter]:
|
|
59
|
-
|
|
39
|
+
[styles.checkmarkAfter]:
|
|
40
|
+
showCheckmark && !isTextContent && checkmarkPosition === 'after',
|
|
41
|
+
[styles.checkmarkBefore]:
|
|
42
|
+
showCheckmark && !isTextContent && checkmarkPosition === 'before',
|
|
60
43
|
})}
|
|
61
44
|
data-test-id={dataTestId}
|
|
62
45
|
aria-label={option?.value?.name}
|
|
63
46
|
>
|
|
64
|
-
{
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
47
|
+
{showCheckmark ? (
|
|
48
|
+
<Checkmark
|
|
49
|
+
disabled={disabled}
|
|
50
|
+
selected={selected}
|
|
51
|
+
multiple={multiple}
|
|
52
|
+
align={align}
|
|
53
|
+
position={checkmarkPosition}
|
|
54
|
+
content={content}
|
|
55
|
+
/>
|
|
56
|
+
) : (
|
|
57
|
+
<div className={cn(styles.content)}>{content}</div>
|
|
58
|
+
)}
|
|
69
59
|
</div>
|
|
70
60
|
);
|
|
71
61
|
};
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import React, { useCallback } from 'react';
|
|
2
2
|
import cn from 'classnames';
|
|
3
3
|
|
|
4
|
-
import { Badge } from '@alfalab/core-components-badge';
|
|
5
4
|
import { Checkbox, type CheckboxProps } from '@alfalab/core-components-checkbox';
|
|
6
|
-
import { CheckmarkCircleMIcon } from '@alfalab/icons-glyph/CheckmarkCircleMIcon';
|
|
7
5
|
import CheckmarkMIcon from '@alfalab/icons-glyph/CheckmarkMIcon';
|
|
8
6
|
|
|
9
7
|
import { type CheckmarkProps } from '../../typings';
|
|
@@ -16,6 +14,7 @@ export const Checkmark = ({
|
|
|
16
14
|
className,
|
|
17
15
|
multiple,
|
|
18
16
|
position = 'before',
|
|
17
|
+
content,
|
|
19
18
|
}: CheckmarkProps) => {
|
|
20
19
|
const single = !multiple;
|
|
21
20
|
|
|
@@ -32,17 +31,7 @@ export const Checkmark = ({
|
|
|
32
31
|
|
|
33
32
|
return single ? (
|
|
34
33
|
<div className={checkmarkClassNames}>
|
|
35
|
-
{
|
|
36
|
-
<Badge
|
|
37
|
-
className={styles.after}
|
|
38
|
-
view='icon'
|
|
39
|
-
size='m'
|
|
40
|
-
iconColor='positive'
|
|
41
|
-
content={<CheckmarkCircleMIcon className={styles.colorIcon} />}
|
|
42
|
-
/>
|
|
43
|
-
) : (
|
|
44
|
-
<CheckmarkMIcon className={cn(styles.displayIcon)} />
|
|
45
|
-
)}
|
|
34
|
+
<CheckmarkMIcon className={cn(styles.displayIcon)} />
|
|
46
35
|
</div>
|
|
47
36
|
) : (
|
|
48
37
|
<Checkbox
|
|
@@ -50,6 +39,7 @@ export const Checkmark = ({
|
|
|
50
39
|
disabled={disabled}
|
|
51
40
|
className={checkmarkClassNames}
|
|
52
41
|
size={24}
|
|
42
|
+
label={content}
|
|
53
43
|
onClick={handleCheckboxClick}
|
|
54
44
|
/>
|
|
55
45
|
);
|
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
|
|
4
4
|
.checkmark {
|
|
5
5
|
flex-shrink: 0;
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
&.before {
|
|
8
|
+
display: var(--select-checkmark-before-display);
|
|
9
|
+
}
|
|
7
10
|
|
|
8
11
|
&.after {
|
|
9
|
-
|
|
12
|
+
display: var(--select-checkmark-after-display);
|
|
10
13
|
}
|
|
11
14
|
}
|
|
12
15
|
|
|
@@ -15,9 +18,6 @@
|
|
|
15
18
|
align-items: center;
|
|
16
19
|
justify-content: center;
|
|
17
20
|
opacity: var(--select-checkmark-unselected-opacity);
|
|
18
|
-
background: var(--select-checkmark-background);
|
|
19
|
-
background-size: cover;
|
|
20
|
-
border-radius: var(--select-checkmark-border-radius);
|
|
21
21
|
width: var(--select-checkmark-size);
|
|
22
22
|
height: var(--select-checkmark-size);
|
|
23
23
|
|
|
@@ -26,13 +26,15 @@
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
&.multiple {
|
|
29
|
+
.multiple {
|
|
30
|
+
&.before {
|
|
33
31
|
margin-right: var(--gap-12);
|
|
34
32
|
display: var(--select-checkmark-before-display-multiple);
|
|
35
33
|
}
|
|
34
|
+
|
|
35
|
+
&.after {
|
|
36
|
+
margin-left: var(--gap-12);
|
|
37
|
+
}
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
.after.after {
|
|
@@ -46,3 +48,9 @@
|
|
|
46
48
|
.colorIcon {
|
|
47
49
|
color: var(--color-light-status-positive);
|
|
48
50
|
}
|
|
51
|
+
|
|
52
|
+
.displayIcon {
|
|
53
|
+
display: block;
|
|
54
|
+
width: 100%;
|
|
55
|
+
height: 100%;
|
|
56
|
+
}
|
|
@@ -7,9 +7,9 @@ import { type CheckmarkProps } from '../../typings';
|
|
|
7
7
|
|
|
8
8
|
import styles from './index.module.css';
|
|
9
9
|
|
|
10
|
-
export const Checkmark = ({ selected, className }: CheckmarkProps) => (
|
|
10
|
+
export const Checkmark = ({ selected, className, position = 'after' }: CheckmarkProps) => (
|
|
11
11
|
<div
|
|
12
|
-
className={cn(styles.checkmark, className, {
|
|
12
|
+
className={cn(styles.checkmark, className, styles[position], {
|
|
13
13
|
[styles.selected]: selected,
|
|
14
14
|
})}
|
|
15
15
|
>
|
|
@@ -10,13 +10,17 @@
|
|
|
10
10
|
height: 24px;
|
|
11
11
|
opacity: 0;
|
|
12
12
|
|
|
13
|
-
&:first-child {
|
|
14
|
-
display: none;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
13
|
&.selected {
|
|
18
14
|
opacity: 1;
|
|
19
15
|
}
|
|
16
|
+
|
|
17
|
+
&.before {
|
|
18
|
+
margin-right: var(--gap-8);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
&.after {
|
|
22
|
+
margin-left: var(--gap-8);
|
|
23
|
+
}
|
|
20
24
|
}
|
|
21
25
|
|
|
22
26
|
.displayIcon {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import React, { type ElementType, useCallback, useRef, useState } from 'react';
|
|
1
|
+
import React, { type ElementType, Fragment, useCallback, useRef, useState } from 'react';
|
|
2
2
|
import cn from 'classnames';
|
|
3
3
|
|
|
4
4
|
import { type FormControlProps } from '@alfalab/core-components-form-control';
|
|
5
|
-
import {
|
|
5
|
+
import { LockIcon } from '@alfalab/core-components-input/shared';
|
|
6
6
|
import { getDataTestId } from '@alfalab/core-components-shared';
|
|
7
7
|
import { useFocus } from '@alfalab/hooks';
|
|
8
8
|
|
|
@@ -70,35 +70,21 @@ export const Field = ({
|
|
|
70
70
|
* [1] - Indicators (eye, calendar, chevron, stepper e.g.)
|
|
71
71
|
* [0] - Lock
|
|
72
72
|
*/
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
predicate: clear && filled && !disabled,
|
|
77
|
-
render: () => (
|
|
73
|
+
const renderRightAddons = () => (
|
|
74
|
+
<Fragment>
|
|
75
|
+
{clear && filled && !disabled && (
|
|
78
76
|
<ClearButton
|
|
79
77
|
onClick={onClear}
|
|
80
78
|
disabled={disabled}
|
|
81
79
|
dataTestId={getDataTestId(dataTestId, 'clear-icon')}
|
|
82
80
|
size={size}
|
|
83
81
|
/>
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
priority: 1,
|
|
93
|
-
predicate: Boolean(Arrow) && !disabled,
|
|
94
|
-
render: () => Arrow && React.cloneElement(Arrow, { className: styles.arrow }),
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
priority: 0,
|
|
98
|
-
predicate: disabled,
|
|
99
|
-
render: () => <LockIcon colors={colors} size={size} />,
|
|
100
|
-
},
|
|
101
|
-
]);
|
|
82
|
+
)}
|
|
83
|
+
{rightAddons}
|
|
84
|
+
{!disabled && Arrow && React.cloneElement(Arrow, { className: styles.arrow })}
|
|
85
|
+
{disabled && <LockIcon colors={colors} size={size} />}
|
|
86
|
+
</Fragment>
|
|
87
|
+
);
|
|
102
88
|
|
|
103
89
|
return (
|
|
104
90
|
<div
|
|
@@ -123,7 +109,7 @@ export const Field = ({
|
|
|
123
109
|
labelView={labelView}
|
|
124
110
|
error={error}
|
|
125
111
|
hint={hint}
|
|
126
|
-
rightAddons={
|
|
112
|
+
rightAddons={renderRightAddons()}
|
|
127
113
|
data-test-id={dataTestId}
|
|
128
114
|
{...restProps}
|
|
129
115
|
{...innerProps}
|
|
@@ -28,6 +28,7 @@ export const OptionBase: FC<OptionCommonProps & OptionPrivateProps> = ({
|
|
|
28
28
|
multiple,
|
|
29
29
|
mobile,
|
|
30
30
|
Checkmark,
|
|
31
|
+
checkmarkPosition = multiple ? 'before' : 'after',
|
|
31
32
|
innerProps,
|
|
32
33
|
dataTestId,
|
|
33
34
|
styles,
|
|
@@ -35,6 +36,17 @@ export const OptionBase: FC<OptionCommonProps & OptionPrivateProps> = ({
|
|
|
35
36
|
const content = children || option.content || option.key;
|
|
36
37
|
const { showCheckMark = true } = option;
|
|
37
38
|
|
|
39
|
+
const renderCheckmark = (position: 'before' | 'after') =>
|
|
40
|
+
Checkmark &&
|
|
41
|
+
showCheckMark && (
|
|
42
|
+
<Checkmark
|
|
43
|
+
disabled={disabled}
|
|
44
|
+
selected={selected}
|
|
45
|
+
multiple={multiple}
|
|
46
|
+
position={position}
|
|
47
|
+
/>
|
|
48
|
+
);
|
|
49
|
+
|
|
38
50
|
return (
|
|
39
51
|
<div
|
|
40
52
|
{...innerProps}
|
|
@@ -45,14 +57,7 @@ export const OptionBase: FC<OptionCommonProps & OptionPrivateProps> = ({
|
|
|
45
57
|
})}
|
|
46
58
|
data-test-id={dataTestId}
|
|
47
59
|
>
|
|
48
|
-
{
|
|
49
|
-
<Checkmark
|
|
50
|
-
disabled={disabled}
|
|
51
|
-
selected={selected}
|
|
52
|
-
multiple={multiple}
|
|
53
|
-
position='before'
|
|
54
|
-
/>
|
|
55
|
-
)}
|
|
60
|
+
{checkmarkPosition === 'before' && renderCheckmark('before')}
|
|
56
61
|
|
|
57
62
|
<div
|
|
58
63
|
className={cn(styles.content, {
|
|
@@ -62,15 +67,7 @@ export const OptionBase: FC<OptionCommonProps & OptionPrivateProps> = ({
|
|
|
62
67
|
{content}
|
|
63
68
|
</div>
|
|
64
69
|
|
|
65
|
-
{
|
|
66
|
-
{Checkmark && showCheckMark && (
|
|
67
|
-
<Checkmark
|
|
68
|
-
disabled={disabled}
|
|
69
|
-
selected={selected}
|
|
70
|
-
multiple={multiple}
|
|
71
|
-
position='after'
|
|
72
|
-
/>
|
|
73
|
-
)}
|
|
70
|
+
{checkmarkPosition === 'after' && renderCheckmark('after')}
|
|
74
71
|
</div>
|
|
75
72
|
);
|
|
76
73
|
};
|
|
@@ -49,6 +49,7 @@ export const SelectMobile = forwardRef(
|
|
|
49
49
|
showClear = true,
|
|
50
50
|
showSelectAll,
|
|
51
51
|
showHeaderWithSelectAll,
|
|
52
|
+
checkmarkPosition = 'before',
|
|
52
53
|
useWithApplyHook = multiple,
|
|
53
54
|
showSearch,
|
|
54
55
|
searchProps,
|
|
@@ -69,6 +70,7 @@ export const SelectMobile = forwardRef(
|
|
|
69
70
|
onChange,
|
|
70
71
|
showClear,
|
|
71
72
|
showSelectAll,
|
|
73
|
+
checkmarkPosition,
|
|
72
74
|
});
|
|
73
75
|
|
|
74
76
|
const bottomAddons = (flatOptions: OptionShape[]) =>
|
|
@@ -80,6 +80,12 @@ export type UseSelectWithApplyProps = {
|
|
|
80
80
|
* @default 'reset-footer'
|
|
81
81
|
*/
|
|
82
82
|
resetName?: string;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Позиция чекбокса "Выбрать все" в Header
|
|
86
|
+
* @default 'before'
|
|
87
|
+
*/
|
|
88
|
+
checkmarkPosition?: 'before' | 'after';
|
|
83
89
|
};
|
|
84
90
|
|
|
85
91
|
const selectAllOption = { key: SELECT_ALL_KEY, content: 'Выбрать все' };
|
|
@@ -94,6 +100,7 @@ export function useSelectWithApply({
|
|
|
94
100
|
showClear = true,
|
|
95
101
|
showSelectAll = false,
|
|
96
102
|
showHeaderWithSelectAll = false,
|
|
103
|
+
checkmarkPosition = 'before',
|
|
97
104
|
showSearch = false,
|
|
98
105
|
searchProps = {},
|
|
99
106
|
applyName = 'apply-footer',
|
|
@@ -134,7 +141,6 @@ export function useSelectWithApply({
|
|
|
134
141
|
),
|
|
135
142
|
[options, selected, showSearch, filterGroup, filterFn, accessor, search, groupAccessor],
|
|
136
143
|
);
|
|
137
|
-
|
|
138
144
|
const [selectedDraft, setSelectedDraft] = useState<OptionShape[]>(selectedOptions);
|
|
139
145
|
|
|
140
146
|
const selectedOptionsRef = useRef<OptionShape[]>(selectedOptions);
|
|
@@ -233,6 +239,7 @@ export function useSelectWithApply({
|
|
|
233
239
|
selectedDraft.length === flatOptions.length ||
|
|
234
240
|
flatOptions.every(({ key }) => selectedKeys.includes(key)),
|
|
235
241
|
onChange: handleToggleAll,
|
|
242
|
+
checkmarkPosition,
|
|
236
243
|
},
|
|
237
244
|
},
|
|
238
245
|
multiple: true,
|
|
@@ -257,6 +264,7 @@ export function useSelectWithApply({
|
|
|
257
264
|
showClear,
|
|
258
265
|
showSelectAll,
|
|
259
266
|
showHeaderWithSelectAll,
|
|
267
|
+
checkmarkPosition,
|
|
260
268
|
showSearch,
|
|
261
269
|
searchProps,
|
|
262
270
|
applyName,
|
|
@@ -13,6 +13,7 @@ export type HeaderProps = {
|
|
|
13
13
|
onChange?: CheckboxProps['onChange'];
|
|
14
14
|
mobile?: boolean;
|
|
15
15
|
dataTestId?: string;
|
|
16
|
+
checkmarkPosition?: 'before' | 'after';
|
|
16
17
|
size?: OptionsListProps['size'];
|
|
17
18
|
};
|
|
18
19
|
|
|
@@ -23,6 +24,7 @@ export const Header: React.FC<HeaderProps> = ({
|
|
|
23
24
|
mobile,
|
|
24
25
|
dataTestId,
|
|
25
26
|
size,
|
|
27
|
+
checkmarkPosition = 'before',
|
|
26
28
|
}) => (
|
|
27
29
|
<div
|
|
28
30
|
className={cn(size && styles[`size-${size}`], {
|
|
@@ -38,6 +40,8 @@ export const Header: React.FC<HeaderProps> = ({
|
|
|
38
40
|
checked={checked}
|
|
39
41
|
label='Выбрать все'
|
|
40
42
|
dataTestId={dataTestId}
|
|
43
|
+
position={checkmarkPosition}
|
|
44
|
+
contentClassName={cn({ [styles.positionAfter]: checkmarkPosition === 'after' })}
|
|
41
45
|
/>
|
|
42
46
|
</div>
|
|
43
47
|
);
|
package/src/typings.ts
CHANGED
|
@@ -853,6 +853,11 @@ export type CheckmarkProps = {
|
|
|
853
853
|
*/
|
|
854
854
|
position?: 'before' | 'after';
|
|
855
855
|
|
|
856
|
+
/**
|
|
857
|
+
* Дополнительный контент
|
|
858
|
+
*/
|
|
859
|
+
content?: ReactNode;
|
|
860
|
+
|
|
856
861
|
/**
|
|
857
862
|
* Иконка выбранного пункта
|
|
858
863
|
*/
|
|
@@ -888,6 +893,12 @@ export type AdditionalMobileProps = {
|
|
|
888
893
|
* Использовать ли хук useSelectWithApply в мобильном компоненте
|
|
889
894
|
*/
|
|
890
895
|
useWithApplyHook?: boolean;
|
|
896
|
+
|
|
897
|
+
/**
|
|
898
|
+
* Позиция чекбокса "Выбрать все" в Header
|
|
899
|
+
* @default 'before'
|
|
900
|
+
*/
|
|
901
|
+
checkmarkPosition?: 'before' | 'after';
|
|
891
902
|
};
|
|
892
903
|
|
|
893
904
|
export type BottomSheetSelectMobileProps = {
|
package/src/vars.css
CHANGED
|
@@ -37,11 +37,11 @@
|
|
|
37
37
|
|
|
38
38
|
--select-checkmark-margin: var(--gap-0) var(--gap-8) var(--gap-0) var(--gap-0);
|
|
39
39
|
--select-checkmark-margin-after: var(--select-checkmark-margin);
|
|
40
|
-
--select-checkmark-size:
|
|
41
|
-
--select-checkmark-before-display:
|
|
40
|
+
--select-checkmark-size: 24px;
|
|
41
|
+
--select-checkmark-before-display: flex;
|
|
42
42
|
--select-checkmark-after-display: none;
|
|
43
43
|
--select-checkmark-before-display-multiple: block;
|
|
44
|
-
--select-checkmark-after-display-single:
|
|
44
|
+
--select-checkmark-after-display-single: flex;
|
|
45
45
|
--select-checkmark-unselected-opacity: 0;
|
|
46
46
|
--select-checkmark-background: var(--color-light-neutral-translucent-1300);
|
|
47
47
|
--select-checkmark-border-radius: var(--border-radius-circle);
|
package/typings.d.ts
CHANGED
|
@@ -669,6 +669,10 @@ export declare type CheckmarkProps = {
|
|
|
669
669
|
* Расположение отметки
|
|
670
670
|
*/
|
|
671
671
|
position?: 'before' | 'after';
|
|
672
|
+
/**
|
|
673
|
+
* Дополнительный контент
|
|
674
|
+
*/
|
|
675
|
+
content?: ReactNode;
|
|
672
676
|
/**
|
|
673
677
|
* Иконка выбранного пункта
|
|
674
678
|
*/
|
|
@@ -697,6 +701,11 @@ export declare type AdditionalMobileProps = {
|
|
|
697
701
|
* Использовать ли хук useSelectWithApply в мобильном компоненте
|
|
698
702
|
*/
|
|
699
703
|
useWithApplyHook?: boolean;
|
|
704
|
+
/**
|
|
705
|
+
* Позиция чекбокса "Выбрать все" в Header
|
|
706
|
+
* @default 'before'
|
|
707
|
+
*/
|
|
708
|
+
checkmarkPosition?: 'before' | 'after';
|
|
700
709
|
};
|
|
701
710
|
export declare type BottomSheetSelectMobileProps = {
|
|
702
711
|
/**
|