@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.
Files changed (38) hide show
  1. package/config/icons-config.d.ts +1 -1
  2. package/config/icons-config.js +1 -1
  3. package/config/icons.d.ts +15 -0
  4. package/config/icons.js +3 -0
  5. package/css/layout.css +2 -2
  6. package/css/pagination.css +27 -0
  7. package/css/tabs.css +26 -6
  8. package/css/time-picker-input.css +133 -0
  9. package/css/time-picker.css +27 -0
  10. package/input/input-element.d.ts +1 -1
  11. package/package.json +1 -1
  12. package/pagination/pagination.d.ts +7 -0
  13. package/pagination/pagination.js +49 -0
  14. package/pagination/pagination.stories.d.ts +7 -0
  15. package/pagination/pagination.stories.js +47 -0
  16. package/tabs/tabs.d.ts +1 -0
  17. package/tabs/tabs.js +7 -4
  18. package/tabs/tabs.stories.js +2 -2
  19. package/text-input/text-input.d.ts +1 -1
  20. package/text-input/text-input.stories.js +3 -1
  21. package/time-picker-input/index.d.ts +2 -0
  22. package/time-picker-input/index.js +18 -0
  23. package/time-picker-input/time-picker-hour.d.ts +5 -0
  24. package/time-picker-input/time-picker-hour.js +47 -0
  25. package/time-picker-input/time-picker-hours.d.ts +2 -0
  26. package/time-picker-input/time-picker-hours.js +14 -0
  27. package/time-picker-input/time-picker-input.d.ts +22 -0
  28. package/time-picker-input/time-picker-input.js +64 -0
  29. package/time-picker-input/time-picker-input.stories.d.ts +7 -0
  30. package/time-picker-input/time-picker-input.stories.js +45 -0
  31. package/time-picker-input/time-picker-minute.d.ts +5 -0
  32. package/time-picker-input/time-picker-minute.js +47 -0
  33. package/time-picker-input/time-picker-minutes.d.ts +2 -0
  34. package/time-picker-input/time-picker-minutes.js +14 -0
  35. package/time-picker-input/time-picker.d.ts +8 -0
  36. package/time-picker-input/time-picker.js +69 -0
  37. package/utils/icons-config.js +15 -0
  38. package/utils/tailwind-config.js +4 -2
@@ -1,2 +1,2 @@
1
- export declare const ICONS_VERSION = "1668119882752";
1
+ export declare const ICONS_VERSION = "1668632602549";
2
2
  export declare const ICON_SPRITE = "/.storybook/static-assets/icons-generated/_icon-sprite.svg";
@@ -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 = "1668119882752";
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
@@ -20,7 +20,7 @@ body {
20
20
  }
21
21
 
22
22
  &__logo {
23
- @apply md:px-2
23
+ @apply md:px-2;
24
24
  }
25
25
  }
26
26
 
@@ -44,4 +44,4 @@ body {
44
44
  &__logo {
45
45
  @apply flex justify-center;
46
46
  }
47
- }
47
+ }
@@ -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-gray-600 hover:bg-gray-100 focus-visible:ring-primary-500;
71
+ @apply text-lightMedium hover:bg-gray-100 focus-visible:ring-primary-500;
72
72
  }
73
73
 
74
74
  :root .dark & {
75
- @apply text-gray-200 hover:bg-gray-800 focus-visible:ring-primary-500
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-gray-900 before:border-b-primary-500 hover:bg-transparent;
83
+ @apply text-lightHigh before:border-b-primary-500 hover:bg-transparent;
84
84
  }
85
85
 
86
86
  :root .dark & {
87
- @apply text-white before:border-b-primary-500 hover:bg-transparent;
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-gray-600 bg-gray-100 hover:text-primary-600 hover:bg-primary-100
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-gray-200 bg-gray-700 hover:bg-gray-800 focus-visible:ring-primary-500
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
+ }
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/ui",
3
- "version": "1.0.0-beta.78",
3
+ "version": "1.0.0-beta.79",
4
4
  "description": "",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -0,0 +1,7 @@
1
+ import { FC } from "react";
2
+ export interface PaginationProps {
3
+ count: number;
4
+ page: number;
5
+ onPageChange: (index: number) => void;
6
+ }
7
+ export declare const Pagination: FC<PaginationProps>;
@@ -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,7 @@
1
+ import React from "react";
2
+ declare const _default: {
3
+ title: string;
4
+ component: React.FC<import("./pagination").PaginationProps>;
5
+ };
6
+ export default _default;
7
+ export declare function Default(): JSX.Element;
@@ -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
@@ -1,6 +1,7 @@
1
1
  import React, { ReactNode } from "react";
2
2
  export interface TabsPanelProps {
3
3
  className?: string;
4
+ disabled?: boolean;
4
5
  title: ReactNode;
5
6
  }
6
7
  export interface TabsProps {
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) => c.props.title);
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 });
@@ -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, { title: "Tab 4 title", className: "grid h-12 w-56 place-items-center bg-gray-300" }, "content of the Tab 4"))),
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, { title: "Tab 4 title", className: "grid h-12 w-56 place-items-center bg-gray-300" }, "content of the Tab 4")))),
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,2 @@
1
+ export * from "./time-picker";
2
+ export * from "./time-picker-input";
@@ -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,5 @@
1
+ import { FC } from "react";
2
+ export declare const TimePickerHour: FC<{
3
+ hour: number;
4
+ label: string;
5
+ }>;
@@ -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,2 @@
1
+ import { FC } from "react";
2
+ export declare const TimePickerHours: FC;
@@ -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,5 @@
1
+ import { FC } from "react";
2
+ export declare const TimePickerMinute: FC<{
3
+ minute: number;
4
+ label: string;
5
+ }>;
@@ -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,2 @@
1
+ import { FC } from "react";
2
+ export declare const TimePickerMinutes: FC;
@@ -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;
@@ -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,
@@ -33,11 +33,13 @@ module.exports = {
33
33
  colors: {
34
34
  inherit: "inherit",
35
35
  lightHigh: "#111827",
36
- lightMedium: "#4B5563",
37
- lightLow: "#9CA3AF",
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",