@uxf/ui 1.0.0-beta.78 → 1.0.0-beta.79
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/config/icons-config.d.ts +1 -1
- package/config/icons-config.js +1 -1
- package/config/icons.d.ts +15 -0
- package/config/icons.js +3 -0
- package/css/layout.css +2 -2
- package/css/pagination.css +27 -0
- package/css/tabs.css +26 -6
- package/css/time-picker-input.css +133 -0
- package/css/time-picker.css +27 -0
- package/input/input-element.d.ts +1 -1
- package/package.json +1 -1
- package/pagination/pagination.d.ts +7 -0
- package/pagination/pagination.js +49 -0
- package/pagination/pagination.stories.d.ts +7 -0
- package/pagination/pagination.stories.js +47 -0
- package/tabs/tabs.d.ts +1 -0
- package/tabs/tabs.js +7 -4
- package/tabs/tabs.stories.js +2 -2
- package/text-input/text-input.d.ts +1 -1
- package/text-input/text-input.stories.js +3 -1
- package/time-picker-input/index.d.ts +2 -0
- package/time-picker-input/index.js +18 -0
- package/time-picker-input/time-picker-hour.d.ts +5 -0
- package/time-picker-input/time-picker-hour.js +47 -0
- package/time-picker-input/time-picker-hours.d.ts +2 -0
- package/time-picker-input/time-picker-hours.js +14 -0
- package/time-picker-input/time-picker-input.d.ts +22 -0
- package/time-picker-input/time-picker-input.js +64 -0
- package/time-picker-input/time-picker-input.stories.d.ts +7 -0
- package/time-picker-input/time-picker-input.stories.js +45 -0
- package/time-picker-input/time-picker-minute.d.ts +5 -0
- package/time-picker-input/time-picker-minute.js +47 -0
- package/time-picker-input/time-picker-minutes.d.ts +2 -0
- package/time-picker-input/time-picker-minutes.js +14 -0
- package/time-picker-input/time-picker.d.ts +8 -0
- package/time-picker-input/time-picker.js +69 -0
- package/utils/icons-config.js +15 -0
- package/utils/tailwind-config.js +4 -2
package/config/icons-config.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const ICONS_VERSION = "
|
|
1
|
+
export declare const ICONS_VERSION = "1668632602549";
|
|
2
2
|
export declare const ICON_SPRITE = "/.storybook/static-assets/icons-generated/_icon-sprite.svg";
|
package/config/icons-config.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ICON_SPRITE = exports.ICONS_VERSION = void 0;
|
|
4
|
-
exports.ICONS_VERSION = "
|
|
4
|
+
exports.ICONS_VERSION = "1668632602549";
|
|
5
5
|
exports.ICON_SPRITE = "/.storybook/static-assets/icons-generated/_icon-sprite.svg";
|
package/config/icons.d.ts
CHANGED
|
@@ -11,6 +11,10 @@ export declare const ICONS: {
|
|
|
11
11
|
readonly w: 320;
|
|
12
12
|
readonly h: 512;
|
|
13
13
|
};
|
|
14
|
+
readonly clock: {
|
|
15
|
+
readonly w: 512;
|
|
16
|
+
readonly h: 512;
|
|
17
|
+
};
|
|
14
18
|
readonly bars: {
|
|
15
19
|
readonly w: 448;
|
|
16
20
|
readonly h: 512;
|
|
@@ -27,10 +31,18 @@ export declare const ICONS: {
|
|
|
27
31
|
readonly w: 384;
|
|
28
32
|
readonly h: 512;
|
|
29
33
|
};
|
|
34
|
+
readonly chevronsLeft: {
|
|
35
|
+
readonly w: 512;
|
|
36
|
+
readonly h: 512;
|
|
37
|
+
};
|
|
30
38
|
readonly chevronRight: {
|
|
31
39
|
readonly w: 384;
|
|
32
40
|
readonly h: 512;
|
|
33
41
|
};
|
|
42
|
+
readonly chevronsRight: {
|
|
43
|
+
readonly w: 512;
|
|
44
|
+
readonly h: 512;
|
|
45
|
+
};
|
|
34
46
|
readonly chevronUp: {
|
|
35
47
|
readonly w: 512;
|
|
36
48
|
readonly h: 512;
|
|
@@ -50,11 +62,14 @@ declare module "@uxf/ui/icon/theme" {
|
|
|
50
62
|
calendar: true;
|
|
51
63
|
camera: true;
|
|
52
64
|
caretDown: true;
|
|
65
|
+
clock: true;
|
|
53
66
|
bars: true;
|
|
54
67
|
check: true;
|
|
55
68
|
chevronDown: true;
|
|
56
69
|
chevronLeft: true;
|
|
70
|
+
chevronsLeft: true;
|
|
57
71
|
chevronRight: true;
|
|
72
|
+
chevronsRight: true;
|
|
58
73
|
chevronUp: true;
|
|
59
74
|
user: true;
|
|
60
75
|
xmarkLarge: true;
|
package/config/icons.js
CHANGED
|
@@ -6,11 +6,14 @@ exports.ICONS = {
|
|
|
6
6
|
calendar: { w: 448, h: 512 },
|
|
7
7
|
camera: { w: 512, h: 512 },
|
|
8
8
|
caretDown: { w: 320, h: 512 },
|
|
9
|
+
clock: { w: 512, h: 512 },
|
|
9
10
|
bars: { w: 448, h: 512 },
|
|
10
11
|
check: { w: 512, h: 512 },
|
|
11
12
|
chevronDown: { w: 512, h: 512 },
|
|
12
13
|
chevronLeft: { w: 384, h: 512 },
|
|
14
|
+
chevronsLeft: { w: 512, h: 512 },
|
|
13
15
|
chevronRight: { w: 384, h: 512 },
|
|
16
|
+
chevronsRight: { w: 512, h: 512 },
|
|
14
17
|
chevronUp: { w: 512, h: 512 },
|
|
15
18
|
user: { w: 448, h: 512 },
|
|
16
19
|
xmarkLarge: { w: 448, h: 512 },
|
package/css/layout.css
CHANGED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
.uxf-pagination {
|
|
2
|
+
@apply isolate inline-flex rounded-md -space-x-px;
|
|
3
|
+
|
|
4
|
+
&__button {
|
|
5
|
+
@apply relative inline-flex items-center border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50 focus:z-10 cursor-pointer h-10;
|
|
6
|
+
|
|
7
|
+
&.is-selected {
|
|
8
|
+
@apply z-10 bg-indigo-50 border border-primary-500 text-primary-600;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
&.is-first {
|
|
12
|
+
@apply rounded-l-md;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
&.is-last {
|
|
16
|
+
@apply rounded-r-md;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&.is-disabled {
|
|
20
|
+
@apply text-neutral-300 hover:bg-white cursor-not-allowed;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&.is-ellipsis {
|
|
24
|
+
@apply text-neutral-300 hover:bg-white pointer-events-none
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
package/css/tabs.css
CHANGED
|
@@ -68,11 +68,11 @@
|
|
|
68
68
|
before:opacity-0 before:transition;
|
|
69
69
|
|
|
70
70
|
:root .light & {
|
|
71
|
-
@apply text-
|
|
71
|
+
@apply text-lightMedium hover:bg-gray-100 focus-visible:ring-primary-500;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
:root .dark & {
|
|
75
|
-
@apply text-
|
|
75
|
+
@apply text-darkMedium hover:bg-gray-800 focus-visible:ring-primary-500
|
|
76
76
|
focus-visible:ring-offset-gray-900;
|
|
77
77
|
}
|
|
78
78
|
|
|
@@ -80,11 +80,21 @@
|
|
|
80
80
|
@apply before:opacity-100 ;
|
|
81
81
|
|
|
82
82
|
:root .light & {
|
|
83
|
-
@apply text-
|
|
83
|
+
@apply text-lightHigh before:border-b-primary-500 hover:bg-transparent;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
:root .dark & {
|
|
87
|
-
@apply text-
|
|
87
|
+
@apply text-darkHigh before:border-b-primary-500 hover:bg-transparent;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&.is-disabled {
|
|
92
|
+
:root .light & {
|
|
93
|
+
@apply text-lightLow;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
:root .dark & {
|
|
97
|
+
@apply text-darkLow;
|
|
88
98
|
}
|
|
89
99
|
}
|
|
90
100
|
}
|
|
@@ -93,12 +103,12 @@
|
|
|
93
103
|
@apply rounded;
|
|
94
104
|
|
|
95
105
|
:root .light & {
|
|
96
|
-
@apply text-
|
|
106
|
+
@apply text-lightMedium bg-gray-100 hover:text-primary-600 hover:bg-primary-100
|
|
97
107
|
focus-visible:ring-primary-500 focus-visible:ring-offset-gray-100;
|
|
98
108
|
}
|
|
99
109
|
|
|
100
110
|
:root .dark & {
|
|
101
|
-
@apply text-
|
|
111
|
+
@apply text-darkMedium bg-gray-700 hover:bg-gray-800 focus-visible:ring-primary-500
|
|
102
112
|
focus-visible:ring-offset-gray-700;
|
|
103
113
|
}
|
|
104
114
|
|
|
@@ -111,6 +121,16 @@
|
|
|
111
121
|
@apply text-white bg-primary-500;
|
|
112
122
|
}
|
|
113
123
|
}
|
|
124
|
+
|
|
125
|
+
&.is-disabled {
|
|
126
|
+
:root .light & {
|
|
127
|
+
@apply text-gray-400;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
:root .dark & {
|
|
131
|
+
@apply text-gray-500;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
114
134
|
}
|
|
115
135
|
}
|
|
116
136
|
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
.uxf-time-picker-input {
|
|
2
|
+
@apply w-full rounded-lg text-base;
|
|
3
|
+
|
|
4
|
+
&__element {
|
|
5
|
+
@apply w-full bg-transparent outline-none;
|
|
6
|
+
|
|
7
|
+
:root .light & {
|
|
8
|
+
@apply text-gray-900 placeholder:text-gray-400;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
:root .dark & {
|
|
12
|
+
@apply text-gray-300 placeholder:text-gray-400;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
&__left-element {
|
|
17
|
+
@apply mr-2;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
&__right-element {
|
|
21
|
+
@apply ml-2;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
&__wrapper {
|
|
25
|
+
@apply flex items-center w-full h-12 rounded-lg border px-4;
|
|
26
|
+
|
|
27
|
+
:root .light & {
|
|
28
|
+
@apply bg-gray-100 text-gray-900 border-gray-200;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:root .dark & {
|
|
32
|
+
@apply bg-gray-800 text-gray-300 border-gray-700;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
&__popover {
|
|
37
|
+
@apply absolute left-0 z-dropdown mt-3 max-w-md rounded-lg border p-2 shadow-xl;
|
|
38
|
+
|
|
39
|
+
:root .light & {
|
|
40
|
+
@apply bg-white border-gray-500;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
:root .dark & {
|
|
44
|
+
@apply bg-gray-900 border-2 border-gray-700;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&--has-right-addon {
|
|
49
|
+
.uxf-time-picker-input__wrapper {
|
|
50
|
+
@apply rounded-r-none;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&.is-focused {
|
|
55
|
+
.uxf-time-picker-input__wrapper {
|
|
56
|
+
@apply ring-1 ring-inset ring-offset-0;
|
|
57
|
+
|
|
58
|
+
:root .light & {
|
|
59
|
+
@apply border-primary-500 ring-primary-500;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
:root .dark & {
|
|
63
|
+
@apply border-primary-500 ring-primary-500;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&.is-disabled {
|
|
69
|
+
@apply cursor-not-allowed;
|
|
70
|
+
|
|
71
|
+
.uxf-time-picker-input__wrapper {
|
|
72
|
+
:root .light & {
|
|
73
|
+
@apply text-gray-500 bg-gray-300;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
:root .dark & {
|
|
77
|
+
@apply text-gray-500 bg-gray-600;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.uxf-time-picker-input__element {
|
|
82
|
+
@apply cursor-not-allowed;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
&.is-readonly {
|
|
87
|
+
@apply cursor-text;
|
|
88
|
+
|
|
89
|
+
.uxf-time-picker-input__element {
|
|
90
|
+
@apply cursor-text;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.uxf-time-picker-input__wrapper {
|
|
94
|
+
@apply ring-0;
|
|
95
|
+
|
|
96
|
+
:root .light & {
|
|
97
|
+
@apply bg-gray-200 text-gray-700 border-gray-300;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
:root .dark & {
|
|
101
|
+
@apply bg-gray-800 text-gray-300 border-gray-500;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
&.is-invalid {
|
|
107
|
+
&.is-focused {
|
|
108
|
+
.uxf-time-picker-input__wrapper {
|
|
109
|
+
:root .light & {
|
|
110
|
+
@apply ring-error-500 border-error-500;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
:root .dark & {
|
|
114
|
+
@apply ring-error-500 border-error-500;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.uxf-time-picker-input__wrapper {
|
|
120
|
+
@apply text-error-500 border-error-500 placeholder:text-error-300;
|
|
121
|
+
|
|
122
|
+
.uxf-time-picker-input__element {
|
|
123
|
+
:root .light & {
|
|
124
|
+
@apply border-gray-300 text-error-500;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
:root .dark & {
|
|
128
|
+
@apply border-gray-500 text-error-500;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
.uxf-time-picker {
|
|
2
|
+
&__global {
|
|
3
|
+
@apply flex items-center justify-between px-4 w-[180px];
|
|
4
|
+
|
|
5
|
+
&__column {
|
|
6
|
+
@apply flex flex-col items-center shrink-0;
|
|
7
|
+
|
|
8
|
+
& > :nth-child(1),
|
|
9
|
+
& > :nth-child(3) {
|
|
10
|
+
@apply h-6;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
&__hours,
|
|
16
|
+
&__minutes {
|
|
17
|
+
@apply grid grid-cols-4 place-items-center gap-1;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
:root .light & {
|
|
21
|
+
@apply text-gray-900;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:root .dark & {
|
|
25
|
+
@apply bg-gray-900 text-white;
|
|
26
|
+
}
|
|
27
|
+
}
|
package/input/input-element.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface InputElementProps extends FormControlProps<string> {
|
|
|
9
9
|
inputMode?: InputMode;
|
|
10
10
|
onKeyDown?: KeyboardEventHandler<HTMLInputElement>;
|
|
11
11
|
placeholder?: string;
|
|
12
|
-
type?: "email" | "number" | "password" | "search" | "tel" | "text" | "url";
|
|
12
|
+
type?: "email" | "number" | "password" | "search" | "tel" | "text" | "url" | "time";
|
|
13
13
|
maxLength?: number | undefined;
|
|
14
14
|
minLength?: number | undefined;
|
|
15
15
|
max?: number | string;
|
package/package.json
CHANGED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Pagination = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const icon_1 = require("../icon");
|
|
9
|
+
const cx_1 = require("@uxf/core/utils/cx");
|
|
10
|
+
const usePagination_1 = require("@uxf/core/hooks/usePagination");
|
|
11
|
+
const Pagination = (props) => {
|
|
12
|
+
const isCurrentPageFirst = props.page === 1;
|
|
13
|
+
const isCurrentPageLast = props.page === props.count;
|
|
14
|
+
const pagination = (0, usePagination_1.usePagination)({
|
|
15
|
+
count: props.count,
|
|
16
|
+
page: props.page,
|
|
17
|
+
showFirstButton: true,
|
|
18
|
+
showLastButton: true,
|
|
19
|
+
});
|
|
20
|
+
const onClick = (item) => {
|
|
21
|
+
if (typeof item === "number") {
|
|
22
|
+
return props.onPageChange(item);
|
|
23
|
+
}
|
|
24
|
+
switch (item) {
|
|
25
|
+
case "first":
|
|
26
|
+
return props.onPageChange(1);
|
|
27
|
+
case "previous":
|
|
28
|
+
return props.onPageChange(props.page - 1);
|
|
29
|
+
case "next":
|
|
30
|
+
return props.onPageChange(props.page + 1);
|
|
31
|
+
case "last":
|
|
32
|
+
return props.onPageChange(props.count);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
return (react_1.default.createElement("nav", { className: "uxf-pagination" }, pagination.map((item, index) => {
|
|
36
|
+
const isDisabled = ((item === "first" || item === "previous") && isCurrentPageFirst) ||
|
|
37
|
+
((item === "last" || item === "next") && isCurrentPageLast);
|
|
38
|
+
return (react_1.default.createElement("a", { key: item, onClick: isDisabled ? undefined : () => onClick(item), className: (0, cx_1.cx)("uxf-pagination__button", isDisabled && "is-disabled", (item === "start-ellipsis" || item === "end-ellipsis") && "is-ellipsis", item === props.page && "is-selected", index === 0 && "is-first", index === pagination.length - 1 && "is-last") }, item === "first" ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
39
|
+
react_1.default.createElement("span", { className: "sr-only" }, "First"),
|
|
40
|
+
react_1.default.createElement(icon_1.Icon, { name: "chevronsLeft", size: 12 }))) : item === "previous" ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
41
|
+
react_1.default.createElement("span", { className: "sr-only" }, "Previous"),
|
|
42
|
+
react_1.default.createElement(icon_1.Icon, { name: "chevronLeft", size: 12 }))) : item === "start-ellipsis" || item === "end-ellipsis" ? (react_1.default.createElement(react_1.default.Fragment, null, "...")) : typeof item === "number" ? (react_1.default.createElement(react_1.default.Fragment, null, item)) : item === "next" ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
43
|
+
react_1.default.createElement("span", { className: "sr-only" }, "Next"),
|
|
44
|
+
react_1.default.createElement(icon_1.Icon, { name: "chevronRight", size: 12 }))) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
45
|
+
react_1.default.createElement("span", { className: "sr-only" }, "Last"),
|
|
46
|
+
react_1.default.createElement(icon_1.Icon, { name: "chevronsRight", size: 12 })))));
|
|
47
|
+
})));
|
|
48
|
+
};
|
|
49
|
+
exports.Pagination = Pagination;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.Default = void 0;
|
|
27
|
+
const pagination_1 = require("./pagination");
|
|
28
|
+
const react_1 = __importStar(require("react"));
|
|
29
|
+
exports.default = {
|
|
30
|
+
title: "UI/Pagination",
|
|
31
|
+
component: pagination_1.Pagination,
|
|
32
|
+
};
|
|
33
|
+
function Default() {
|
|
34
|
+
const [page, setPage] = (0, react_1.useState)(1);
|
|
35
|
+
return (react_1.default.createElement("div", { className: "flex flex-col gap-4" },
|
|
36
|
+
react_1.default.createElement("p", null,
|
|
37
|
+
"Je pot\u0159eba ikona ",
|
|
38
|
+
react_1.default.createElement("b", null, "chevronsLeft"),
|
|
39
|
+
", ",
|
|
40
|
+
react_1.default.createElement("b", null, "chevronLeft"),
|
|
41
|
+
", ",
|
|
42
|
+
react_1.default.createElement("b", null, "chevronRight"),
|
|
43
|
+
" a ",
|
|
44
|
+
react_1.default.createElement("b", null, "chevronsRight")),
|
|
45
|
+
react_1.default.createElement(pagination_1.Pagination, { count: 10, page: page, onPageChange: setPage })));
|
|
46
|
+
}
|
|
47
|
+
exports.Default = Default;
|
package/tabs/tabs.d.ts
CHANGED
package/tabs/tabs.js
CHANGED
|
@@ -53,13 +53,16 @@ const TabsRoot = (0, forwardRef_1.forwardRef)("Tabs", (props, ref) => {
|
|
|
53
53
|
return react_2.default.createElement("div", { className: tabsClassName, ref: ref });
|
|
54
54
|
}
|
|
55
55
|
const tabPanels = react_2.Children.toArray(props.children).filter((child) => (0, react_2.isValidElement)(child) && child.props.title);
|
|
56
|
-
const tabs = tabPanels.map((c) =>
|
|
56
|
+
const tabs = tabPanels.map((c) => ({
|
|
57
|
+
title: c.props.title,
|
|
58
|
+
disabled: c.props.disabled,
|
|
59
|
+
}));
|
|
57
60
|
return (react_2.default.createElement(react_1.Tab.Group, { as: "div", className: tabsClassName, defaultIndex: props.defaultIndex, onChange: props.onChange, ref: ref },
|
|
58
61
|
react_2.default.createElement(react_1.Tab.List, { className: (0, cx_1.cx)("uxf-tabs__tab-list__wrapper", `uxf-tabs__tab-list__wrapper--${(_a = props.variant) !== null && _a !== void 0 ? _a : "default"}`, props.tabListClassName) },
|
|
59
|
-
react_2.default.createElement("div", { className: (0, cx_1.cx)("uxf-tabs__tab-list", `uxf-tabs__tab-list--${(_b = props.variant) !== null && _b !== void 0 ? _b : "default"}`), ref: containerRef, style: { justifyContent: hasOverflow ? "flex-start" : undefined, ...dragStyle } }, tabs.map((tab, index) => (react_2.default.createElement(react_1.Tab, { className: ({ selected }) => {
|
|
62
|
+
react_2.default.createElement("div", { className: (0, cx_1.cx)("uxf-tabs__tab-list", `uxf-tabs__tab-list--${(_b = props.variant) !== null && _b !== void 0 ? _b : "default"}`), ref: containerRef, style: { justifyContent: hasOverflow ? "flex-start" : undefined, ...dragStyle } }, tabs.map((tab, index) => (react_2.default.createElement(react_1.Tab, { disabled: tab.disabled, className: ({ selected }) => {
|
|
60
63
|
var _a;
|
|
61
|
-
return (0, cx_1.cx)("uxf-tabs__tab", selected && classes_1.CLASSES.IS_ACTIVE, `uxf-tabs__tab--${(_a = props.variant) !== null && _a !== void 0 ? _a : "default"}`);
|
|
62
|
-
}, key: `${tab}--${index}` }, tab))))),
|
|
64
|
+
return (0, cx_1.cx)("uxf-tabs__tab", selected && classes_1.CLASSES.IS_ACTIVE, tab.disabled && classes_1.CLASSES.IS_DISABLED, `uxf-tabs__tab--${(_a = props.variant) !== null && _a !== void 0 ? _a : "default"}`);
|
|
65
|
+
}, key: `${tab.title}--${index}` }, tab.title))))),
|
|
63
66
|
react_2.default.createElement(react_1.Tab.Panels, { className: "uxf-tabs__panels" }, tabPanels.map((tab, index) => (react_2.default.createElement(react_1.Tab.Panel, { className: "outline-none", key: `${tab}--${index}` }, tab))))));
|
|
64
67
|
});
|
|
65
68
|
exports.Tabs = Object.assign(TabsRoot, { Panel });
|
package/tabs/tabs.stories.js
CHANGED
|
@@ -19,14 +19,14 @@ function Default() {
|
|
|
19
19
|
react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 1 title", className: "grid h-12 w-56 place-items-center bg-red-300" }, "content of the Tab 1"),
|
|
20
20
|
react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 2 title", className: "grid h-12 w-56 place-items-center bg-green-300" }, "content of the Tab 2"),
|
|
21
21
|
react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 3 title", className: "grid h-12 w-56 place-items-center bg-amber-300" }, "content of the Tab 3"),
|
|
22
|
-
react_1.default.createElement(tabs_1.Tabs.Panel, {
|
|
22
|
+
react_1.default.createElement(tabs_1.Tabs.Panel, { className: "grid h-12 w-56 place-items-center bg-gray-300", disabled: true, title: "Tab 4 title - disabled" }, "content of the Tab 4 which is disabled"))),
|
|
23
23
|
react_1.default.createElement("div", null,
|
|
24
24
|
react_1.default.createElement("p", { className: "mb-4 text-gray-500" }, "Segmented"),
|
|
25
25
|
react_1.default.createElement(tabs_1.Tabs, { variant: "segmented" },
|
|
26
26
|
react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 1 title", className: "grid h-12 w-56 place-items-center bg-red-300" }, "content of the Tab 1"),
|
|
27
27
|
react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 2 title", className: "grid h-12 w-56 place-items-center bg-green-300" }, "content of the Tab 2"),
|
|
28
28
|
react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 3 title", className: "grid h-12 w-56 place-items-center bg-amber-300" }, "content of the Tab 3"),
|
|
29
|
-
react_1.default.createElement(tabs_1.Tabs.Panel, {
|
|
29
|
+
react_1.default.createElement(tabs_1.Tabs.Panel, { className: "grid h-12 w-56 place-items-center bg-gray-300", disabled: true, title: "Tab 4 title - disabled" }, "content of the Tab 4 which is disabled")))),
|
|
30
30
|
react_1.default.createElement("div", { className: "w-[600px]" },
|
|
31
31
|
react_1.default.createElement("p", { className: "mb-4 text-gray-500" }, "Default grow"),
|
|
32
32
|
react_1.default.createElement(tabs_1.Tabs, { grow: true },
|
|
@@ -19,7 +19,7 @@ export interface TextInputProps extends FormControlProps<string>, Pick<InputProp
|
|
|
19
19
|
placeholder?: string;
|
|
20
20
|
rightAddon?: ReactNode;
|
|
21
21
|
rightElement?: ReactNode;
|
|
22
|
-
type?: "email" | "number" | "password" | "search" | "tel" | "text" | "url";
|
|
22
|
+
type?: "email" | "number" | "password" | "search" | "tel" | "text" | "url" | "time";
|
|
23
23
|
maxLength?: number | undefined;
|
|
24
24
|
minLength?: number | undefined;
|
|
25
25
|
max?: number | string;
|
|
@@ -36,11 +36,13 @@ exports.default = {
|
|
|
36
36
|
};
|
|
37
37
|
function Full() {
|
|
38
38
|
const [value, onChange] = (0, react_1.useState)("");
|
|
39
|
+
const [timeValue, onTimeChange] = (0, react_1.useState)("");
|
|
39
40
|
const storyTextInputs = (react_1.default.createElement("div", { className: "space-y-4" },
|
|
40
41
|
react_1.default.createElement(text_input_1.TextInput, { label: "Default input", value: value, onChange: onChange, helperText: "Helper text", leftAddon: "https://", rightAddon: ".cz", leftElement: "\uD83C\uDF37", rightElement: "\uD83D\uDD14", placeholder: "Some beautiful placeholder..." }),
|
|
41
42
|
react_1.default.createElement(text_input_1.TextInput, { label: "Error input", value: value, onChange: onChange, helperText: "Error helper text", leftAddon: "https://", rightAddon: ".cz", leftElement: "\uD83C\uDF37", rightElement: "\uD83D\uDD14", placeholder: "Some beautiful placeholder...", isInvalid: true }),
|
|
42
43
|
react_1.default.createElement(text_input_1.TextInput, { label: "Read only input", value: value, onChange: onChange, helperText: "Error helper text", leftAddon: "https://", rightAddon: ".cz", leftElement: "\uD83C\uDF37", rightElement: "\uD83D\uDD14", placeholder: "Some beautiful placeholder...", isReadOnly: true }),
|
|
43
|
-
react_1.default.createElement(text_input_1.TextInput, { label: "Disabled input", value: value, onChange: onChange, helperText: "Error helper text", leftAddon: "https://", rightAddon: ".cz", leftElement: "\uD83C\uDF37", rightElement: "\uD83D\uDD14", placeholder: "Some beautiful placeholder...", isDisabled: true })
|
|
44
|
+
react_1.default.createElement(text_input_1.TextInput, { label: "Disabled input", value: value, onChange: onChange, helperText: "Error helper text", leftAddon: "https://", rightAddon: ".cz", leftElement: "\uD83C\uDF37", rightElement: "\uD83D\uDD14", placeholder: "Some beautiful placeholder...", isDisabled: true }),
|
|
45
|
+
react_1.default.createElement(text_input_1.TextInput, { label: "Default tml time input", value: timeValue, onChange: onTimeChange, placeholder: "Some beautiful placeholder...", type: "time" })));
|
|
44
46
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
45
47
|
react_1.default.createElement("div", { className: "light space-y-2 p-20" }, storyTextInputs),
|
|
46
48
|
react_1.default.createElement("div", { className: "dark space-y-2 bg-gray-900 p-20" }, storyTextInputs)));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./time-picker"), exports);
|
|
18
|
+
__exportStar(require("./time-picker-input"), exports);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.TimePickerHour = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const time_picker_context_1 = require("@uxf/datepicker/contexts/time-picker-context");
|
|
29
|
+
const use_hour_1 = require("@uxf/datepicker/hooks/use-hour");
|
|
30
|
+
const cx_1 = require("@uxf/core/utils/cx");
|
|
31
|
+
const classes_1 = require("@uxf/core/constants/classes");
|
|
32
|
+
const button_1 = require("../button");
|
|
33
|
+
const TimePickerHour = (props) => {
|
|
34
|
+
const hourRef = (0, react_1.useRef)(null);
|
|
35
|
+
const { focusedHour, isHourFocused, isHourSelected, onHourSelect, onHourFocus } = (0, react_1.useContext)(time_picker_context_1.TimePickerContext);
|
|
36
|
+
const { onClick, onKeyDown, tabIndex, isSelected } = (0, use_hour_1.useHour)({
|
|
37
|
+
hour: props.hour,
|
|
38
|
+
hourRef,
|
|
39
|
+
isHourFocused,
|
|
40
|
+
focusedHour,
|
|
41
|
+
isHourSelected,
|
|
42
|
+
onHourSelect,
|
|
43
|
+
onHourFocus,
|
|
44
|
+
});
|
|
45
|
+
return (react_1.default.createElement(button_1.Button, { variant: "text", tabIndex: tabIndex, onKeyDown: onKeyDown, onClick: onClick, className: (0, cx_1.cx)("uxf-time-picker__hour", isSelected && classes_1.CLASSES.IS_SELECTED), ref: hourRef }, props.label));
|
|
46
|
+
};
|
|
47
|
+
exports.TimePickerHour = TimePickerHour;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TimePickerHours = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const time_picker_hour_1 = require("./time-picker-hour");
|
|
9
|
+
const use_hours_1 = require("@uxf/datepicker/hooks/use-hours");
|
|
10
|
+
const TimePickerHours = () => {
|
|
11
|
+
const { hours } = (0, use_hours_1.useHours)({});
|
|
12
|
+
return (react_1.default.createElement("div", { className: "uxf-time-picker__hours" }, hours.map((hour) => (react_1.default.createElement(time_picker_hour_1.TimePickerHour, { hour: hour.value, label: hour.label, key: hour.value })))));
|
|
13
|
+
};
|
|
14
|
+
exports.TimePickerHours = TimePickerHours;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import { InputProps } from "../input/input";
|
|
3
|
+
import { FormControlProps } from "../types";
|
|
4
|
+
import { TimeType } from "@uxf/datepicker/hooks/use-time-picker";
|
|
5
|
+
export interface TimePickerInputProps extends Omit<FormControlProps<TimeType | null>, "value">, Pick<InputProps, "size" | "variant"> {
|
|
6
|
+
className?: string;
|
|
7
|
+
defaultValue?: string;
|
|
8
|
+
error?: ReactNode;
|
|
9
|
+
errorId?: string;
|
|
10
|
+
form?: string;
|
|
11
|
+
helperText?: ReactNode;
|
|
12
|
+
hiddenLabel?: boolean;
|
|
13
|
+
id?: string;
|
|
14
|
+
label?: ReactNode;
|
|
15
|
+
leftAddon?: ReactNode;
|
|
16
|
+
leftElement?: ReactNode;
|
|
17
|
+
placeholder?: TimeType;
|
|
18
|
+
rightAddon?: ReactNode;
|
|
19
|
+
rightElement?: ReactNode;
|
|
20
|
+
value?: TimeType | null;
|
|
21
|
+
}
|
|
22
|
+
export declare const TimePickerInput: React.ForwardRefExoticComponent<TimePickerInputProps & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.TimePickerInput = void 0;
|
|
27
|
+
const classes_1 = require("@uxf/core/constants/classes");
|
|
28
|
+
const cx_1 = require("@uxf/core/utils/cx");
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
30
|
+
const form_control_1 = require("../form-control");
|
|
31
|
+
const forwardRef_1 = require("@uxf/core/utils/forwardRef");
|
|
32
|
+
const react_2 = require("@headlessui/react");
|
|
33
|
+
const time_picker_1 = require("./time-picker");
|
|
34
|
+
exports.TimePickerInput = (0, forwardRef_1.forwardRef)("TimePickerInput", (props, ref) => {
|
|
35
|
+
var _a;
|
|
36
|
+
const [isFocused, setIsFocused] = (0, react_1.useState)(false);
|
|
37
|
+
const generatedId = (0, react_1.useId)();
|
|
38
|
+
const id = (_a = props.id) !== null && _a !== void 0 ? _a : generatedId;
|
|
39
|
+
const errorId = props.isInvalid ? `${id}--error-message` : undefined;
|
|
40
|
+
const rootClassName = (0, cx_1.cx)("uxf-time-picker-input", isFocused && classes_1.CLASSES.IS_FOCUSED, props.isDisabled && classes_1.CLASSES.IS_DISABLED, props.isInvalid && classes_1.CLASSES.IS_INVALID, props.leftElement && "uxf-time-picker-input--has-left-element", props.rightElement && "uxf-time-picker-input--has-right-element", props.isRequired && classes_1.CLASSES.IS_REQUIRED, props.isReadOnly && classes_1.CLASSES.IS_READONLY);
|
|
41
|
+
const onFocus = (e) => {
|
|
42
|
+
var _a;
|
|
43
|
+
setIsFocused(true);
|
|
44
|
+
(_a = props.onFocus) === null || _a === void 0 ? void 0 : _a.call(props, e);
|
|
45
|
+
};
|
|
46
|
+
const onBlur = (e) => {
|
|
47
|
+
var _a;
|
|
48
|
+
setIsFocused(false);
|
|
49
|
+
(_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props, e);
|
|
50
|
+
};
|
|
51
|
+
return (react_1.default.createElement(form_control_1.FormControl, { className: rootClassName, errorId: errorId, form: props.form, helperText: props.helperText, hiddenLabel: props.hiddenLabel, inputId: id, isRequired: props.isRequired, label: props.label },
|
|
52
|
+
react_1.default.createElement(react_2.Popover, { className: "relative" },
|
|
53
|
+
react_1.default.createElement(react_2.Popover.Button, { as: "div", className: "uxf-time-picker-input__wrapper" },
|
|
54
|
+
react_1.default.createElement("span", { className: "uxf-time-picker-input__left-element" }, props.leftElement),
|
|
55
|
+
react_1.default.createElement("input", { "aria-describedby": errorId, "aria-errormessage": props.error && errorId ? `${errorId}__error-message` : undefined, "aria-invalid": !!props.error, "aria-live": "polite", autoComplete: "off", className: "uxf-time-picker-input__element", disabled: props.isDisabled, form: props.form, id: id, inputMode: "text", name: props.name, onBlur: onBlur, onChange: () => props.onChange, onFocus: onFocus, placeholder: "Vyberte \u010Das...", readOnly: props.isReadOnly, ref: ref, required: props.isRequired, tabIndex: props.isReadOnly ? -1 : undefined, value: props.value
|
|
56
|
+
? `${props.value.hour}:${props.value.minute < 10 ? "0" + props.value.minute : props.value.minute}`
|
|
57
|
+
: "" }),
|
|
58
|
+
react_1.default.createElement("span", { className: "uxf-time-picker-input__right-element" }, props.rightElement)),
|
|
59
|
+
!props.isDisabled && !props.isReadOnly && (react_1.default.createElement(react_2.Transition, { as: react_1.Fragment, enter: "transition duration-200 ease-out", enterFrom: "origin-top scale-50 opacity-0", enterTo: "origin-top scale-100 opacity-100", leave: "transition duration-200 ease-out", leaveFrom: "origin-top scale-50 opacity-100", leaveTo: "origin-top scale-0 opacity-0" },
|
|
60
|
+
react_1.default.createElement(react_2.Popover.Panel, { className: "uxf-time-picker-input__popover", static: true }, ({ close }) => {
|
|
61
|
+
var _a;
|
|
62
|
+
return props.onChange ? (react_1.default.createElement(time_picker_1.TimePicker, { closePopoverHandler: close, onChange: props.onChange, selectedTime: (_a = props.value) !== null && _a !== void 0 ? _a : null })) : (react_1.default.createElement(react_1.default.Fragment, null));
|
|
63
|
+
}))))));
|
|
64
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
declare const _default: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: React.ForwardRefExoticComponent<import("./time-picker-input").TimePickerInputProps & React.RefAttributes<HTMLInputElement>>;
|
|
5
|
+
};
|
|
6
|
+
export default _default;
|
|
7
|
+
export declare function Default(): JSX.Element;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.Default = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const time_picker_input_1 = require("./time-picker-input");
|
|
29
|
+
const icon_1 = require("../icon");
|
|
30
|
+
exports.default = {
|
|
31
|
+
title: "UI/TimePickerInput",
|
|
32
|
+
component: time_picker_input_1.TimePickerInput,
|
|
33
|
+
};
|
|
34
|
+
function Default() {
|
|
35
|
+
const [time, setTime] = (0, react_1.useState)(null);
|
|
36
|
+
const testTimePickers = (react_1.default.createElement(react_1.default.Fragment, null,
|
|
37
|
+
react_1.default.createElement(time_picker_input_1.TimePickerInput, { id: "time-test", name: "time", label: "\u010Cas \u010Dehokoliv", rightElement: react_1.default.createElement(icon_1.Icon, { name: "clock", size: 24 }), value: time, onChange: (data) => setTime(data) }),
|
|
38
|
+
react_1.default.createElement(time_picker_input_1.TimePickerInput, { id: "time-test-disabled", name: "time-disabled", label: "\u010Cas disabled", rightElement: react_1.default.createElement(icon_1.Icon, { name: "clock", size: 24 }), value: time, onChange: (data) => setTime(data), isDisabled: true }),
|
|
39
|
+
react_1.default.createElement(time_picker_input_1.TimePickerInput, { id: "time-test-readonly", name: "time-readonly", label: "\u010Cas readonly", rightElement: react_1.default.createElement(icon_1.Icon, { name: "clock", size: 24 }), value: time, onChange: (data) => setTime(data), isReadOnly: true }),
|
|
40
|
+
react_1.default.createElement(time_picker_input_1.TimePickerInput, { id: "time-test-invalid", name: "time-invalid", label: "\u010Cas invalid", rightElement: react_1.default.createElement(icon_1.Icon, { name: "clock", size: 24 }), value: time, onChange: (data) => setTime(data), isInvalid: true })));
|
|
41
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
42
|
+
react_1.default.createElement("div", { className: "light max-w-[640px] space-y-4 rounded bg-white p-8" }, testTimePickers),
|
|
43
|
+
react_1.default.createElement("div", { className: "dark max-w-[640px] space-y-4 rounded bg-gray-900 p-8 text-white" }, testTimePickers)));
|
|
44
|
+
}
|
|
45
|
+
exports.Default = Default;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.TimePickerMinute = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const time_picker_context_1 = require("@uxf/datepicker/contexts/time-picker-context");
|
|
29
|
+
const use_minute_1 = require("@uxf/datepicker/hooks/use-minute");
|
|
30
|
+
const cx_1 = require("@uxf/core/utils/cx");
|
|
31
|
+
const classes_1 = require("@uxf/core/constants/classes");
|
|
32
|
+
const button_1 = require("../button");
|
|
33
|
+
const TimePickerMinute = (props) => {
|
|
34
|
+
const minuteRef = (0, react_1.useRef)(null);
|
|
35
|
+
const { focusedMinute, isMinuteFocused, isMinuteSelected, onMinuteSelect, onMinuteFocus } = (0, react_1.useContext)(time_picker_context_1.TimePickerContext);
|
|
36
|
+
const { isSelected, onClick, onKeyDown, tabIndex } = (0, use_minute_1.useMinute)({
|
|
37
|
+
minute: props.minute,
|
|
38
|
+
minuteRef,
|
|
39
|
+
focusedMinute,
|
|
40
|
+
isMinuteFocused,
|
|
41
|
+
isMinuteSelected,
|
|
42
|
+
onMinuteFocus,
|
|
43
|
+
onMinuteSelect,
|
|
44
|
+
});
|
|
45
|
+
return (react_1.default.createElement(button_1.Button, { variant: "text", tabIndex: tabIndex, onKeyDown: onKeyDown, onClick: onClick, className: (0, cx_1.cx)("uxf-time-picker__minute", isSelected && classes_1.CLASSES.IS_SELECTED), ref: minuteRef }, props.label));
|
|
46
|
+
};
|
|
47
|
+
exports.TimePickerMinute = TimePickerMinute;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TimePickerMinutes = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const time_picker_minute_1 = require("./time-picker-minute");
|
|
9
|
+
const use_minutes_1 = require("@uxf/datepicker/hooks/use-minutes");
|
|
10
|
+
const TimePickerMinutes = () => {
|
|
11
|
+
const { minutes } = (0, use_minutes_1.useMinutes)({});
|
|
12
|
+
return (react_1.default.createElement("div", { className: "uxf-time-picker__minutes" }, minutes.map((minute) => (react_1.default.createElement(time_picker_minute_1.TimePickerMinute, { minute: minute.value, label: minute.label, key: minute.value })))));
|
|
13
|
+
};
|
|
14
|
+
exports.TimePickerMinutes = TimePickerMinutes;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FC } from "react";
|
|
2
|
+
import { OnTimeChangeType, TimeType } from "@uxf/datepicker/hooks/use-time-picker";
|
|
3
|
+
export interface TimePickerProps {
|
|
4
|
+
closePopoverHandler: () => void;
|
|
5
|
+
onChange: (data: OnTimeChangeType) => void;
|
|
6
|
+
selectedTime: TimeType | null;
|
|
7
|
+
}
|
|
8
|
+
export declare const TimePicker: FC<TimePickerProps>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.TimePicker = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const time_picker_hours_1 = require("./time-picker-hours");
|
|
29
|
+
const time_picker_minutes_1 = require("./time-picker-minutes");
|
|
30
|
+
const use_time_picker_1 = require("@uxf/datepicker/hooks/use-time-picker");
|
|
31
|
+
const icon_1 = require("../icon");
|
|
32
|
+
const button_1 = require("../button");
|
|
33
|
+
const time_picker_context_1 = require("@uxf/datepicker/contexts/time-picker-context");
|
|
34
|
+
const TimePicker = (props) => {
|
|
35
|
+
const [viewMode, setViewMode] = (0, react_1.useState)("global");
|
|
36
|
+
const { goToNextMinute, goToPrevHour, goToPrevMinute, goToNextHour, ...contextProps } = (0, use_time_picker_1.useTimePicker)({
|
|
37
|
+
selectedTime: props.selectedTime,
|
|
38
|
+
onTimeChange: props.onChange,
|
|
39
|
+
onSelectCallback: () => setViewMode("global"),
|
|
40
|
+
});
|
|
41
|
+
const timePickerComponents = (0, react_1.useMemo)(() => {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
return ({
|
|
44
|
+
global: (react_1.default.createElement("div", { className: "uxf-time-picker__global" },
|
|
45
|
+
react_1.default.createElement("div", { className: "uxf-time-picker__global__column" },
|
|
46
|
+
react_1.default.createElement(button_1.Button, { iconButton: true, onClick: goToNextHour, title: "Dal\u0161\u00ED", variant: "text" },
|
|
47
|
+
react_1.default.createElement(icon_1.Icon, { name: "chevronUp", size: 16 })),
|
|
48
|
+
react_1.default.createElement(button_1.Button, { variant: "text", onClick: () => setViewMode("hour") }, (_b = (_a = props.selectedTime) === null || _a === void 0 ? void 0 : _a.hour) !== null && _b !== void 0 ? _b : "0"),
|
|
49
|
+
react_1.default.createElement(button_1.Button, { iconButton: true, onClick: goToPrevHour, title: "P\u0159edchoz\u00ED", variant: "text" },
|
|
50
|
+
react_1.default.createElement(icon_1.Icon, { name: "chevronDown", size: 16 }))),
|
|
51
|
+
react_1.default.createElement("div", null, ":"),
|
|
52
|
+
react_1.default.createElement("div", { className: "uxf-time-picker__global__column" },
|
|
53
|
+
react_1.default.createElement(button_1.Button, { iconButton: true, onClick: goToNextMinute, title: "Dal\u0161\u00ED", variant: "text" },
|
|
54
|
+
react_1.default.createElement(icon_1.Icon, { name: "chevronUp", size: 16 })),
|
|
55
|
+
react_1.default.createElement(button_1.Button, { variant: "text", onClick: () => setViewMode("minute") }, props.selectedTime
|
|
56
|
+
? props.selectedTime.minute < 10
|
|
57
|
+
? "0" + props.selectedTime.minute
|
|
58
|
+
: props.selectedTime.minute
|
|
59
|
+
: "00"),
|
|
60
|
+
react_1.default.createElement(button_1.Button, { iconButton: true, onClick: goToPrevMinute, title: "P\u0159edchoz\u00ED", variant: "text" },
|
|
61
|
+
react_1.default.createElement(icon_1.Icon, { name: "chevronDown", size: 16 }))))),
|
|
62
|
+
hour: react_1.default.createElement(time_picker_hours_1.TimePickerHours, null),
|
|
63
|
+
minute: react_1.default.createElement(time_picker_minutes_1.TimePickerMinutes, null),
|
|
64
|
+
});
|
|
65
|
+
}, [goToPrevHour, props.selectedTime, goToNextHour, goToPrevMinute, goToNextMinute]);
|
|
66
|
+
return (react_1.default.createElement(time_picker_context_1.TimePickerContext.Provider, { value: contextProps },
|
|
67
|
+
react_1.default.createElement("div", null, timePickerComponents[viewMode])));
|
|
68
|
+
};
|
|
69
|
+
exports.TimePicker = TimePicker;
|
package/utils/icons-config.js
CHANGED
|
@@ -15,6 +15,11 @@ module.exports = {
|
|
|
15
15
|
height: 512,
|
|
16
16
|
data: `<path d="M137.4 374.6a32.05 32.05 0 0 0 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9S301 191.9 288 191.9L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z" fill="currentColor"/>`,
|
|
17
17
|
},
|
|
18
|
+
clock: {
|
|
19
|
+
width: 512,
|
|
20
|
+
height: 512,
|
|
21
|
+
data: `<path d="M232 120c0-13.3 10.7-24 24-24s24 10.7 24 24v123.2l85.3 56.8c11 7.4 14 22.3 5.8 33.3-6.5 11-21.4 14-32.4 5.8l-96-64c-6.7-3.6-10.7-11.1-10.7-20V120zM256 0c141.4 0 256 114.6 256 256S397.4 512 256 512 0 397.4 0 256 114.6 0 256 0zM48 256c0 114.9 93.1 208 208 208s208-93.1 208-208S370.9 48 256 48 48 141.1 48 256z" fill="currentColor"/>`,
|
|
22
|
+
},
|
|
18
23
|
bars: {
|
|
19
24
|
width: 448,
|
|
20
25
|
height: 512,
|
|
@@ -35,11 +40,21 @@ module.exports = {
|
|
|
35
40
|
height: 512,
|
|
36
41
|
data: `<path d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 278.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z" fill="currentColor"/>`,
|
|
37
42
|
},
|
|
43
|
+
chevronsLeft: {
|
|
44
|
+
width: 512,
|
|
45
|
+
height: 512,
|
|
46
|
+
data: `<path d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 278.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192zm384-192l-192 192c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 470.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z" fill="currentColor"/>`,
|
|
47
|
+
},
|
|
38
48
|
chevronRight: {
|
|
39
49
|
width: 384,
|
|
40
50
|
height: 512,
|
|
41
51
|
data: `<path d="M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z" fill="currentColor"/>`,
|
|
42
52
|
},
|
|
53
|
+
chevronsRight: {
|
|
54
|
+
width: 512,
|
|
55
|
+
height: 512,
|
|
56
|
+
data: `<path d="M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-192-192c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 233.4 425.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l192-192zm-384 192l192-192c12.5-12.5 12.5-32.8 0-45.3l-192-192c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 41.4 425.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z" fill="currentColor"/>`,
|
|
57
|
+
},
|
|
43
58
|
chevronUp: {
|
|
44
59
|
width: 512,
|
|
45
60
|
height: 512,
|
package/utils/tailwind-config.js
CHANGED
|
@@ -33,11 +33,13 @@ module.exports = {
|
|
|
33
33
|
colors: {
|
|
34
34
|
inherit: "inherit",
|
|
35
35
|
lightHigh: "#111827",
|
|
36
|
-
lightMedium: "#
|
|
37
|
-
lightLow: "#
|
|
36
|
+
lightMedium: "#4b5563",
|
|
37
|
+
lightLow: "#9ca3af",
|
|
38
38
|
darkHigh: "#ffffff",
|
|
39
39
|
darkMedium: "#ffffffcc",
|
|
40
40
|
darkLow: "#ffffff80",
|
|
41
|
+
lightBorder: "#e5e7eb",
|
|
42
|
+
darkBorder: "#374151",
|
|
41
43
|
primary: {
|
|
42
44
|
50: "#eff6ff",
|
|
43
45
|
100: "#dbeafe",
|