@companix/uikit 0.0.36 → 0.0.37
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/Avatar/Avatar.scss +64 -0
- package/dist/Avatar/helpers.d.ts +10 -0
- package/dist/Avatar/index.d.ts +8 -0
- package/dist/Avatar/types.d.ts +2 -0
- package/dist/Button/Button.scss +128 -0
- package/dist/Button/index.d.ts +21 -0
- package/dist/ButtonGroup/ButtonGroup.scss +18 -0
- package/dist/ButtonGroup/index.d.ts +6 -0
- package/dist/Calendar/Calendar.d.ts +14 -0
- package/dist/Calendar/Calendar.scss +125 -0
- package/dist/Calendar/CalendarHeader.d.ts +10 -0
- package/dist/Checkbox/Checkbox.scss +115 -0
- package/dist/Checkbox/index.d.ts +10 -0
- package/dist/Countdown/index.d.ts +6 -0
- package/dist/DateInput/DateInput.scss +11 -0
- package/dist/DateInput/index.d.ts +13 -0
- package/dist/DatePicker/index.d.ts +9 -0
- package/dist/Dialog/Dialog.scss +25 -0
- package/dist/Dialog/Popup.scss +55 -0
- package/dist/Dialog/index.d.ts +16 -0
- package/dist/DialogAlert/Alert.d.ts +19 -0
- package/dist/DialogAlert/Alert.scss +52 -0
- package/dist/DialogAlert/Viewport.d.ts +8 -0
- package/dist/DialogAlert/index.d.ts +11 -0
- package/dist/Drawer/Drawer.scss +112 -0
- package/dist/Drawer/index.d.ts +13 -0
- package/dist/File/index.d.ts +10 -0
- package/dist/FormGroup/FormGroup.scss +32 -0
- package/dist/FormGroup/index.d.ts +9 -0
- package/dist/Icon/icon.scss +18 -0
- package/dist/Icon/index.d.ts +7 -0
- package/dist/Input/Form.scss +67 -0
- package/dist/Input/InlineInput.d.ts +0 -0
- package/dist/Input/Input.d.ts +14 -0
- package/dist/Input/Input.scss +47 -0
- package/dist/Input/InputContainer.d.ts +11 -0
- package/dist/Input/InputElement.d.ts +9 -0
- package/dist/LoadingButton/index.d.ts +5 -0
- package/dist/NumberInput/index.d.ts +23 -0
- package/dist/OptionItem/Option.scss +89 -0
- package/dist/OptionItem/OptionItem.d.ts +6 -0
- package/dist/OptionItem/OptionsList.d.ts +7 -0
- package/dist/Popover/Popover.scss +80 -0
- package/dist/Popover/index.d.ts +27 -0
- package/dist/Progress/Progress.scss +47 -0
- package/dist/Progress/index.d.ts +5 -0
- package/dist/Radio/Radio.scss +148 -0
- package/dist/Radio/index.d.ts +20 -0
- package/dist/Scrollable/ImitateScroll.d.ts +10 -0
- package/dist/Scrollable/Scrollable.scss +50 -0
- package/dist/Scrollable/index.d.ts +33 -0
- package/dist/Segments/Segments.scss +57 -0
- package/dist/Segments/index.d.ts +11 -0
- package/dist/Select/Select.scss +80 -0
- package/dist/Select/SelectInput.d.ts +15 -0
- package/dist/Select/SelectOptions.d.ts +12 -0
- package/dist/Select/SelectRight.d.ts +8 -0
- package/dist/Select/index.d.ts +24 -0
- package/dist/SelectTags/SelectTags.scss +67 -0
- package/dist/SelectTags/index.d.ts +17 -0
- package/dist/Spinner/Spinner.scss +14 -0
- package/dist/Spinner/index.d.ts +7 -0
- package/dist/Switch/Switch.scss +102 -0
- package/dist/Switch/index.d.ts +10 -0
- package/dist/Tabs/Tabs.scss +58 -0
- package/dist/Tabs/index.d.ts +13 -0
- package/dist/TextArea/TextArea.scss +34 -0
- package/dist/TextArea/index.d.ts +7 -0
- package/dist/ThemeProvider/helpers.d.ts +4 -0
- package/dist/ThemeProvider/index.d.ts +12 -0
- package/dist/ThemeProvider/script.d.ts +8 -0
- package/dist/ThemeProvider/types.d.ts +2 -0
- package/dist/TimePicker/index.d.ts +10 -0
- package/dist/Toaster/Toast.d.ts +15 -0
- package/dist/Toaster/Toaster.scss +155 -0
- package/dist/Toaster/Viewport.d.ts +13 -0
- package/dist/Toaster/index.d.ts +20 -0
- package/dist/Tooltip/Tooltip.scss +28 -0
- package/dist/Tooltip/index.d.ts +7 -0
- package/dist/__helpers/createDialogRegistry.d.ts +26 -0
- package/dist/__helpers/createPopoversRegistry.d.ts +19 -0
- package/dist/__hooks/use-frooze-closing.d.ts +5 -0
- package/dist/__hooks/use-input-padding.d.ts +5 -0
- package/dist/__hooks/use-loading.d.ts +8 -0
- package/dist/__hooks/use-local-storage.d.ts +1 -0
- package/dist/__hooks/use-popover-position.d.ts +8 -0
- package/dist/__hooks/use-previos.d.ts +2 -0
- package/dist/__hooks/use-resize.d.ts +3 -0
- package/dist/__hooks/use-scrollbox.d.ts +7 -0
- package/dist/__hooks/use-update.d.ts +1 -0
- package/dist/__hooks/useCalendar.d.ts +17 -0
- package/dist/__hooks/useCalendarOptions-copy.d.ts +22 -0
- package/dist/__hooks/useCalendarOptions.d.ts +31 -0
- package/dist/__libs/calendar.d.ts +25 -0
- package/dist/__utils/RemoveListener.d.ts +3 -0
- package/dist/__utils/utils.d.ts +39 -0
- package/dist/bundle.es.js +88 -0
- package/dist/bundle.es10.js +82 -0
- package/dist/bundle.es11.js +28 -0
- package/dist/bundle.es12.js +77 -0
- package/dist/bundle.es13.js +43 -0
- package/dist/bundle.es14.js +38 -0
- package/dist/bundle.es15.js +58 -0
- package/dist/bundle.es16.js +23 -0
- package/dist/bundle.es17.js +35 -0
- package/dist/bundle.es18.js +27 -0
- package/dist/bundle.es19.js +47 -0
- package/dist/bundle.es2.js +44 -0
- package/dist/bundle.es20.js +25 -0
- package/dist/bundle.es21.js +31 -0
- package/dist/bundle.es22.js +40 -0
- package/dist/bundle.es23.js +18 -0
- package/dist/bundle.es24.js +36 -0
- package/dist/bundle.es25.js +23 -0
- package/dist/bundle.es26.js +44 -0
- package/dist/bundle.es27.js +117 -0
- package/dist/bundle.es28.js +123 -0
- package/dist/bundle.es29.js +76 -0
- package/dist/bundle.es3.js +4 -0
- package/dist/bundle.es30.js +35 -0
- package/dist/bundle.es31.js +14 -0
- package/dist/bundle.es32.js +88 -0
- package/dist/bundle.es33.js +22 -0
- package/dist/bundle.es34.js +9 -0
- package/dist/bundle.es35.js +37 -0
- package/dist/bundle.es36.js +24 -0
- package/dist/bundle.es37.js +13 -0
- package/dist/bundle.es38.js +27 -0
- package/dist/bundle.es39.js +41 -0
- package/dist/bundle.es4.js +47 -0
- package/dist/bundle.es40.js +53 -0
- package/dist/bundle.es41.js +45 -0
- package/dist/bundle.es42.js +11 -0
- package/dist/bundle.es43.js +27 -0
- package/dist/bundle.es44.js +26 -0
- package/dist/bundle.es45.js +89 -0
- package/dist/bundle.es46.js +20 -0
- package/dist/bundle.es47.js +22 -0
- package/dist/bundle.es48.js +26 -0
- package/dist/bundle.es49.js +41 -0
- package/dist/bundle.es5.js +10 -0
- package/dist/bundle.es50.js +7 -0
- package/dist/bundle.es51.js +16 -0
- package/dist/bundle.es52.js +16 -0
- package/dist/bundle.es53.js +72 -0
- package/dist/bundle.es54.js +70 -0
- package/dist/bundle.es55.js +72 -0
- package/dist/bundle.es56.js +13 -0
- package/dist/bundle.es57.js +45 -0
- package/dist/bundle.es58.js +17 -0
- package/dist/bundle.es59.js +34 -0
- package/dist/bundle.es6.js +13 -0
- package/dist/bundle.es60.js +72 -0
- package/dist/bundle.es61.js +16 -0
- package/dist/bundle.es62.js +77 -0
- package/dist/bundle.es63.js +51 -0
- package/dist/bundle.es64.js +16 -0
- package/dist/bundle.es7.js +87 -0
- package/dist/bundle.es8.js +87 -0
- package/dist/bundle.es9.js +24 -0
- package/dist/css-properties.scss +120 -0
- package/dist/index.d.ts +77 -0
- package/dist/index.scss +28 -0
- package/dist/mixins.scss +102 -0
- package/dist/theme.scss +101 -0
- package/dist/types.d.ts +17 -0
- package/package.json +6 -6
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type Align = 'start' | 'center' | 'end';
|
|
2
|
+
export type Side = 'top' | 'right' | 'bottom' | 'left';
|
|
3
|
+
export interface PopoverProps {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
content: ({ close }: {
|
|
6
|
+
close: () => void;
|
|
7
|
+
}) => React.ReactNode;
|
|
8
|
+
open?: boolean;
|
|
9
|
+
triggerRef?: React.Ref<HTMLButtonElement>;
|
|
10
|
+
triggerProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;
|
|
11
|
+
onOpenChange?: (open: boolean) => void;
|
|
12
|
+
onAnimationEnd?: () => void;
|
|
13
|
+
onAnimationStart?: () => void;
|
|
14
|
+
onOpenAutoFocus?: (event: Event) => void;
|
|
15
|
+
onCloseAutoFocus?: (event: Event) => void;
|
|
16
|
+
side?: Side;
|
|
17
|
+
align?: Align;
|
|
18
|
+
showArrows?: boolean;
|
|
19
|
+
minimal?: boolean;
|
|
20
|
+
sideOffset?: number;
|
|
21
|
+
matchTarget?: 'width' | 'min-width';
|
|
22
|
+
className?: string;
|
|
23
|
+
fitMaxHeight?: boolean;
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
zIndex?: number;
|
|
26
|
+
}
|
|
27
|
+
export declare const Popover: import('react').ForwardRefExoticComponent<PopoverProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
@use '../mixins.scss';
|
|
2
|
+
|
|
3
|
+
.progress-bar {
|
|
4
|
+
@include mixins.use-styles(progress);
|
|
5
|
+
|
|
6
|
+
display: block;
|
|
7
|
+
overflow: hidden;
|
|
8
|
+
position: relative;
|
|
9
|
+
border-radius: 100px;
|
|
10
|
+
width: 100%;
|
|
11
|
+
|
|
12
|
+
&-thumb {
|
|
13
|
+
animation: linear-progress-bar-stripes 0.3s linear infinite reverse;
|
|
14
|
+
background: linear-gradient(
|
|
15
|
+
-45deg,
|
|
16
|
+
hsla(0, 0%, 100%, 0.2) 25%,
|
|
17
|
+
transparent 0,
|
|
18
|
+
transparent 50%,
|
|
19
|
+
hsla(0, 0%, 100%, 0.2) 0,
|
|
20
|
+
hsla(0, 0%, 100%, 0.2) 75%,
|
|
21
|
+
transparent 0
|
|
22
|
+
);
|
|
23
|
+
background-size: 30px 30px;
|
|
24
|
+
border-radius: 40px;
|
|
25
|
+
height: 100%;
|
|
26
|
+
position: absolute;
|
|
27
|
+
transition: width 0.2s cubic-bezier(0.4, 1, 0.75, 0.9);
|
|
28
|
+
width: 100%;
|
|
29
|
+
|
|
30
|
+
@include mixins.use-styles(progress, thumb);
|
|
31
|
+
|
|
32
|
+
@each $appearance, $v in mixins.$appearances {
|
|
33
|
+
&[data-appearance='#{$appearance}'] {
|
|
34
|
+
@include mixins.use-styles(progress, thumb, $appearance);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@keyframes linear-progress-bar-stripes {
|
|
41
|
+
0% {
|
|
42
|
+
background-position: 0 0;
|
|
43
|
+
}
|
|
44
|
+
to {
|
|
45
|
+
background-position: 30px 0;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
@use '../mixins.scss';
|
|
2
|
+
|
|
3
|
+
.radio {
|
|
4
|
+
display: inline-table;
|
|
5
|
+
-webkit-user-select: none;
|
|
6
|
+
-moz-user-select: none;
|
|
7
|
+
-ms-user-select: none;
|
|
8
|
+
user-select: none;
|
|
9
|
+
-webkit-tap-highlight-color: transparent;
|
|
10
|
+
-ms-touch-action: manipulation;
|
|
11
|
+
touch-action: manipulation;
|
|
12
|
+
max-width: max-content;
|
|
13
|
+
|
|
14
|
+
@include mixins.use-styles(radio);
|
|
15
|
+
|
|
16
|
+
&:not([data-required]):not([data-disabled]):hover {
|
|
17
|
+
.radio-box[data-state='unchecked'] {
|
|
18
|
+
@include mixins.use-styles(radio, box, hover);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&:not([data-required]):not([data-disabled]):active {
|
|
23
|
+
.radio-box[data-state='unchecked'] {
|
|
24
|
+
@include mixins.use-styles(radio, box, active);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
&[data-disabled] {
|
|
29
|
+
@include mixins.use-styles(radio, disabled);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&[data-required] {
|
|
33
|
+
@include mixins.use-styles(radio, required);
|
|
34
|
+
|
|
35
|
+
.radio-box {
|
|
36
|
+
&::before {
|
|
37
|
+
content: ' ';
|
|
38
|
+
position: absolute;
|
|
39
|
+
width: 100%;
|
|
40
|
+
height: 100%;
|
|
41
|
+
left: 0;
|
|
42
|
+
|
|
43
|
+
@include mixins.use-styles(radio, required, box);
|
|
44
|
+
border-radius: mixins.get-var-name(radio, box, border-radius);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&[data-size='sm'] {
|
|
50
|
+
@include mixins.use-styles(radio, size, sm);
|
|
51
|
+
|
|
52
|
+
.radio-box {
|
|
53
|
+
@include mixins.use-size(radio, size, sm, box);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.radio-mark {
|
|
57
|
+
@include mixins.use-size(radio, size, sm, mark);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
&[data-size='md'] {
|
|
62
|
+
@include mixins.use-styles(radio, size, md);
|
|
63
|
+
|
|
64
|
+
.radio-box {
|
|
65
|
+
@include mixins.use-size(radio, size, md, box);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.radio-mark {
|
|
69
|
+
@include mixins.use-size(radio, size, md, mark);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&-box {
|
|
74
|
+
cursor: pointer;
|
|
75
|
+
outline: none;
|
|
76
|
+
transition: background-color 0.1s linear;
|
|
77
|
+
position: relative;
|
|
78
|
+
display: flex;
|
|
79
|
+
align-items: center;
|
|
80
|
+
justify-content: center;
|
|
81
|
+
|
|
82
|
+
@include mixins.use-styles(radio, box);
|
|
83
|
+
|
|
84
|
+
&[data-disabled] {
|
|
85
|
+
cursor: default;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&:after {
|
|
89
|
+
visibility: hidden;
|
|
90
|
+
content: '\00A0';
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
&[data-state='checked'] {
|
|
94
|
+
@include mixins.use-styles(radio, box, checked);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
&-mark {
|
|
99
|
+
position: absolute;
|
|
100
|
+
@include mixins.use-styles(radio, mark);
|
|
101
|
+
|
|
102
|
+
&[data-state='checked'] {
|
|
103
|
+
@include mixins.use-styles(radio, mark, in);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
&[data-state='unchecked'] {
|
|
107
|
+
@include mixins.use-styles(radio, mark, out);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
&-label {
|
|
112
|
+
cursor: pointer;
|
|
113
|
+
display: table-cell;
|
|
114
|
+
word-break: break-word;
|
|
115
|
+
|
|
116
|
+
&[data-disabled] {
|
|
117
|
+
cursor: default;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@include mixins.use-styles(radio, label);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.radio-group {
|
|
125
|
+
display: flex;
|
|
126
|
+
flex-direction: column;
|
|
127
|
+
@include mixins.use-styles(radio, group);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// .radio-icon {
|
|
131
|
+
// width: 16px;
|
|
132
|
+
// height: 16px;
|
|
133
|
+
// background-color: transparent;
|
|
134
|
+
// border: 1px solid #ffffff75;
|
|
135
|
+
// border-radius: 100px;
|
|
136
|
+
|
|
137
|
+
// &[data-checked] {
|
|
138
|
+
// background-color: #fff;
|
|
139
|
+
// }
|
|
140
|
+
// }
|
|
141
|
+
|
|
142
|
+
// .radio {
|
|
143
|
+
// display: flex;
|
|
144
|
+
// align-items: center;
|
|
145
|
+
// outline: none;
|
|
146
|
+
// cursor: pointer;
|
|
147
|
+
// gap: 6px;
|
|
148
|
+
// }
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface RadioOption<T> {
|
|
2
|
+
value: T;
|
|
3
|
+
label: React.ReactNode;
|
|
4
|
+
}
|
|
5
|
+
export interface RadioGroupProps<T> {
|
|
6
|
+
options: RadioOption<T>[];
|
|
7
|
+
onChange: (event: T) => void;
|
|
8
|
+
value: T | null;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
required?: boolean;
|
|
11
|
+
size?: 'sm' | 'md';
|
|
12
|
+
}
|
|
13
|
+
export declare const RadioGroup: <T extends string>(props: RadioGroupProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
interface RadioProps extends RadioOption<string> {
|
|
15
|
+
size?: 'sm' | 'md';
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
required?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare const Radio: ({ value, label, size, disabled, required }: RadioProps) => import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ImitateScrollProps {
|
|
2
|
+
children: React.ReactNode;
|
|
3
|
+
thumbClassName: string;
|
|
4
|
+
thumbColor?: string;
|
|
5
|
+
trackWidth?: number;
|
|
6
|
+
thumbMargin?: number;
|
|
7
|
+
scrollableClassName?: string;
|
|
8
|
+
}
|
|
9
|
+
declare const ImitateScroll: ({ children, thumbClassName, scrollableClassName, thumbMargin, trackWidth }: ImitateScrollProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export { ImitateScroll };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
.scrollable::-webkit-scrollbar {
|
|
2
|
+
width: var(--scrollbar-width);
|
|
3
|
+
height: var(--scrollbar-width);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.scrollable::-webkit-scrollbar-thumb {
|
|
7
|
+
background-clip: padding-box;
|
|
8
|
+
border: var(--thumb-padding) solid transparent;
|
|
9
|
+
border-radius: 999px;
|
|
10
|
+
background-color: var(--thumb-color);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.scrollable::-webkit-scrollbar-corner {
|
|
14
|
+
background-color: transparent;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.scrollable-hover-interaction::-webkit-scrollbar-thumb,
|
|
18
|
+
.scrollable-hover-interaction::-webkit-scrollbar-track {
|
|
19
|
+
visibility: hidden;
|
|
20
|
+
}
|
|
21
|
+
.scrollable-hover-interaction:hover::-webkit-scrollbar-thumb,
|
|
22
|
+
.scrollable-hover-interaction:hover::-webkit-scrollbar-track {
|
|
23
|
+
visibility: visible;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.scrollable-border-position::-webkit-scrollbar-thumb {
|
|
27
|
+
border-radius: 0px;
|
|
28
|
+
|
|
29
|
+
border-right-width: 0px;
|
|
30
|
+
border-bottom-width: 0px;
|
|
31
|
+
|
|
32
|
+
border-left-width: calc(var(--thumb-padding) * 2);
|
|
33
|
+
border-top-width: calc(var(--thumb-padding) * 2);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.hidden-scroll::-webkit-scrollbar {
|
|
37
|
+
display: none;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.hidden-scroll::-webkit-scrollbar-thumb {
|
|
41
|
+
display: none;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.hidden-scroll::-webkit-scrollbar-track {
|
|
45
|
+
display: none;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.hidden-scroll::-webkit-scrollbar-corner {
|
|
49
|
+
display: none;
|
|
50
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
interface OuterImplementation {
|
|
2
|
+
implementation: 'outer';
|
|
3
|
+
shadowPadding?: number;
|
|
4
|
+
scrollbarWidth: number;
|
|
5
|
+
noneCorrect?: boolean;
|
|
6
|
+
}
|
|
7
|
+
interface EdgeImplementation {
|
|
8
|
+
implementation: 'edge';
|
|
9
|
+
scrollbarWidth: number;
|
|
10
|
+
padding: number;
|
|
11
|
+
}
|
|
12
|
+
interface InnerImplementation {
|
|
13
|
+
implementation: 'inner';
|
|
14
|
+
padding: number;
|
|
15
|
+
}
|
|
16
|
+
interface ScrollableProps {
|
|
17
|
+
heightAuto?: boolean;
|
|
18
|
+
scrollX?: boolean;
|
|
19
|
+
scrollY?: boolean;
|
|
20
|
+
interactionKind?: 'static' | 'hover';
|
|
21
|
+
thumbPos?: 'center' | 'border';
|
|
22
|
+
thumbPadding?: number;
|
|
23
|
+
thumbColor?: string;
|
|
24
|
+
onWheel?: React.WheelEventHandler<HTMLDivElement>;
|
|
25
|
+
onScroll?: React.UIEventHandler<HTMLDivElement>;
|
|
26
|
+
maxHeight?: number;
|
|
27
|
+
children: React.ReactNode;
|
|
28
|
+
style?: React.CSSProperties;
|
|
29
|
+
className?: string;
|
|
30
|
+
}
|
|
31
|
+
type Implementation = InnerImplementation | OuterImplementation | EdgeImplementation;
|
|
32
|
+
declare const Scrollable: import('react').ForwardRefExoticComponent<(ScrollableProps & Implementation) & import('react').RefAttributes<HTMLDivElement>>;
|
|
33
|
+
export { Scrollable };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
@use '../mixins.scss';
|
|
2
|
+
|
|
3
|
+
.segments {
|
|
4
|
+
position: relative;
|
|
5
|
+
display: flex;
|
|
6
|
+
width: 100%;
|
|
7
|
+
height: 100%;
|
|
8
|
+
border-radius: inherit;
|
|
9
|
+
transition: all 100ms ease-out;
|
|
10
|
+
|
|
11
|
+
&-container {
|
|
12
|
+
width: 100%;
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
|
|
15
|
+
@include mixins.use-styles(segment-control, container);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&-slider {
|
|
19
|
+
position: absolute;
|
|
20
|
+
top: 0;
|
|
21
|
+
bottom: 0;
|
|
22
|
+
left: 0;
|
|
23
|
+
width: calc(100% / var(--uikit--options));
|
|
24
|
+
border-radius: inherit;
|
|
25
|
+
transform: translateX(calc(var(--uikit--current-index) * 100%));
|
|
26
|
+
transform-origin: 0 0;
|
|
27
|
+
transition: transform 150ms;
|
|
28
|
+
|
|
29
|
+
@include mixins.use-styles(segment-control, slider);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&-option {
|
|
33
|
+
position: relative;
|
|
34
|
+
box-sizing: border-box;
|
|
35
|
+
display: flex;
|
|
36
|
+
flex: 1;
|
|
37
|
+
align-items: center;
|
|
38
|
+
justify-content: center;
|
|
39
|
+
height: 100%;
|
|
40
|
+
cursor: pointer;
|
|
41
|
+
user-select: none;
|
|
42
|
+
background: transparent;
|
|
43
|
+
border: 0;
|
|
44
|
+
border-radius: inherit;
|
|
45
|
+
transition: color 100ms ease-out;
|
|
46
|
+
|
|
47
|
+
&:not([data-active]):hover {
|
|
48
|
+
@include mixins.use-styles(segment-control, option, hover);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&:not([data-active]):active {
|
|
52
|
+
@include mixins.use-styles(segment-control, option, active);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@include mixins.use-styles(segment-control, option);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface SegmentOption<T> {
|
|
2
|
+
label: React.ReactNode;
|
|
3
|
+
value: T;
|
|
4
|
+
}
|
|
5
|
+
export interface SegmentsProps<T> {
|
|
6
|
+
value: T;
|
|
7
|
+
onChange: (value: T) => void;
|
|
8
|
+
options: SegmentOption<T>[];
|
|
9
|
+
}
|
|
10
|
+
export declare const Segments: <T extends number | string>({ value, onChange, options }: SegmentsProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
@use '../mixins.scss';
|
|
2
|
+
|
|
3
|
+
.select {
|
|
4
|
+
cursor: pointer;
|
|
5
|
+
max-width: 100%;
|
|
6
|
+
|
|
7
|
+
&-layout {
|
|
8
|
+
display: flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
width: 100%;
|
|
11
|
+
min-height: inherit;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&-placeholder {
|
|
15
|
+
user-select: none;
|
|
16
|
+
|
|
17
|
+
@include mixins.use-styles(form, placeholder);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
&-content {
|
|
21
|
+
position: relative;
|
|
22
|
+
display: flex;
|
|
23
|
+
flex: 1;
|
|
24
|
+
align-items: center;
|
|
25
|
+
align-self: stretch;
|
|
26
|
+
overflow: hidden;
|
|
27
|
+
|
|
28
|
+
&:first-child {
|
|
29
|
+
padding-left: var(--form_space, 0);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&-text {
|
|
33
|
+
overflow: hidden;
|
|
34
|
+
text-overflow: ellipsis;
|
|
35
|
+
white-space: nowrap;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
&-element {
|
|
40
|
+
height: 100%;
|
|
41
|
+
display: flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&-close-button {
|
|
46
|
+
pointer-events: auto;
|
|
47
|
+
cursor: pointer;
|
|
48
|
+
padding: 0px var(--form_space, 0);
|
|
49
|
+
height: 100%;
|
|
50
|
+
outline: none;
|
|
51
|
+
color: var(--select_clean_color);
|
|
52
|
+
|
|
53
|
+
&:hover {
|
|
54
|
+
color: var(--select_clean_hover_color);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
&-expand {
|
|
59
|
+
margin-right: var(--form_space, 0);
|
|
60
|
+
|
|
61
|
+
&:first-child {
|
|
62
|
+
margin-left: var(--form_space, 0);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// expand icon
|
|
68
|
+
|
|
69
|
+
.expand-icon {
|
|
70
|
+
color: var(--select_expand_color);
|
|
71
|
+
transition: transform 0.2s;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.form {
|
|
75
|
+
&[data-state='open'] {
|
|
76
|
+
.expand-icon {
|
|
77
|
+
transform: rotate(180deg);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface SelectFormProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2
|
+
required?: boolean;
|
|
3
|
+
disabled?: boolean;
|
|
4
|
+
className?: string;
|
|
5
|
+
leftElement?: React.ReactNode;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
value?: string | number;
|
|
8
|
+
size?: 'sm' | 'md' | 'lg';
|
|
9
|
+
fill?: boolean;
|
|
10
|
+
clearButton?: boolean;
|
|
11
|
+
clearButtonIcon?: boolean;
|
|
12
|
+
inputRef?: React.Ref<HTMLInputElement>;
|
|
13
|
+
onClear?: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
14
|
+
}
|
|
15
|
+
export declare const SelectInput: import('react').ForwardRefExoticComponent<SelectFormProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Option } from '..';
|
|
2
|
+
interface SelectPopoverProps<T> {
|
|
3
|
+
scrollboxRef?: React.RefObject<HTMLDivElement>;
|
|
4
|
+
optionsWrapperRef?: React.RefObject<HTMLDivElement>;
|
|
5
|
+
options: Option<T>[];
|
|
6
|
+
minimalOptions?: boolean;
|
|
7
|
+
active?: T | null;
|
|
8
|
+
onSelect?: (value: T) => void;
|
|
9
|
+
onOpened?: () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare const SelectOptions: <T>(props: SelectPopoverProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface SelectRightElementsProps {
|
|
2
|
+
onClear?: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
3
|
+
clearButton?: boolean;
|
|
4
|
+
clearButtonIcon?: React.ReactNode;
|
|
5
|
+
value: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const SelectRightElements: (props: SelectRightElementsProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Option } from '../types';
|
|
2
|
+
import { SelectFormProps } from './SelectInput';
|
|
3
|
+
interface Cleanable<T> {
|
|
4
|
+
clearButton: true;
|
|
5
|
+
onChange: (event: T | null) => void;
|
|
6
|
+
}
|
|
7
|
+
interface UnCleanable<T> {
|
|
8
|
+
clearButton?: false;
|
|
9
|
+
onChange: (event: T) => void;
|
|
10
|
+
}
|
|
11
|
+
type DependedValueType<T> = Cleanable<T> | UnCleanable<T>;
|
|
12
|
+
export type SelectProps<T> = Omit<SelectFormProps, 'value' | 'onChange' | 'closeButton'> & DependedValueType<T> & {
|
|
13
|
+
value: T | null;
|
|
14
|
+
options: Option<T>[];
|
|
15
|
+
children?: React.ReactNode;
|
|
16
|
+
minimalOptions?: boolean;
|
|
17
|
+
matchTarget?: 'width' | 'min-width';
|
|
18
|
+
popoverRef?: React.Ref<HTMLDivElement>;
|
|
19
|
+
scrollRef?: React.Ref<{
|
|
20
|
+
scrollTo: (index: number) => void;
|
|
21
|
+
}>;
|
|
22
|
+
};
|
|
23
|
+
export declare const Select: <T>(props: SelectProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
@use '../mixins.scss';
|
|
2
|
+
|
|
3
|
+
.select-tags {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
width: 100%;
|
|
7
|
+
|
|
8
|
+
.form-input {
|
|
9
|
+
padding-left: var(--form_space, 0);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
&-empty {
|
|
13
|
+
@include mixins.use-styles(tag, empty);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
&-container {
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
cursor: text;
|
|
20
|
+
|
|
21
|
+
.expand-icon {
|
|
22
|
+
margin: 0px var(--form_space, 0);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.tag {
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
cursor: default;
|
|
31
|
+
user-select: none;
|
|
32
|
+
|
|
33
|
+
@include mixins.use-styles(tag);
|
|
34
|
+
|
|
35
|
+
&-name {
|
|
36
|
+
@include mixins.use-styles(tag, name);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
&-close-button {
|
|
40
|
+
cursor: pointer;
|
|
41
|
+
@include mixins.use-styles(tag, close);
|
|
42
|
+
|
|
43
|
+
&:hover {
|
|
44
|
+
@include mixins.use-styles(tag, close, hover);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&-close-icon {
|
|
49
|
+
@include mixins.use-size(tag, close, size);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
&-container {
|
|
53
|
+
display: flex;
|
|
54
|
+
flex-direction: row;
|
|
55
|
+
align-items: center;
|
|
56
|
+
align-self: stretch;
|
|
57
|
+
flex-wrap: wrap;
|
|
58
|
+
min-width: 0;
|
|
59
|
+
position: relative;
|
|
60
|
+
|
|
61
|
+
@include mixins.use-styles(tag, container);
|
|
62
|
+
|
|
63
|
+
&:not([data-readonly]) {
|
|
64
|
+
padding-bottom: 0;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Option } from '../types';
|
|
2
|
+
export interface SelectTagsProps<T> {
|
|
3
|
+
options: Option<T>[];
|
|
4
|
+
onChange: (event: T[]) => void;
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
value: T[];
|
|
7
|
+
children?: React.ReactNode;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
readOnly?: boolean;
|
|
10
|
+
closeAfterSelect?: boolean;
|
|
11
|
+
emptyText?: string;
|
|
12
|
+
size?: 'sm' | 'md' | 'lg';
|
|
13
|
+
fill?: boolean;
|
|
14
|
+
inputRef?: React.Ref<HTMLInputElement>;
|
|
15
|
+
required?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare const SelectTags: <T extends string | number>(props: SelectTagsProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
@keyframes spinner-border {
|
|
2
|
+
to {
|
|
3
|
+
transform: rotate(360deg);
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.spinner-border {
|
|
8
|
+
display: inline-block;
|
|
9
|
+
border-style: solid;
|
|
10
|
+
border-color: currentColor;
|
|
11
|
+
border-right-color: transparent;
|
|
12
|
+
border-radius: 50%;
|
|
13
|
+
animation: 0.75s linear infinite spinner-border;
|
|
14
|
+
}
|