@eui/eds-react 22.0.0-alpha.15 → 22.0.0-alpha.16

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 (101) hide show
  1. package/eds-datepicker/eds-date-adapter.d.ts +56 -0
  2. package/eds-datepicker/eds-date-adapter.d.ts.map +1 -0
  3. package/eds-datepicker/eds-date-adapter.js +69 -0
  4. package/eds-datepicker/eds-date-adapter.js.map +1 -0
  5. package/eds-datepicker/eds-datepicker.css +137 -0
  6. package/eds-datepicker/eds-datepicker.d.ts +67 -0
  7. package/eds-datepicker/eds-datepicker.d.ts.map +1 -0
  8. package/eds-datepicker/eds-datepicker.js +203 -0
  9. package/eds-datepicker/eds-datepicker.js.map +1 -0
  10. package/eds-datepicker/eds-luxon-date-adapter.d.ts +33 -0
  11. package/eds-datepicker/eds-luxon-date-adapter.d.ts.map +1 -0
  12. package/eds-datepicker/eds-luxon-date-adapter.js +90 -0
  13. package/eds-datepicker/eds-luxon-date-adapter.js.map +1 -0
  14. package/eds-datepicker/eds-timepicker.css +69 -0
  15. package/eds-datepicker/eds-timepicker.d.ts +44 -0
  16. package/eds-datepicker/eds-timepicker.d.ts.map +1 -0
  17. package/eds-datepicker/eds-timepicker.js +122 -0
  18. package/eds-datepicker/eds-timepicker.js.map +1 -0
  19. package/eds-datepicker/index.d.ts +8 -0
  20. package/eds-datepicker/index.d.ts.map +1 -0
  21. package/eds-datepicker/index.js +5 -0
  22. package/eds-datepicker/index.js.map +1 -0
  23. package/eds-label/eds-label.css +19 -0
  24. package/eds-label/eds-label.d.ts +22 -0
  25. package/eds-label/eds-label.d.ts.map +1 -0
  26. package/eds-label/eds-label.js +15 -0
  27. package/eds-label/eds-label.js.map +1 -0
  28. package/eds-label/index.d.ts +3 -0
  29. package/eds-label/index.d.ts.map +1 -0
  30. package/eds-label/index.js +2 -0
  31. package/eds-label/index.js.map +1 -0
  32. package/eds-shell/eds-shell-sidebar.css +1 -0
  33. package/eds-shell/eds-shell.css +2 -1
  34. package/eds-table/eds-table-context.d.ts +56 -0
  35. package/eds-table/eds-table-context.d.ts.map +1 -0
  36. package/eds-table/eds-table-context.js +12 -0
  37. package/eds-table/eds-table-context.js.map +1 -0
  38. package/eds-table/eds-table-expandable-row.d.ts +22 -0
  39. package/eds-table/eds-table-expandable-row.d.ts.map +1 -0
  40. package/eds-table/eds-table-expandable-row.js +25 -0
  41. package/eds-table/eds-table-expandable-row.js.map +1 -0
  42. package/eds-table/eds-table-filter.d.ts +38 -0
  43. package/eds-table/eds-table-filter.d.ts.map +1 -0
  44. package/eds-table/eds-table-filter.js +66 -0
  45. package/eds-table/eds-table-filter.js.map +1 -0
  46. package/eds-table/eds-table-highlight.d.ts +38 -0
  47. package/eds-table/eds-table-highlight.d.ts.map +1 -0
  48. package/eds-table/eds-table-highlight.js +81 -0
  49. package/eds-table/eds-table-highlight.js.map +1 -0
  50. package/eds-table/eds-table-selectable-header.d.ts +19 -0
  51. package/eds-table/eds-table-selectable-header.d.ts.map +1 -0
  52. package/eds-table/eds-table-selectable-header.js +38 -0
  53. package/eds-table/eds-table-selectable-header.js.map +1 -0
  54. package/eds-table/eds-table-selectable-row.d.ts +21 -0
  55. package/eds-table/eds-table-selectable-row.d.ts.map +1 -0
  56. package/eds-table/eds-table-selectable-row.js +92 -0
  57. package/eds-table/eds-table-selectable-row.js.map +1 -0
  58. package/eds-table/eds-table-sort.model.d.ts +11 -0
  59. package/eds-table/eds-table-sort.model.d.ts.map +1 -0
  60. package/eds-table/eds-table-sort.model.js +5 -0
  61. package/eds-table/eds-table-sort.model.js.map +1 -0
  62. package/eds-table/eds-table-sortable-col.d.ts +32 -0
  63. package/eds-table/eds-table-sortable-col.d.ts.map +1 -0
  64. package/eds-table/eds-table-sortable-col.js +65 -0
  65. package/eds-table/eds-table-sortable-col.js.map +1 -0
  66. package/eds-table/eds-table-sticky-col.d.ts +25 -0
  67. package/eds-table/eds-table-sticky-col.d.ts.map +1 -0
  68. package/eds-table/eds-table-sticky-col.js +23 -0
  69. package/eds-table/eds-table-sticky-col.js.map +1 -0
  70. package/eds-table/eds-table.css +410 -0
  71. package/eds-table/eds-table.d.ts +92 -0
  72. package/eds-table/eds-table.d.ts.map +1 -0
  73. package/eds-table/eds-table.js +353 -0
  74. package/eds-table/eds-table.js.map +1 -0
  75. package/eds-table/index.d.ts +20 -0
  76. package/eds-table/index.d.ts.map +1 -0
  77. package/eds-table/index.js +10 -0
  78. package/eds-table/index.js.map +1 -0
  79. package/index.d.ts +6 -0
  80. package/index.d.ts.map +1 -1
  81. package/index.js +3 -0
  82. package/index.js.map +1 -1
  83. package/package.json +22 -2
  84. package/showcase/doc-page.d.ts +56 -0
  85. package/showcase/doc-page.d.ts.map +1 -0
  86. package/showcase/doc-page.js +104 -0
  87. package/showcase/doc-page.js.map +1 -0
  88. package/showcase/index.d.ts +7 -0
  89. package/showcase/index.d.ts.map +1 -0
  90. package/showcase/index.js +7 -0
  91. package/showcase/index.js.map +1 -0
  92. package/showcase/jsx-to-string.d.ts +15 -0
  93. package/showcase/jsx-to-string.d.ts.map +1 -0
  94. package/showcase/jsx-to-string.js +98 -0
  95. package/showcase/jsx-to-string.js.map +1 -0
  96. package/showcase/shared.d.ts +64 -0
  97. package/showcase/shared.d.ts.map +1 -0
  98. package/showcase/shared.js +43 -0
  99. package/showcase/shared.js.map +1 -0
  100. package/showcase/showcase.css +407 -0
  101. package/styles.css +4 -0
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Abstract date adapter interface for `EdsDatepicker` (ported 1:1 from the Angular
3
+ * `eds-date-adapter.ts`). Implement this to support different date libraries (native Date, Luxon,
4
+ * etc.). React has no Angular DI, so the adapter is passed to `EdsDatepicker` via an `adapter`
5
+ * prop instead of an injection token; the default is `EdsNativeDateAdapter`.
6
+ */
7
+ export interface EdsDateAdapter<D = unknown> {
8
+ /** Create a date from year, month (0-based), day. */
9
+ create(year: number, month: number, day: number): D;
10
+ /** Get today's date. */
11
+ today(): D;
12
+ /** Get the year of a date. */
13
+ getYear(date: D): number;
14
+ /** Get the month (0-based) of a date. */
15
+ getMonth(date: D): number;
16
+ /** Get the day of the month. */
17
+ getDate(date: D): number;
18
+ /** Get day of week (1=Monday, 7=Sunday). */
19
+ getDayOfWeek(date: D): number;
20
+ /** Get number of days in the given month. */
21
+ getDaysInMonth(date: D): number;
22
+ /** Add months to a date. */
23
+ addMonths(date: D, months: number): D;
24
+ /** Format a date for display (dd/mm/yyyy by default). */
25
+ format(date: D, formatStr?: string): string;
26
+ /** Parse a string into a date. Returns null if invalid. */
27
+ parse(value: string, formatStr?: string): D | null;
28
+ /** Check if a date is before another. */
29
+ isBefore(date: D, compare: D): boolean;
30
+ /** Check if a date is after another. */
31
+ isAfter(date: D, compare: D): boolean;
32
+ /** Check if two dates are the same day. */
33
+ isSameDay(a: D, b: D): boolean;
34
+ /** Check if a value is a valid date. */
35
+ isValid(date: unknown): date is D;
36
+ }
37
+ /**
38
+ * Default native `Date` adapter (ported 1:1 from the Angular `EdsNativeDateAdapter`).
39
+ */
40
+ export declare class EdsNativeDateAdapter implements EdsDateAdapter<Date> {
41
+ create(year: number, month: number, day: number): Date;
42
+ today(): Date;
43
+ getYear(date: Date): number;
44
+ getMonth(date: Date): number;
45
+ getDate(date: Date): number;
46
+ getDayOfWeek(date: Date): number;
47
+ getDaysInMonth(date: Date): number;
48
+ addMonths(date: Date, months: number): Date;
49
+ format(date: Date, _formatStr?: string): string;
50
+ parse(value: string, _formatStr?: string): Date | null;
51
+ isBefore(date: Date, compare: Date): boolean;
52
+ isAfter(date: Date, compare: Date): boolean;
53
+ isSameDay(a: Date, b: Date): boolean;
54
+ isValid(date: unknown): date is Date;
55
+ }
56
+ //# sourceMappingURL=eds-date-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eds-date-adapter.d.ts","sourceRoot":"","sources":["../../src/eds-datepicker/eds-date-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACvC,qDAAqD;IACrD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;IACpD,wBAAwB;IACxB,KAAK,IAAI,CAAC,CAAC;IACX,8BAA8B;IAC9B,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IAC1B,gCAAgC;IAChC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IACzB,4CAA4C;IAC5C,YAAY,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,6CAA6C;IAC7C,cAAc,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IAChC,4BAA4B;IAC5B,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;IACtC,yDAAyD;IACzD,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5C,2DAA2D;IAC3D,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;IACnD,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;IACvC,wCAAwC;IACxC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;IACtC,2CAA2C;IAC3C,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAC/B,wCAAwC;IACxC,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,cAAc,CAAC,IAAI,CAAC;IAC7D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAItD,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAI3B,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAI5B,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAI3B,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAMhC,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAIlC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3C,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAO/C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAkBtD,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO;IAI5C,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO;IAI3C,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO;IAQpC,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,IAAI;CAGvC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Default native `Date` adapter (ported 1:1 from the Angular `EdsNativeDateAdapter`).
3
+ */
4
+ export class EdsNativeDateAdapter {
5
+ create(year, month, day) {
6
+ return new Date(year, month, day);
7
+ }
8
+ today() {
9
+ return new Date();
10
+ }
11
+ getYear(date) {
12
+ return date.getFullYear();
13
+ }
14
+ getMonth(date) {
15
+ return date.getMonth();
16
+ }
17
+ getDate(date) {
18
+ return date.getDate();
19
+ }
20
+ getDayOfWeek(date) {
21
+ // Convert Sunday=0 to Monday=1...Sunday=7
22
+ const dow = date.getDay();
23
+ return dow === 0 ? 7 : dow;
24
+ }
25
+ getDaysInMonth(date) {
26
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();
27
+ }
28
+ addMonths(date, months) {
29
+ return new Date(date.getFullYear(), date.getMonth() + months, 1);
30
+ }
31
+ format(date, _formatStr) {
32
+ const d = String(date.getDate()).padStart(2, '0');
33
+ const m = String(date.getMonth() + 1).padStart(2, '0');
34
+ const y = date.getFullYear();
35
+ return `${d}/${m}/${y}`;
36
+ }
37
+ parse(value, _formatStr) {
38
+ const parts = value.split('/');
39
+ if (parts.length !== 3) {
40
+ return null;
41
+ }
42
+ const day = parseInt(parts[0], 10);
43
+ const month = parseInt(parts[1], 10) - 1;
44
+ const year = parseInt(parts[2], 10);
45
+ if (isNaN(day) || isNaN(month) || isNaN(year)) {
46
+ return null;
47
+ }
48
+ const date = new Date(year, month, day);
49
+ if (date.getDate() !== day || date.getMonth() !== month || date.getFullYear() !== year) {
50
+ return null;
51
+ }
52
+ return date;
53
+ }
54
+ isBefore(date, compare) {
55
+ return date.getTime() < compare.getTime();
56
+ }
57
+ isAfter(date, compare) {
58
+ return date.getTime() > compare.getTime();
59
+ }
60
+ isSameDay(a, b) {
61
+ return (a.getDate() === b.getDate() &&
62
+ a.getMonth() === b.getMonth() &&
63
+ a.getFullYear() === b.getFullYear());
64
+ }
65
+ isValid(date) {
66
+ return date instanceof Date && !isNaN(date.getTime());
67
+ }
68
+ }
69
+ //# sourceMappingURL=eds-date-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eds-date-adapter.js","sourceRoot":"","sources":["../../src/eds-datepicker/eds-date-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /* Pure-React port of eds-datepicker.scss (1:1). `:host` -> `.eds-datepicker`; the `.eui-21`
2
+ * wrapper is dropped (tokens cascade from the eui-21 context on an ancestor). Child element
3
+ * classes are nested as descendants. Tokens/privates verbatim. */
4
+
5
+ .eds-datepicker {
6
+ display: inline-block;
7
+ position: relative;
8
+ width: 100%;
9
+ }
10
+
11
+ .eds-datepicker .eds-datepicker__group {
12
+ margin-bottom: 0;
13
+ }
14
+
15
+ .eds-datepicker .eds-datepicker__dropdown {
16
+ position: absolute;
17
+ top: 100%;
18
+ left: 0;
19
+ z-index: 1000;
20
+ margin-top: var(--eds-sp-3xs);
21
+ background-color: var(--eds-c-surface-elevation);
22
+ border: var(--eds-bw-xs) solid var(--eds-c-border-divider);
23
+ border-radius: var(--eds-br-m);
24
+ box-shadow: var(--eds-sh-2);
25
+ padding: var(--eds-sp-s);
26
+ width: 280px;
27
+ }
28
+
29
+ .eds-datepicker .eds-datepicker__dropdown--up {
30
+ top: auto;
31
+ bottom: 100%;
32
+ margin-top: 0;
33
+ margin-bottom: var(--eds-sp-3xs);
34
+ }
35
+
36
+ .eds-datepicker .eds-datepicker__header {
37
+ display: flex;
38
+ align-items: center;
39
+ justify-content: space-between;
40
+ margin-bottom: var(--eds-sp-xs);
41
+ }
42
+
43
+ .eds-datepicker .eds-datepicker__month-label {
44
+ font: var(--eds-f-label-m-semi-bold);
45
+ color: var(--eds-c-foreground-default);
46
+ }
47
+
48
+ .eds-datepicker .eds-datepicker__nav-btn {
49
+ background: none;
50
+ border: none;
51
+ cursor: pointer;
52
+ font-size: 18px;
53
+ padding: var(--eds-sp-3xs) var(--eds-sp-xs);
54
+ border-radius: var(--eds-br-xs);
55
+ color: var(--eds-c-foreground-subtle);
56
+ }
57
+
58
+ .eds-datepicker .eds-datepicker__nav-btn:hover {
59
+ background-color: var(--eds-c-surface-neutral-subtler);
60
+ color: var(--eds-c-foreground-default);
61
+ }
62
+
63
+ .eds-datepicker .eds-datepicker__nav-btn:focus-visible {
64
+ outline: 2px solid var(--eds-c-focus-default, #0e47cb);
65
+ outline-offset: 1px;
66
+ }
67
+
68
+ .eds-datepicker .eds-datepicker__weekdays {
69
+ display: grid;
70
+ grid-template-columns: repeat(7, 1fr);
71
+ text-align: center;
72
+ margin-bottom: var(--eds-sp-3xs);
73
+ }
74
+
75
+ .eds-datepicker .eds-datepicker__weekday {
76
+ font: var(--eds-f-paragraph-s);
77
+ color: var(--eds-c-foreground-subtler);
78
+ padding: var(--eds-sp-3xs) 0;
79
+ }
80
+
81
+ .eds-datepicker .eds-datepicker__days {
82
+ display: grid;
83
+ grid-template-columns: repeat(7, 1fr);
84
+ gap: 2px;
85
+ }
86
+
87
+ .eds-datepicker .eds-datepicker__day {
88
+ background: none;
89
+ border: none;
90
+ cursor: pointer;
91
+ font: var(--eds-f-paragraph-s);
92
+ padding: var(--eds-sp-3xs);
93
+ border-radius: var(--eds-br-xs);
94
+ text-align: center;
95
+ min-height: 32px;
96
+ display: flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ }
100
+
101
+ .eds-datepicker .eds-datepicker__day:hover:not(:disabled) {
102
+ background-color: var(--eds-c-surface-neutral-subtler);
103
+ }
104
+
105
+ .eds-datepicker .eds-datepicker__day--today {
106
+ font-weight: 700;
107
+ border: var(--eds-bw-xs) solid var(--eds-c-border-primary);
108
+ }
109
+
110
+ .eds-datepicker .eds-datepicker__day--selected {
111
+ background-color: var(--eds-c-surface-primary) !important;
112
+ color: var(--eds-c-on-surface-primary);
113
+ font-weight: 600;
114
+ }
115
+
116
+ .eds-datepicker .eds-datepicker__day--outside {
117
+ color: var(--eds-c-foreground-subtler);
118
+ opacity: 0.4;
119
+ cursor: default;
120
+ }
121
+
122
+ .eds-datepicker .eds-datepicker__day--empty {
123
+ cursor: default;
124
+ }
125
+
126
+ .eds-datepicker .eds-datepicker__day:focus-visible {
127
+ outline: 2px solid var(--eds-c-focus-default, #0e47cb);
128
+ outline-offset: 1px;
129
+ }
130
+
131
+ .eds-datepicker .eds-datepicker__time {
132
+ margin-top: var(--eds-sp-s);
133
+ padding-top: var(--eds-sp-s);
134
+ border-top: var(--eds-bw-xs) solid var(--eds-c-border-divider);
135
+ display: flex;
136
+ justify-content: center;
137
+ }
@@ -0,0 +1,67 @@
1
+ import * as React from 'react';
2
+ import { EdsDateAdapter } from './eds-date-adapter.js';
3
+ /**
4
+ * The selected-date value shape. Mirrors the Angular `value = model<any>(null)`: the value type is
5
+ * whatever the active adapter produces (`Date` for the default `EdsNativeDateAdapter`, a Luxon
6
+ * `DateTime` for `EdsLuxonDateAdapter`), so it is intentionally `unknown` here — the consumer knows
7
+ * the concrete shape from the adapter it supplies.
8
+ */
9
+ export type EdsDatepickerValue = unknown;
10
+ export interface EdsDatepickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
11
+ /** Data attribute for e2e testing. Applied as `data-e2e`. @default 'eds-datepicker' */
12
+ e2eAttr?: string;
13
+ /** Input element id. @default 'eds-datepicker-input' */
14
+ inputId?: string;
15
+ /** Placeholder text. @default 'dd/mm/yyyy' */
16
+ placeholder?: string;
17
+ /** Aria label for the input. @default 'Date input' */
18
+ ariaLabel?: string;
19
+ /** Date format for display (default: dd/mm/yyyy). @default 'dd/mm/yyyy' */
20
+ dateFormat?: string;
21
+ /** Minimum selectable date. @default null */
22
+ minDate?: Date | null;
23
+ /** Maximum selectable date. @default null */
24
+ maxDate?: Date | null;
25
+ /** Whether the datepicker is disabled. @default false */
26
+ disabled?: boolean;
27
+ /** Whether the datepicker is readonly. @default false */
28
+ readonly?: boolean;
29
+ /** Whether to show a timepicker alongside the calendar. @default false */
30
+ isDatetimepicker?: boolean;
31
+ /** Whether the timepicker shows seconds. @default false */
32
+ hasSeconds?: boolean;
33
+ /**
34
+ * The date adapter (native Date or Luxon). React has no Angular DI, so it is passed in
35
+ * directly. @default a new `EdsNativeDateAdapter`
36
+ */
37
+ adapter?: EdsDateAdapter;
38
+ /** Controlled selected date value (mirrors the Angular two-way `value` model). */
39
+ value?: EdsDatepickerValue;
40
+ /** Initial selected date value for the uncontrolled case. */
41
+ defaultValue?: EdsDatepickerValue;
42
+ /**
43
+ * Fired whenever the selected value changes (the write half of the Angular `value` model's
44
+ * two-way binding).
45
+ */
46
+ onValueChange?: (value: EdsDatepickerValue) => void;
47
+ /** Emitted when a date is selected/parsed/cleared (mirrors the Angular `(dateChange)` output). */
48
+ onDateChange?: (value: EdsDatepickerValue) => void;
49
+ }
50
+ /**
51
+ * `EdsDatepicker` — pure React port of the Angular `eds-datepicker`.
52
+ *
53
+ * Renders a text input with a calendar-toggle button (input-group addon), a pop-over month grid
54
+ * for date selection, and — in `isDatetimepicker` mode — a colocated `EdsTimepicker` under the
55
+ * calendar. Composes the pure-React `EdsInputGroup`, `EdsInputGroupAddon`, `EdsInputText`,
56
+ * `EdsButton`, `EdsIcon` primitives.
57
+ *
58
+ * CVA: the Angular component is a `ControlValueAccessor` and its `value` is a two-way `model()`.
59
+ * React has no CVA, so this exposes a standard React forms API — **controlled** via `value` +
60
+ * `onValueChange`, or **uncontrolled** via `defaultValue` — plus the `onDateChange` output. No
61
+ * forms-integration shim (flagged for React forms-API design review).
62
+ *
63
+ * The dropUp/document-click/positioning behavior is ported from the Angular signals + host
64
+ * listeners to `useState` + a root `useRef` + a `document` click listener in `useEffect`.
65
+ */
66
+ export declare const EdsDatepicker: React.ForwardRefExoticComponent<EdsDatepickerProps & React.RefAttributes<HTMLDivElement>>;
67
+ //# sourceMappingURL=eds-datepicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eds-datepicker.d.ts","sourceRoot":"","sources":["../../src/eds-datepicker/eds-datepicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAU7E;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEzC,MAAM,WAAW,kBACb,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC;IAC/E,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,kFAAkF;IAClF,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACpD,kGAAkG;IAClG,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACtD;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,aAAa,2FA0UxB,CAAC"}
@@ -0,0 +1,203 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { EdsInputButton } from '../eds-input-button/eds-input-button.js';
5
+ import { EdsInputText } from '../eds-input-text/eds-input-text.js';
6
+ import { EdsButton } from '../eds-button/eds-button.js';
7
+ import { EdsIcon } from '../eds-icon/eds-icon.js';
8
+ import { EdsNativeDateAdapter } from './eds-date-adapter.js';
9
+ import { EdsTimepicker } from './eds-timepicker.js';
10
+ const MONTH_NAMES = [
11
+ 'January', 'February', 'March', 'April', 'May', 'June',
12
+ 'July', 'August', 'September', 'October', 'November', 'December',
13
+ ];
14
+ const WEEK_DAYS = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
15
+ /**
16
+ * `EdsDatepicker` — pure React port of the Angular `eds-datepicker`.
17
+ *
18
+ * Renders a text input with a calendar-toggle button (input-group addon), a pop-over month grid
19
+ * for date selection, and — in `isDatetimepicker` mode — a colocated `EdsTimepicker` under the
20
+ * calendar. Composes the pure-React `EdsInputGroup`, `EdsInputGroupAddon`, `EdsInputText`,
21
+ * `EdsButton`, `EdsIcon` primitives.
22
+ *
23
+ * CVA: the Angular component is a `ControlValueAccessor` and its `value` is a two-way `model()`.
24
+ * React has no CVA, so this exposes a standard React forms API — **controlled** via `value` +
25
+ * `onValueChange`, or **uncontrolled** via `defaultValue` — plus the `onDateChange` output. No
26
+ * forms-integration shim (flagged for React forms-API design review).
27
+ *
28
+ * The dropUp/document-click/positioning behavior is ported from the Angular signals + host
29
+ * listeners to `useState` + a root `useRef` + a `document` click listener in `useEffect`.
30
+ */
31
+ export const EdsDatepicker = React.forwardRef(function EdsDatepicker({ e2eAttr = 'eds-datepicker', inputId = 'eds-datepicker-input', placeholder = 'dd/mm/yyyy', ariaLabel = 'Date input', dateFormat: _dateFormat = 'dd/mm/yyyy', minDate = null, maxDate = null, disabled = false, readonly = false, isDatetimepicker = false, hasSeconds = false, adapter: adapterProp, value, defaultValue, onValueChange, onDateChange, className, ...rest }, ref) {
32
+ // Adapter is stable across renders (matches the Angular single injected instance).
33
+ const adapterRef = useRef(null);
34
+ if (adapterRef.current === null) {
35
+ adapterRef.current = adapterProp ?? new EdsNativeDateAdapter();
36
+ }
37
+ // Allow a late-provided adapter prop to take effect.
38
+ const adapter = adapterProp ?? adapterRef.current;
39
+ const isControlled = value !== undefined;
40
+ const [internalValue, setInternalValue] = useState(defaultValue ?? null);
41
+ const currentValue = isControlled ? value : internalValue;
42
+ const [isOpen, setIsOpen] = useState(false);
43
+ const [dropUp, setDropUp] = useState(false);
44
+ // viewDate initialises to today (matches the constructor `viewDate.set(adapter.today())`).
45
+ const [viewDate, setViewDate] = useState(() => adapter.today());
46
+ const [selectedTime, setSelectedTime] = useState({
47
+ hours: 0,
48
+ minutes: 0,
49
+ seconds: 0,
50
+ });
51
+ const rootRef = useRef(null);
52
+ const setRefs = useCallback((node) => {
53
+ rootRef.current = node;
54
+ if (typeof ref === 'function') {
55
+ ref(node);
56
+ }
57
+ else if (ref) {
58
+ ref.current = node;
59
+ }
60
+ }, [ref]);
61
+ const setValue = useCallback((next) => {
62
+ if (!isControlled) {
63
+ setInternalValue(next);
64
+ }
65
+ onValueChange?.(next);
66
+ }, [isControlled, onValueChange]);
67
+ // --- computed(): displayValue ---
68
+ const displayValue = useMemo(() => {
69
+ const date = currentValue;
70
+ if (!date || !adapter.isValid(date)) {
71
+ return '';
72
+ }
73
+ const dateStr = adapter.format(date);
74
+ if (isDatetimepicker) {
75
+ const time = selectedTime;
76
+ const h = String(time.hours).padStart(2, '0');
77
+ const m = String(time.minutes).padStart(2, '0');
78
+ if (hasSeconds && time.seconds !== undefined) {
79
+ const s = String(time.seconds).padStart(2, '0');
80
+ return `${dateStr} ${h}:${m}:${s}`;
81
+ }
82
+ return `${dateStr} ${h}:${m}`;
83
+ }
84
+ return dateStr;
85
+ }, [currentValue, adapter, isDatetimepicker, hasSeconds, selectedTime]);
86
+ // --- computed(): monthLabel ---
87
+ const monthLabel = useMemo(() => {
88
+ const d = viewDate || adapter.today();
89
+ return `${MONTH_NAMES[adapter.getMonth(d)]} ${adapter.getYear(d)}`;
90
+ }, [viewDate, adapter]);
91
+ // --- computed(): calendarDays ---
92
+ const calendarDays = useMemo(() => {
93
+ const vd = viewDate || adapter.today();
94
+ const year = adapter.getYear(vd);
95
+ const month = adapter.getMonth(vd);
96
+ const firstDay = adapter.create(year, month, 1);
97
+ // Monday-based: 1=Mon, 7=Sun
98
+ const startDay = adapter.getDayOfWeek(firstDay) - 1;
99
+ const daysInMonth = adapter.getDaysInMonth(firstDay);
100
+ const days = [];
101
+ for (let i = 0; i < startDay; i++) {
102
+ days.push(null);
103
+ }
104
+ for (let i = 1; i <= daysInMonth; i++) {
105
+ days.push(adapter.create(year, month, i));
106
+ }
107
+ return days;
108
+ }, [viewDate, adapter]);
109
+ // --- Public API ---
110
+ const toggle = useCallback(() => {
111
+ if (disabled || readonly) {
112
+ return;
113
+ }
114
+ setIsOpen((wasOpen) => {
115
+ const open = !wasOpen;
116
+ if (open) {
117
+ // Set view to selected date or today.
118
+ setViewDate(adapter.isValid(currentValue) ? currentValue : adapter.today());
119
+ // Check space below — if not enough, open above.
120
+ const rect = rootRef.current?.getBoundingClientRect();
121
+ if (rect) {
122
+ const dropdownHeight = isDatetimepicker ? 420 : 320;
123
+ const spaceBelow = window.innerHeight - rect.bottom;
124
+ setDropUp(spaceBelow < dropdownHeight && rect.top > dropdownHeight);
125
+ }
126
+ }
127
+ return open;
128
+ });
129
+ }, [disabled, readonly, adapter, currentValue, isDatetimepicker]);
130
+ const onInputClick = useCallback(() => {
131
+ if (!isOpen) {
132
+ toggle();
133
+ }
134
+ }, [isOpen, toggle]);
135
+ const prevMonth = useCallback(() => {
136
+ setViewDate((vd) => adapter.addMonths(vd, -1));
137
+ }, [adapter]);
138
+ const nextMonth = useCallback(() => {
139
+ setViewDate((vd) => adapter.addMonths(vd, 1));
140
+ }, [adapter]);
141
+ const selectDay = useCallback((date) => {
142
+ setValue(date);
143
+ onDateChange?.(date);
144
+ setIsOpen(false);
145
+ }, [setValue, onDateChange]);
146
+ const isToday = useCallback((date) => adapter.isSameDay(date, adapter.today()), [adapter]);
147
+ const isSelected = useCallback((date) => {
148
+ const sel = currentValue;
149
+ if (!sel || !adapter.isValid(sel)) {
150
+ return false;
151
+ }
152
+ return adapter.isSameDay(date, sel);
153
+ }, [adapter, currentValue]);
154
+ const isOutsideRange = useCallback((date) => {
155
+ if (minDate && adapter.isBefore(date, minDate)) {
156
+ return true;
157
+ }
158
+ if (maxDate && adapter.isAfter(date, maxDate)) {
159
+ return true;
160
+ }
161
+ return false;
162
+ }, [adapter, minDate, maxDate]);
163
+ const onInputChange = useCallback((event) => {
164
+ const val = event.target.value;
165
+ if (val === '') {
166
+ setValue(null);
167
+ onDateChange?.(null);
168
+ return;
169
+ }
170
+ const parsed = adapter.parse(val);
171
+ if (parsed) {
172
+ setValue(parsed);
173
+ onDateChange?.(parsed);
174
+ }
175
+ }, [adapter, setValue, onDateChange]);
176
+ const onTimeChange = useCallback((time) => {
177
+ setSelectedTime({
178
+ hours: time.hours ?? 0,
179
+ minutes: time.minutes ?? 0,
180
+ seconds: time.seconds ?? undefined,
181
+ });
182
+ // If a date is already selected, the consumer is responsible for combining date + time.
183
+ }, []);
184
+ // Document click listener — close when clicking outside the root (matches the Angular
185
+ // _addDocumentListener/_removeDocumentListener attached while open).
186
+ useEffect(() => {
187
+ if (!isOpen) {
188
+ return;
189
+ }
190
+ const listener = (e) => {
191
+ if (rootRef.current && !rootRef.current.contains(e.target)) {
192
+ setIsOpen(false);
193
+ }
194
+ };
195
+ document.addEventListener('click', listener);
196
+ return () => document.removeEventListener('click', listener);
197
+ }, [isOpen]);
198
+ return (_jsxs("div", { ref: setRefs, className: className ? `eds-datepicker ${className}` : 'eds-datepicker', "data-e2e": e2eAttr, ...rest, children: [_jsxs(EdsInputButton, { className: "eds-datepicker__group", children: [_jsx(EdsInputText, { clearable: false, id: inputId, placeholder: placeholder, value: displayValue, disabled: disabled, readonly: readonly, "aria-label": ariaLabel, onChange: onInputChange, onClick: onInputClick }), !readonly && !disabled && (_jsx(EdsButton, { type: "secondary", color: "neutral", size: "s", "aria-label": "Open calendar", onClick: toggle, children: _jsx(EdsIcon, { icon: "calendar-blank:core" }) }))] }), isOpen && (_jsxs("div", { className: `eds-datepicker__dropdown${dropUp ? ' eds-datepicker__dropdown--up' : ''}`, onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "eds-datepicker__header", children: [_jsx("button", { className: "eds-datepicker__nav-btn", type: "button", onClick: prevMonth, "aria-label": "Previous month", children: '\u2039' }), _jsx("span", { className: "eds-datepicker__month-label", children: monthLabel }), _jsx("button", { className: "eds-datepicker__nav-btn", type: "button", onClick: nextMonth, "aria-label": "Next month", children: '\u203A' })] }), _jsx("div", { className: "eds-datepicker__weekdays", children: WEEK_DAYS.map((day) => (_jsx("span", { className: "eds-datepicker__weekday", children: day }, day))) }), _jsx("div", { className: "eds-datepicker__days", children: calendarDays.map((day, index) => day === null ? (_jsx("span", { className: "eds-datepicker__day eds-datepicker__day--empty" }, `empty-${index}`)) : (_jsx("button", { className: 'eds-datepicker__day' +
199
+ (isToday(day) ? ' eds-datepicker__day--today' : '') +
200
+ (isSelected(day) ? ' eds-datepicker__day--selected' : '') +
201
+ (isOutsideRange(day) ? ' eds-datepicker__day--outside' : ''), type: "button", disabled: isOutsideRange(day), onClick: () => selectDay(day), children: adapter.getDate(day) }, `day-${index}`))) }), isDatetimepicker && (_jsx("div", { className: "eds-datepicker__time", children: _jsx(EdsTimepicker, { hasSeconds: hasSeconds, disabled: disabled, onTimeChange: onTimeChange }) }))] }))] }));
202
+ });
203
+ //# sourceMappingURL=eds-datepicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eds-datepicker.js","sourceRoot":"","sources":["../../src/eds-datepicker/eds-datepicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { EdsDateAdapter } from './eds-date-adapter.js';
2
+ /**
3
+ * Call this function to provide the Luxon `DateTime` class to the adapter.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { DateTime } from 'luxon';
8
+ * import { setLuxonDateTime } from '@eui/eds-react/eds-datepicker';
9
+ * setLuxonDateTime(DateTime);
10
+ * ```
11
+ */
12
+ export declare function setLuxonDateTime(dt: any): void;
13
+ /**
14
+ * Luxon `DateTime` adapter for `EdsDatepicker` (ported 1:1 from the Angular `EdsLuxonDateAdapter`).
15
+ * Requires the `luxon` package and a prior `setLuxonDateTime(DateTime)` call.
16
+ */
17
+ export declare class EdsLuxonDateAdapter implements EdsDateAdapter<unknown> {
18
+ create(year: number, month: number, day: number): unknown;
19
+ today(): unknown;
20
+ getYear(date: unknown): number;
21
+ getMonth(date: unknown): number;
22
+ getDate(date: unknown): number;
23
+ getDayOfWeek(date: unknown): number;
24
+ getDaysInMonth(date: unknown): number;
25
+ addMonths(date: unknown, months: number): unknown;
26
+ format(date: unknown, formatStr?: string): string;
27
+ parse(value: string, formatStr?: string): unknown | null;
28
+ isBefore(date: unknown, compare: unknown): boolean;
29
+ isAfter(date: unknown, compare: unknown): boolean;
30
+ isSameDay(a: unknown, b: unknown): boolean;
31
+ isValid(date: unknown): date is unknown;
32
+ }
33
+ //# sourceMappingURL=eds-luxon-date-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eds-luxon-date-adapter.d.ts","sourceRoot":"","sources":["../../src/eds-datepicker/eds-luxon-date-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAkBvD;;;;;;;;;GASG;AAEH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAE9C;AAED;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,cAAc,CAAC,OAAO,CAAC;IAC/D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAMzD,KAAK,IAAI,OAAO;IAIhB,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAK9B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAK/B,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAK9B,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAKnC,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAKrC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAKjD,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAKjD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAMxD,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAKlD,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAKjD,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IAK1C,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,OAAO;CAI1C"}