@transferwise/components 0.0.0-experimental-0df72a3 → 0.0.0-experimental-fe160ab

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 (158) hide show
  1. package/build/Calendar/Calendar.constants.js +10 -0
  2. package/build/Calendar/Calendar.constants.js.map +1 -0
  3. package/build/Calendar/Calendar.constants.mjs +8 -0
  4. package/build/Calendar/Calendar.constants.mjs.map +1 -0
  5. package/build/Calendar/Calendar.js +116 -16
  6. package/build/Calendar/Calendar.js.map +1 -1
  7. package/build/Calendar/Calendar.messages.js +12 -0
  8. package/build/Calendar/Calendar.messages.js.map +1 -1
  9. package/build/Calendar/Calendar.messages.mjs +12 -0
  10. package/build/Calendar/Calendar.messages.mjs.map +1 -1
  11. package/build/Calendar/Calendar.mjs +117 -17
  12. package/build/Calendar/Calendar.mjs.map +1 -1
  13. package/build/Calendar/DateHeader/DateHeader.js +5 -1
  14. package/build/Calendar/DateHeader/DateHeader.js.map +1 -1
  15. package/build/Calendar/DateHeader/DateHeader.mjs +5 -1
  16. package/build/Calendar/DateHeader/DateHeader.mjs.map +1 -1
  17. package/build/Calendar/DayCalendar/DayCalendar.js +20 -2
  18. package/build/Calendar/DayCalendar/DayCalendar.js.map +1 -1
  19. package/build/Calendar/DayCalendar/DayCalendar.mjs +20 -2
  20. package/build/Calendar/DayCalendar/DayCalendar.mjs.map +1 -1
  21. package/build/Calendar/DayCalendar/Table/DayCalendarTable.js +60 -19
  22. package/build/Calendar/DayCalendar/Table/DayCalendarTable.js.map +1 -1
  23. package/build/Calendar/DayCalendar/Table/DayCalendarTable.mjs +60 -19
  24. package/build/Calendar/DayCalendar/Table/DayCalendarTable.mjs.map +1 -1
  25. package/build/Calendar/MonthCalendar/MonthCalendar.js +6 -0
  26. package/build/Calendar/MonthCalendar/MonthCalendar.js.map +1 -1
  27. package/build/Calendar/MonthCalendar/MonthCalendar.mjs +6 -0
  28. package/build/Calendar/MonthCalendar/MonthCalendar.mjs.map +1 -1
  29. package/build/Calendar/MonthCalendar/Table/MonthCalendarTable.js +8 -3
  30. package/build/Calendar/MonthCalendar/Table/MonthCalendarTable.js.map +1 -1
  31. package/build/Calendar/MonthCalendar/Table/MonthCalendarTable.mjs +8 -3
  32. package/build/Calendar/MonthCalendar/Table/MonthCalendarTable.mjs.map +1 -1
  33. package/build/Calendar/TableLink/TableLink.js +91 -0
  34. package/build/Calendar/TableLink/TableLink.js.map +1 -0
  35. package/build/Calendar/TableLink/TableLink.mjs +87 -0
  36. package/build/Calendar/TableLink/TableLink.mjs.map +1 -0
  37. package/build/Calendar/YearCalendar/Table/YearCalendarTable.js +8 -3
  38. package/build/Calendar/YearCalendar/Table/YearCalendarTable.js.map +1 -1
  39. package/build/Calendar/YearCalendar/Table/YearCalendarTable.mjs +8 -3
  40. package/build/Calendar/YearCalendar/Table/YearCalendarTable.mjs.map +1 -1
  41. package/build/Calendar/YearCalendar/YearCalendar.js +7 -0
  42. package/build/Calendar/YearCalendar/YearCalendar.js.map +1 -1
  43. package/build/Calendar/YearCalendar/YearCalendar.mjs +7 -0
  44. package/build/Calendar/YearCalendar/YearCalendar.mjs.map +1 -1
  45. package/build/Calendar/_helpers/hasDisabledDatesInMonth/hasDisabledDatesInMonth.js +33 -0
  46. package/build/Calendar/_helpers/hasDisabledDatesInMonth/hasDisabledDatesInMonth.js.map +1 -0
  47. package/build/Calendar/_helpers/hasDisabledDatesInMonth/hasDisabledDatesInMonth.mjs +31 -0
  48. package/build/Calendar/_helpers/hasDisabledDatesInMonth/hasDisabledDatesInMonth.mjs.map +1 -0
  49. package/build/Calendar/_helpers/isDateDisabled/isDateDisabled.js +40 -0
  50. package/build/Calendar/_helpers/isDateDisabled/isDateDisabled.js.map +1 -0
  51. package/build/Calendar/_helpers/isDateDisabled/isDateDisabled.mjs +38 -0
  52. package/build/Calendar/_helpers/isDateDisabled/isDateDisabled.mjs.map +1 -0
  53. package/build/DateLookup/DateLookup.js +20 -9
  54. package/build/DateLookup/DateLookup.js.map +1 -1
  55. package/build/DateLookup/DateLookup.mjs +20 -9
  56. package/build/DateLookup/DateLookup.mjs.map +1 -1
  57. package/build/i18n/en.json +4 -0
  58. package/build/i18n/en.json.js +4 -0
  59. package/build/i18n/en.json.js.map +1 -1
  60. package/build/i18n/en.json.mjs +4 -0
  61. package/build/i18n/en.json.mjs.map +1 -1
  62. package/build/i18n/hu.json +1 -1
  63. package/build/i18n/hu.json.js +1 -1
  64. package/build/i18n/hu.json.mjs +1 -1
  65. package/build/index.js +2 -2
  66. package/build/index.mjs +1 -1
  67. package/build/main.css +123 -43
  68. package/build/styles/Calendar/Calendar.css +112 -37
  69. package/build/styles/Calendar/TableLink/TableLink.css +115 -0
  70. package/build/styles/main.css +123 -43
  71. package/build/types/Calendar/Calendar.constants.d.ts +2 -0
  72. package/build/types/Calendar/Calendar.constants.d.ts.map +1 -0
  73. package/build/types/Calendar/Calendar.d.ts +16 -3
  74. package/build/types/Calendar/Calendar.d.ts.map +1 -1
  75. package/build/types/Calendar/Calendar.messages.d.ts +20 -0
  76. package/build/types/Calendar/Calendar.messages.d.ts.map +1 -1
  77. package/build/types/Calendar/Calendar.types.d.ts +32 -0
  78. package/build/types/Calendar/Calendar.types.d.ts.map +1 -0
  79. package/build/types/Calendar/DateHeader/DateHeader.d.ts +2 -0
  80. package/build/types/Calendar/DateHeader/DateHeader.d.ts.map +1 -1
  81. package/build/types/Calendar/DayCalendar/DayCalendar.d.ts +7 -1
  82. package/build/types/Calendar/DayCalendar/DayCalendar.d.ts.map +1 -1
  83. package/build/types/Calendar/DayCalendar/Table/DayCalendarTable.d.ts +6 -0
  84. package/build/types/Calendar/DayCalendar/Table/DayCalendarTable.d.ts.map +1 -1
  85. package/build/types/Calendar/MonthCalendar/MonthCalendar.d.ts +1 -0
  86. package/build/types/Calendar/MonthCalendar/MonthCalendar.d.ts.map +1 -1
  87. package/build/types/Calendar/MonthCalendar/Table/MonthCalendarTable.d.ts +2 -1
  88. package/build/types/Calendar/MonthCalendar/Table/MonthCalendarTable.d.ts.map +1 -1
  89. package/build/types/Calendar/{tableLink → TableLink}/TableLink.d.ts +5 -1
  90. package/build/types/Calendar/TableLink/TableLink.d.ts.map +1 -0
  91. package/build/types/Calendar/TableLink/index.d.ts.map +1 -0
  92. package/build/types/Calendar/YearCalendar/Table/YearCalendarTable.d.ts +2 -1
  93. package/build/types/Calendar/YearCalendar/Table/YearCalendarTable.d.ts.map +1 -1
  94. package/build/types/Calendar/YearCalendar/YearCalendar.d.ts +1 -0
  95. package/build/types/Calendar/YearCalendar/YearCalendar.d.ts.map +1 -1
  96. package/build/types/Calendar/_helpers/hasDisabledDatesInMonth/hasDisabledDatesInMonth.d.ts +3 -0
  97. package/build/types/Calendar/_helpers/hasDisabledDatesInMonth/hasDisabledDatesInMonth.d.ts.map +1 -0
  98. package/build/types/Calendar/_helpers/index.d.ts +3 -0
  99. package/build/types/Calendar/_helpers/index.d.ts.map +1 -0
  100. package/build/types/Calendar/_helpers/isDateDisabled/isDateDisabled.d.ts +3 -0
  101. package/build/types/Calendar/_helpers/isDateDisabled/isDateDisabled.d.ts.map +1 -0
  102. package/build/types/Calendar/index.d.ts +1 -0
  103. package/build/types/Calendar/index.d.ts.map +1 -1
  104. package/build/types/DateLookup/DateLookup.d.ts +24 -5
  105. package/build/types/DateLookup/DateLookup.d.ts.map +1 -1
  106. package/build/types/DateLookup/index.d.ts +1 -0
  107. package/build/types/DateLookup/index.d.ts.map +1 -1
  108. package/build/types/index.d.ts +3 -2
  109. package/build/types/index.d.ts.map +1 -1
  110. package/build/types/test-utils/index.d.ts +8 -0
  111. package/build/types/test-utils/index.d.ts.map +1 -1
  112. package/package.json +1 -1
  113. package/src/Calendar/Calendar.constants.ts +5 -0
  114. package/src/Calendar/Calendar.css +112 -37
  115. package/src/Calendar/Calendar.disabledDates.test.tsx +593 -0
  116. package/src/Calendar/Calendar.less +5 -35
  117. package/src/Calendar/Calendar.messages.ts +21 -0
  118. package/src/Calendar/Calendar.test.tsx +310 -28
  119. package/src/Calendar/Calendar.tsx +159 -18
  120. package/src/Calendar/Calendar.types.ts +35 -0
  121. package/src/Calendar/DateHeader/DateHeader.tsx +6 -0
  122. package/src/Calendar/DayCalendar/DayCalendar.tsx +39 -1
  123. package/src/Calendar/DayCalendar/Table/DayCalendarTable.tsx +67 -27
  124. package/src/Calendar/MonthCalendar/MonthCalendar.tsx +8 -0
  125. package/src/Calendar/MonthCalendar/Table/MonthCalendarTable.tsx +15 -3
  126. package/src/Calendar/TableLink/TableLink.css +115 -0
  127. package/src/Calendar/TableLink/TableLink.less +68 -0
  128. package/src/Calendar/TableLink/TableLink.tsx +112 -0
  129. package/src/Calendar/YearCalendar/Table/YearCalendarTable.tsx +15 -3
  130. package/src/Calendar/YearCalendar/YearCalendar.tsx +9 -0
  131. package/src/Calendar/_helpers/hasDisabledDatesInMonth/hasDisabledDatesInMonth.test.ts +98 -0
  132. package/src/Calendar/_helpers/hasDisabledDatesInMonth/hasDisabledDatesInMonth.ts +45 -0
  133. package/src/Calendar/_helpers/index.ts +2 -0
  134. package/src/Calendar/_helpers/isDateDisabled/isDateDisabled.test.ts +169 -0
  135. package/src/Calendar/_helpers/isDateDisabled/isDateDisabled.ts +59 -0
  136. package/src/Calendar/_stories/Calendar.accessibility.docs.mdx +118 -0
  137. package/src/Calendar/_stories/Calendar.story.tsx +138 -4
  138. package/src/Calendar/_stories/Calendar.test.story.tsx +114 -0
  139. package/src/Calendar/index.ts +7 -0
  140. package/src/DateLookup/DateLookup.disabledDates.test.tsx +293 -0
  141. package/src/DateLookup/DateLookup.test.tsx +34 -37
  142. package/src/DateLookup/DateLookup.tsx +37 -13
  143. package/src/DateLookup/_stories/DateLookup.accessibility.docs.mdx +108 -0
  144. package/src/DateLookup/_stories/DateLookup.story.tsx +124 -2
  145. package/src/DateLookup/index.ts +6 -0
  146. package/src/i18n/en.json +4 -0
  147. package/src/i18n/hu.json +1 -1
  148. package/src/index.ts +3 -2
  149. package/src/main.css +123 -43
  150. package/build/Calendar/tableLink/TableLink.js +0 -61
  151. package/build/Calendar/tableLink/TableLink.js.map +0 -1
  152. package/build/Calendar/tableLink/TableLink.mjs +0 -57
  153. package/build/Calendar/tableLink/TableLink.mjs.map +0 -1
  154. package/build/types/Calendar/tableLink/TableLink.d.ts.map +0 -1
  155. package/build/types/Calendar/tableLink/index.d.ts.map +0 -1
  156. package/src/Calendar/tableLink/TableLink.tsx +0 -77
  157. /package/build/types/Calendar/{tableLink → TableLink}/index.d.ts +0 -0
  158. /package/src/Calendar/{tableLink → TableLink}/index.ts +0 -0
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ const DAY_INDEX_TO_WEEKDAY = {
4
+ 0: 'sun',
5
+ 1: 'mon',
6
+ 2: 'tue',
7
+ 3: 'wed',
8
+ 4: 'thu',
9
+ 5: 'fri',
10
+ 6: 'sat'
11
+ };
12
+ function isDateDisabled(date, disabledRules) {
13
+ if (!disabledRules) return false;
14
+ if (disabledRules.weekdays?.length) {
15
+ const weekday = DAY_INDEX_TO_WEEKDAY[date.getDay()];
16
+ if (disabledRules.weekdays.includes(weekday)) return true;
17
+ }
18
+ if (disabledRules.dates?.length) {
19
+ const year = date.getFullYear();
20
+ const month = date.getMonth();
21
+ const day = date.getDate();
22
+ if (disabledRules.dates.some(disabledDate => disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day)) {
23
+ return true;
24
+ }
25
+ }
26
+ if (disabledRules.ranges?.length) {
27
+ const dateStart = date.getTime();
28
+ if (disabledRules.ranges.some(range => {
29
+ const rangeStart = new Date(range.start.getFullYear(), range.start.getMonth(), range.start.getDate()).getTime();
30
+ const rangeEnd = new Date(range.end.getFullYear(), range.end.getMonth(), range.end.getDate()).getTime();
31
+ return dateStart >= rangeStart && dateStart <= rangeEnd;
32
+ })) {
33
+ return true;
34
+ }
35
+ }
36
+ return false;
37
+ }
38
+
39
+ exports.isDateDisabled = isDateDisabled;
40
+ //# sourceMappingURL=isDateDisabled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isDateDisabled.js","sources":["../../../../src/Calendar/_helpers/isDateDisabled/isDateDisabled.ts"],"sourcesContent":["import type { DisabledRules, WeekDayType } from '../../Calendar.types';\n\nconst DAY_INDEX_TO_WEEKDAY: Record<number, WeekDayType> = {\n 0: 'sun',\n 1: 'mon',\n 2: 'tue',\n 3: 'wed',\n 4: 'thu',\n 5: 'fri',\n 6: 'sat',\n};\n\nexport function isDateDisabled(date: Date, disabledRules?: DisabledRules): boolean {\n if (!disabledRules) return false;\n\n if (disabledRules.weekdays?.length) {\n const weekday = DAY_INDEX_TO_WEEKDAY[date.getDay()];\n if (disabledRules.weekdays.includes(weekday)) return true;\n }\n\n if (disabledRules.dates?.length) {\n const year = date.getFullYear();\n const month = date.getMonth();\n const day = date.getDate();\n if (\n disabledRules.dates.some(\n (disabledDate) =>\n disabledDate.getFullYear() === year &&\n disabledDate.getMonth() === month &&\n disabledDate.getDate() === day,\n )\n ) {\n return true;\n }\n }\n\n if (disabledRules.ranges?.length) {\n const dateStart = date.getTime();\n if (\n disabledRules.ranges.some((range) => {\n const rangeStart = new Date(\n range.start.getFullYear(),\n range.start.getMonth(),\n range.start.getDate(),\n ).getTime();\n const rangeEnd = new Date(\n range.end.getFullYear(),\n range.end.getMonth(),\n range.end.getDate(),\n ).getTime();\n return dateStart >= rangeStart && dateStart <= rangeEnd;\n })\n ) {\n return true;\n }\n }\n\n return false;\n}\n"],"names":["DAY_INDEX_TO_WEEKDAY","isDateDisabled","date","disabledRules","weekdays","length","weekday","getDay","includes","dates","year","getFullYear","month","getMonth","day","getDate","some","disabledDate","ranges","dateStart","getTime","range","rangeStart","Date","start","rangeEnd","end"],"mappings":";;AAEA,MAAMA,oBAAoB,GAAgC;AACxD,EAAA,CAAC,EAAE,KAAK;AACR,EAAA,CAAC,EAAE,KAAK;AACR,EAAA,CAAC,EAAE,KAAK;AACR,EAAA,CAAC,EAAE,KAAK;AACR,EAAA,CAAC,EAAE,KAAK;AACR,EAAA,CAAC,EAAE,KAAK;AACR,EAAA,CAAC,EAAE;CACJ;AAEK,SAAUC,cAAcA,CAACC,IAAU,EAAEC,aAA6B,EAAA;AACtE,EAAA,IAAI,CAACA,aAAa,EAAE,OAAO,KAAK;AAEhC,EAAA,IAAIA,aAAa,CAACC,QAAQ,EAAEC,MAAM,EAAE;IAClC,MAAMC,OAAO,GAAGN,oBAAoB,CAACE,IAAI,CAACK,MAAM,EAAE,CAAC;IACnD,IAAIJ,aAAa,CAACC,QAAQ,CAACI,QAAQ,CAACF,OAAO,CAAC,EAAE,OAAO,IAAI;AAC3D,EAAA;AAEA,EAAA,IAAIH,aAAa,CAACM,KAAK,EAAEJ,MAAM,EAAE;AAC/B,IAAA,MAAMK,IAAI,GAAGR,IAAI,CAACS,WAAW,EAAE;AAC/B,IAAA,MAAMC,KAAK,GAAGV,IAAI,CAACW,QAAQ,EAAE;AAC7B,IAAA,MAAMC,GAAG,GAAGZ,IAAI,CAACa,OAAO,EAAE;AAC1B,IAAA,IACEZ,aAAa,CAACM,KAAK,CAACO,IAAI,CACrBC,YAAY,IACXA,YAAY,CAACN,WAAW,EAAE,KAAKD,IAAI,IACnCO,YAAY,CAACJ,QAAQ,EAAE,KAAKD,KAAK,IACjCK,YAAY,CAACF,OAAO,EAAE,KAAKD,GAAG,CACjC,EACD;AACA,MAAA,OAAO,IAAI;AACb,IAAA;AACF,EAAA;AAEA,EAAA,IAAIX,aAAa,CAACe,MAAM,EAAEb,MAAM,EAAE;AAChC,IAAA,MAAMc,SAAS,GAAGjB,IAAI,CAACkB,OAAO,EAAE;AAChC,IAAA,IACEjB,aAAa,CAACe,MAAM,CAACF,IAAI,CAAEK,KAAK,IAAI;AAClC,MAAA,MAAMC,UAAU,GAAG,IAAIC,IAAI,CACzBF,KAAK,CAACG,KAAK,CAACb,WAAW,EAAE,EACzBU,KAAK,CAACG,KAAK,CAACX,QAAQ,EAAE,EACtBQ,KAAK,CAACG,KAAK,CAACT,OAAO,EAAE,CACtB,CAACK,OAAO,EAAE;AACX,MAAA,MAAMK,QAAQ,GAAG,IAAIF,IAAI,CACvBF,KAAK,CAACK,GAAG,CAACf,WAAW,EAAE,EACvBU,KAAK,CAACK,GAAG,CAACb,QAAQ,EAAE,EACpBQ,KAAK,CAACK,GAAG,CAACX,OAAO,EAAE,CACpB,CAACK,OAAO,EAAE;AACX,MAAA,OAAOD,SAAS,IAAIG,UAAU,IAAIH,SAAS,IAAIM,QAAQ;AACzD,IAAA,CAAC,CAAC,EACF;AACA,MAAA,OAAO,IAAI;AACb,IAAA;AACF,EAAA;AAEA,EAAA,OAAO,KAAK;AACd;;;;"}
@@ -0,0 +1,38 @@
1
+ const DAY_INDEX_TO_WEEKDAY = {
2
+ 0: 'sun',
3
+ 1: 'mon',
4
+ 2: 'tue',
5
+ 3: 'wed',
6
+ 4: 'thu',
7
+ 5: 'fri',
8
+ 6: 'sat'
9
+ };
10
+ function isDateDisabled(date, disabledRules) {
11
+ if (!disabledRules) return false;
12
+ if (disabledRules.weekdays?.length) {
13
+ const weekday = DAY_INDEX_TO_WEEKDAY[date.getDay()];
14
+ if (disabledRules.weekdays.includes(weekday)) return true;
15
+ }
16
+ if (disabledRules.dates?.length) {
17
+ const year = date.getFullYear();
18
+ const month = date.getMonth();
19
+ const day = date.getDate();
20
+ if (disabledRules.dates.some(disabledDate => disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day)) {
21
+ return true;
22
+ }
23
+ }
24
+ if (disabledRules.ranges?.length) {
25
+ const dateStart = date.getTime();
26
+ if (disabledRules.ranges.some(range => {
27
+ const rangeStart = new Date(range.start.getFullYear(), range.start.getMonth(), range.start.getDate()).getTime();
28
+ const rangeEnd = new Date(range.end.getFullYear(), range.end.getMonth(), range.end.getDate()).getTime();
29
+ return dateStart >= rangeStart && dateStart <= rangeEnd;
30
+ })) {
31
+ return true;
32
+ }
33
+ }
34
+ return false;
35
+ }
36
+
37
+ export { isDateDisabled };
38
+ //# sourceMappingURL=isDateDisabled.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isDateDisabled.mjs","sources":["../../../../src/Calendar/_helpers/isDateDisabled/isDateDisabled.ts"],"sourcesContent":["import type { DisabledRules, WeekDayType } from '../../Calendar.types';\n\nconst DAY_INDEX_TO_WEEKDAY: Record<number, WeekDayType> = {\n 0: 'sun',\n 1: 'mon',\n 2: 'tue',\n 3: 'wed',\n 4: 'thu',\n 5: 'fri',\n 6: 'sat',\n};\n\nexport function isDateDisabled(date: Date, disabledRules?: DisabledRules): boolean {\n if (!disabledRules) return false;\n\n if (disabledRules.weekdays?.length) {\n const weekday = DAY_INDEX_TO_WEEKDAY[date.getDay()];\n if (disabledRules.weekdays.includes(weekday)) return true;\n }\n\n if (disabledRules.dates?.length) {\n const year = date.getFullYear();\n const month = date.getMonth();\n const day = date.getDate();\n if (\n disabledRules.dates.some(\n (disabledDate) =>\n disabledDate.getFullYear() === year &&\n disabledDate.getMonth() === month &&\n disabledDate.getDate() === day,\n )\n ) {\n return true;\n }\n }\n\n if (disabledRules.ranges?.length) {\n const dateStart = date.getTime();\n if (\n disabledRules.ranges.some((range) => {\n const rangeStart = new Date(\n range.start.getFullYear(),\n range.start.getMonth(),\n range.start.getDate(),\n ).getTime();\n const rangeEnd = new Date(\n range.end.getFullYear(),\n range.end.getMonth(),\n range.end.getDate(),\n ).getTime();\n return dateStart >= rangeStart && dateStart <= rangeEnd;\n })\n ) {\n return true;\n }\n }\n\n return false;\n}\n"],"names":["DAY_INDEX_TO_WEEKDAY","isDateDisabled","date","disabledRules","weekdays","length","weekday","getDay","includes","dates","year","getFullYear","month","getMonth","day","getDate","some","disabledDate","ranges","dateStart","getTime","range","rangeStart","Date","start","rangeEnd","end"],"mappings":"AAEA,MAAMA,oBAAoB,GAAgC;AACxD,EAAA,CAAC,EAAE,KAAK;AACR,EAAA,CAAC,EAAE,KAAK;AACR,EAAA,CAAC,EAAE,KAAK;AACR,EAAA,CAAC,EAAE,KAAK;AACR,EAAA,CAAC,EAAE,KAAK;AACR,EAAA,CAAC,EAAE,KAAK;AACR,EAAA,CAAC,EAAE;CACJ;AAEK,SAAUC,cAAcA,CAACC,IAAU,EAAEC,aAA6B,EAAA;AACtE,EAAA,IAAI,CAACA,aAAa,EAAE,OAAO,KAAK;AAEhC,EAAA,IAAIA,aAAa,CAACC,QAAQ,EAAEC,MAAM,EAAE;IAClC,MAAMC,OAAO,GAAGN,oBAAoB,CAACE,IAAI,CAACK,MAAM,EAAE,CAAC;IACnD,IAAIJ,aAAa,CAACC,QAAQ,CAACI,QAAQ,CAACF,OAAO,CAAC,EAAE,OAAO,IAAI;AAC3D,EAAA;AAEA,EAAA,IAAIH,aAAa,CAACM,KAAK,EAAEJ,MAAM,EAAE;AAC/B,IAAA,MAAMK,IAAI,GAAGR,IAAI,CAACS,WAAW,EAAE;AAC/B,IAAA,MAAMC,KAAK,GAAGV,IAAI,CAACW,QAAQ,EAAE;AAC7B,IAAA,MAAMC,GAAG,GAAGZ,IAAI,CAACa,OAAO,EAAE;AAC1B,IAAA,IACEZ,aAAa,CAACM,KAAK,CAACO,IAAI,CACrBC,YAAY,IACXA,YAAY,CAACN,WAAW,EAAE,KAAKD,IAAI,IACnCO,YAAY,CAACJ,QAAQ,EAAE,KAAKD,KAAK,IACjCK,YAAY,CAACF,OAAO,EAAE,KAAKD,GAAG,CACjC,EACD;AACA,MAAA,OAAO,IAAI;AACb,IAAA;AACF,EAAA;AAEA,EAAA,IAAIX,aAAa,CAACe,MAAM,EAAEb,MAAM,EAAE;AAChC,IAAA,MAAMc,SAAS,GAAGjB,IAAI,CAACkB,OAAO,EAAE;AAChC,IAAA,IACEjB,aAAa,CAACe,MAAM,CAACF,IAAI,CAAEK,KAAK,IAAI;AAClC,MAAA,MAAMC,UAAU,GAAG,IAAIC,IAAI,CACzBF,KAAK,CAACG,KAAK,CAACb,WAAW,EAAE,EACzBU,KAAK,CAACG,KAAK,CAACX,QAAQ,EAAE,EACtBQ,KAAK,CAACG,KAAK,CAACT,OAAO,EAAE,CACtB,CAACK,OAAO,EAAE;AACX,MAAA,MAAMK,QAAQ,GAAG,IAAIF,IAAI,CACvBF,KAAK,CAACK,GAAG,CAACf,WAAW,EAAE,EACvBU,KAAK,CAACK,GAAG,CAACb,QAAQ,EAAE,EACpBQ,KAAK,CAACK,GAAG,CAACX,OAAO,EAAE,CACpB,CAACK,OAAO,EAAE;AACX,MAAA,OAAOD,SAAS,IAAIG,UAAU,IAAIH,SAAS,IAAIM,QAAQ;AACzD,IAAA,CAAC,CAAC,EACF;AACA,MAAA,OAAO,IAAI;AACb,IAAA;AACF,EAAA;AAEA,EAAA,OAAO,KAAK;AACd;;;;"}
@@ -123,7 +123,19 @@ class DateLookup extends React.PureComponent {
123
123
  this.focusOn(fallbackElement);
124
124
  }
125
125
  };
126
- handleDateChange = date => {
126
+ handleDateChange = (date, meta) => {
127
+ const {
128
+ onDateSelect
129
+ } = this.props;
130
+ if (date && onDateSelect) {
131
+ onDateSelect({
132
+ date,
133
+ isEnabled: meta.isEnabled
134
+ });
135
+ }
136
+ };
137
+ handleDateSelect = date => {
138
+ if (!date) return;
127
139
  this.setState(state => {
128
140
  const originalDate = state.originalDate ?? this.props.value;
129
141
  return {
@@ -131,20 +143,18 @@ class DateLookup extends React.PureComponent {
131
143
  };
132
144
  }, () => {
133
145
  this.props.onChange(date);
146
+ this.close();
147
+ this.focusOn('.btn');
134
148
  });
135
149
  };
136
- handleDateSelect = date => {
137
- this.props.onChange(date);
138
- this.close();
139
- this.focusOn('.btn');
140
- };
141
150
  getCalendar = () => {
142
151
  const {
143
152
  value,
144
153
  min,
145
154
  max,
146
155
  monthFormat,
147
- placeholder
156
+ placeholder,
157
+ disabledRules
148
158
  } = this.props;
149
159
  return /*#__PURE__*/jsxRuntime.jsx("div", {
150
160
  className: "p-a-1",
@@ -154,8 +164,9 @@ class DateLookup extends React.PureComponent {
154
164
  max: max,
155
165
  monthFormat: monthFormat,
156
166
  placeholder: placeholder,
157
- onChange: this.handleDateChange,
158
- onSelect: this.handleDateSelect
167
+ disabledRules: disabledRules,
168
+ onDateFocus: this.handleDateChange,
169
+ onChange: this.handleDateSelect
159
170
  })
160
171
  });
161
172
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DateLookup.js","sources":["../../src/DateLookup/DateLookup.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { createRef, PureComponent, KeyboardEvent } from 'react';\nimport Calendar from '../Calendar';\nimport {\n Size,\n MonthFormat,\n Position,\n type SizeSmall,\n type SizeMedium,\n type SizeLarge,\n} from '../common';\nimport ResponsivePanel from '../common/ResponsivePanel';\nimport { WithInputAttributesProps, withInputAttributes } from '../Inputs/contexts';\nimport { OverlayIdProvider } from '../Provider/overlay/OverlayIdProvider';\nimport DateTrigger from './DateTrigger';\n\nexport interface DateLookupProps {\n id?: string;\n value: Date | null;\n min?: Date | null;\n max?: Date | null;\n size?: SizeSmall | SizeMedium | SizeLarge;\n placeholder?: string;\n label?: string;\n 'aria-labelledby'?: string;\n monthFormat?: `${MonthFormat}`;\n disabled?: boolean;\n clearable?: boolean;\n onChange: (date: Date | null) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n}\n\ntype DateLookupPropsWithInputAttributes = DateLookupProps & Partial<WithInputAttributesProps>;\n\ninterface DateLookupState {\n originalDate: Date | null;\n open: boolean;\n}\n\nclass DateLookup extends PureComponent<DateLookupPropsWithInputAttributes, DateLookupState> {\n declare props: DateLookupPropsWithInputAttributes &\n Required<Pick<DateLookupPropsWithInputAttributes, keyof typeof DateLookup.defaultProps>>;\n\n static defaultProps = {\n value: null,\n min: null,\n max: null,\n size: Size.MEDIUM,\n placeholder: '',\n label: '',\n monthFormat: MonthFormat.LONG,\n disabled: false,\n clearable: false,\n } satisfies Partial<DateLookupPropsWithInputAttributes>;\n\n element = createRef<HTMLDivElement>();\n\n constructor(props: DateLookup['props']) {\n super(props);\n this.state = {\n originalDate: null,\n open: false,\n };\n }\n\n componentDidUpdate(previousProps: DateLookupPropsWithInputAttributes) {\n if (this.props.value?.getTime() !== previousProps.value?.getTime() && this.state.open) {\n this.focusOn('.active');\n }\n }\n\n open = () => {\n const { onFocus } = this.props;\n\n this.setState({ open: true });\n if (onFocus) {\n onFocus();\n }\n };\n\n discard = () => {\n const { originalDate } = this.state;\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n };\n\n close = () => {\n const { onBlur } = this.props;\n this.setState({ open: false, originalDate: null });\n if (onBlur) {\n onBlur();\n }\n };\n\n handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const { open, originalDate } = this.state;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n case 'ArrowRight':\n case 'ArrowDown':\n if (!open) {\n this.open();\n event.preventDefault();\n }\n break;\n case 'Escape':\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n event.preventDefault();\n break;\n default:\n break;\n }\n };\n\n focusOn = (preferredElement: string, fallbackElement?: string) => {\n const element = this.element.current?.querySelector(preferredElement) as HTMLElement | null;\n if (element) {\n element.focus();\n } else if (fallbackElement) {\n this.focusOn(fallbackElement);\n }\n };\n\n handleDateChange = (date: Date | null) => {\n this.setState(\n (state) => {\n const originalDate = state.originalDate ?? this.props.value;\n return { originalDate };\n },\n () => {\n this.props.onChange(date);\n },\n );\n };\n\n handleDateSelect = (date: Date) => {\n this.props.onChange(date);\n this.close();\n this.focusOn('.btn');\n };\n\n getCalendar = () => {\n const { value, min, max, monthFormat, placeholder } = this.props;\n return (\n <div className=\"p-a-1\">\n <Calendar\n value={value}\n min={min}\n max={max}\n monthFormat={monthFormat}\n placeholder={placeholder}\n onChange={this.handleDateChange}\n onSelect={this.handleDateSelect}\n />\n </div>\n );\n };\n\n handleClear = () => {\n this.props.onChange(null);\n this.focusOn('.np-date-trigger');\n };\n\n render() {\n const { open } = this.state;\n\n const {\n inputAttributes,\n id: idProp,\n 'aria-labelledby': ariaLabelledByProp,\n size,\n placeholder,\n label,\n monthFormat,\n disabled,\n clearable,\n value,\n } = this.props;\n const id = idProp ?? inputAttributes?.id;\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes?.['aria-labelledby'];\n\n return (\n <div\n ref={this.element}\n aria-labelledby={id}\n aria-invalid={inputAttributes?.['aria-invalid']}\n aria-describedby={inputAttributes?.['aria-describedby']}\n className={clsx('input-group', disabled && 'disabled')}\n onKeyDown={this.handleKeyDown}\n >\n <OverlayIdProvider open={open}>\n <DateTrigger\n id={id}\n ariaLabelledBy={ariaLabelledBy}\n selectedDate={value}\n size={size}\n placeholder={placeholder}\n label={label}\n monthFormat={monthFormat}\n disabled={disabled || false}\n onClick={this.open}\n onClear={!disabled && clearable && value ? this.handleClear : undefined}\n />\n <ResponsivePanel\n anchorRef={this.element}\n open={open}\n className=\"tw-date-lookup-menu\"\n position={Position.BOTTOM}\n considerHeight\n onClose={this.discard}\n >\n {this.getCalendar()}\n </ResponsivePanel>\n </OverlayIdProvider>\n </div>\n );\n }\n}\n\nexport const DateLookupWithoutInputAttributes = DateLookup;\n\nconst WrappedDateLookup = withInputAttributes(\n DateLookup as React.ComponentType<DateLookupPropsWithInputAttributes>,\n { nonLabelable: true },\n);\nWrappedDateLookup.displayName = 'DateLookup';\n\nexport default WrappedDateLookup;\n"],"names":["DateLookup","PureComponent","defaultProps","value","min","max","size","Size","MEDIUM","placeholder","label","monthFormat","MonthFormat","LONG","disabled","clearable","element","createRef","constructor","props","state","originalDate","open","componentDidUpdate","previousProps","getTime","focusOn","onFocus","setState","discard","onChange","close","onBlur","handleKeyDown","event","key","preventDefault","preferredElement","fallbackElement","current","querySelector","focus","handleDateChange","date","handleDateSelect","getCalendar","_jsx","className","children","Calendar","onSelect","handleClear","render","inputAttributes","id","idProp","ariaLabelledByProp","ariaLabelledBy","ref","clsx","onKeyDown","_jsxs","OverlayIdProvider","DateTrigger","selectedDate","onClick","onClear","undefined","ResponsivePanel","anchorRef","position","Position","BOTTOM","considerHeight","onClose","WrappedDateLookup","withInputAttributes","nonLabelable","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"DateLookup.js","sources":["../../src/DateLookup/DateLookup.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { createRef, PureComponent, KeyboardEvent } from 'react';\nimport Calendar from '../Calendar';\nimport type { DateChangeMeta, DisabledRules, OnDateSelectParams } from '../Calendar/Calendar.types';\nimport {\n Size,\n MonthFormat,\n Position,\n type SizeSmall,\n type SizeMedium,\n type SizeLarge,\n} from '../common';\nimport ResponsivePanel from '../common/ResponsivePanel';\nimport { WithInputAttributesProps, withInputAttributes } from '../Inputs/contexts';\nimport { OverlayIdProvider } from '../Provider/overlay/OverlayIdProvider';\nimport DateTrigger from './DateTrigger';\n\nexport interface DateLookupProps {\n /** The currently selected date, or `null` for no selection. */\n value: Date | null;\n /** Called when an enabled date is confirmed. Receives `null` when the value is cleared. */\n onChange: (date: Date | null) => void;\n /** HTML `id` applied to the trigger button, used for label association. */\n id?: string;\n /** Earliest selectable date (inclusive). Dates before this are interactive but not selectable, and show a boundary prompt. */\n min?: Date | null;\n /** Latest selectable date (inclusive). Dates after this are interactive but not selectable, and show a boundary prompt. */\n max?: Date | null;\n /** Size of the trigger input. Defaults to `'md'`. */\n size?: SizeSmall | SizeMedium | SizeLarge;\n /** Label text rendered above the trigger input. */\n label?: string;\n /** ID of an external element that labels the trigger, for use inside custom label contexts. */\n 'aria-labelledby'?: string;\n /** Placeholder text shown in the trigger when no date is selected. */\n placeholder?: string;\n /** Month name format in the calendar header. Defaults to `'long'` (e.g. \"January\"). */\n monthFormat?: `${MonthFormat}`;\n /** When `true`, the trigger and calendar are non-interactive. */\n disabled?: boolean;\n /** When `true`, a clear button is shown in the trigger to reset the value to `null`. */\n clearable?: boolean;\n /** Rules for disabling specific weekdays, individual dates, or date ranges. The required `reason` is shown in an inline prompt and linked to disabled cells via `aria-describedby` for screen reader accessibility. */\n disabledRules?: DisabledRules;\n /** Called whenever any date is focused or clicked, including disabled and out-of-range dates. `isEnabled` is `false` when the date is not selectable. */\n onDateSelect?: (params: OnDateSelectParams) => void;\n /** Called when the calendar panel opens. */\n onFocus?: () => void;\n /** Called when the calendar panel closes. */\n onBlur?: () => void;\n}\n\ntype DateLookupPropsWithInputAttributes = DateLookupProps & Partial<WithInputAttributesProps>;\n\ninterface DateLookupState {\n originalDate: Date | null;\n open: boolean;\n}\n\nclass DateLookup extends PureComponent<DateLookupPropsWithInputAttributes, DateLookupState> {\n declare props: DateLookupPropsWithInputAttributes &\n Required<Pick<DateLookupPropsWithInputAttributes, keyof typeof DateLookup.defaultProps>>;\n\n static defaultProps = {\n value: null,\n min: null,\n max: null,\n size: Size.MEDIUM,\n placeholder: '',\n label: '',\n monthFormat: MonthFormat.LONG,\n disabled: false,\n clearable: false,\n } satisfies Partial<DateLookupPropsWithInputAttributes>;\n\n element = createRef<HTMLDivElement>();\n\n constructor(props: DateLookup['props']) {\n super(props);\n this.state = {\n originalDate: null,\n open: false,\n };\n }\n\n componentDidUpdate(previousProps: DateLookupPropsWithInputAttributes) {\n if (this.props.value?.getTime() !== previousProps.value?.getTime() && this.state.open) {\n this.focusOn('.active');\n }\n }\n\n open = () => {\n const { onFocus } = this.props;\n\n this.setState({ open: true });\n if (onFocus) {\n onFocus();\n }\n };\n\n discard = () => {\n const { originalDate } = this.state;\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n };\n\n close = () => {\n const { onBlur } = this.props;\n this.setState({ open: false, originalDate: null });\n if (onBlur) {\n onBlur();\n }\n };\n\n handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const { open, originalDate } = this.state;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n case 'ArrowRight':\n case 'ArrowDown':\n if (!open) {\n this.open();\n event.preventDefault();\n }\n break;\n case 'Escape':\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n event.preventDefault();\n break;\n default:\n break;\n }\n };\n\n focusOn = (preferredElement: string, fallbackElement?: string) => {\n const element = this.element.current?.querySelector(preferredElement) as HTMLElement | null;\n if (element) {\n element.focus();\n } else if (fallbackElement) {\n this.focusOn(fallbackElement);\n }\n };\n\n handleDateChange = (date: Date | null, meta: DateChangeMeta) => {\n const { onDateSelect } = this.props;\n if (date && onDateSelect) {\n onDateSelect({ date, isEnabled: meta.isEnabled });\n }\n };\n\n handleDateSelect = (date: Date | null) => {\n if (!date) return;\n this.setState(\n (state) => {\n const originalDate = state.originalDate ?? this.props.value;\n return { originalDate };\n },\n () => {\n this.props.onChange(date);\n this.close();\n this.focusOn('.btn');\n },\n );\n };\n\n getCalendar = () => {\n const { value, min, max, monthFormat, placeholder, disabledRules } = this.props;\n return (\n <div className=\"p-a-1\">\n <Calendar\n value={value}\n min={min}\n max={max}\n monthFormat={monthFormat}\n placeholder={placeholder}\n disabledRules={disabledRules}\n onDateFocus={this.handleDateChange}\n onChange={this.handleDateSelect}\n />\n </div>\n );\n };\n\n handleClear = () => {\n this.props.onChange(null);\n this.focusOn('.np-date-trigger');\n };\n\n render() {\n const { open } = this.state;\n\n const {\n inputAttributes,\n id: idProp,\n 'aria-labelledby': ariaLabelledByProp,\n size,\n placeholder,\n label,\n monthFormat,\n disabled,\n clearable,\n value,\n } = this.props;\n const id = idProp ?? inputAttributes?.id;\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes?.['aria-labelledby'];\n\n return (\n <div\n ref={this.element}\n aria-labelledby={id}\n aria-invalid={inputAttributes?.['aria-invalid']}\n aria-describedby={inputAttributes?.['aria-describedby']}\n className={clsx('input-group', disabled && 'disabled')}\n onKeyDown={this.handleKeyDown}\n >\n <OverlayIdProvider open={open}>\n <DateTrigger\n id={id}\n ariaLabelledBy={ariaLabelledBy}\n selectedDate={value}\n size={size}\n placeholder={placeholder}\n label={label}\n monthFormat={monthFormat}\n disabled={disabled || false}\n onClick={this.open}\n onClear={!disabled && clearable && value ? this.handleClear : undefined}\n />\n <ResponsivePanel\n anchorRef={this.element}\n open={open}\n className=\"tw-date-lookup-menu\"\n position={Position.BOTTOM}\n considerHeight\n onClose={this.discard}\n >\n {this.getCalendar()}\n </ResponsivePanel>\n </OverlayIdProvider>\n </div>\n );\n }\n}\n\nexport const DateLookupWithoutInputAttributes = DateLookup;\n\nconst WrappedDateLookup = withInputAttributes(\n DateLookup as React.ComponentType<DateLookupPropsWithInputAttributes>,\n { nonLabelable: true },\n);\nWrappedDateLookup.displayName = 'DateLookup';\n\nexport default WrappedDateLookup;\n"],"names":["DateLookup","PureComponent","defaultProps","value","min","max","size","Size","MEDIUM","placeholder","label","monthFormat","MonthFormat","LONG","disabled","clearable","element","createRef","constructor","props","state","originalDate","open","componentDidUpdate","previousProps","getTime","focusOn","onFocus","setState","discard","onChange","close","onBlur","handleKeyDown","event","key","preventDefault","preferredElement","fallbackElement","current","querySelector","focus","handleDateChange","date","meta","onDateSelect","isEnabled","handleDateSelect","getCalendar","disabledRules","_jsx","className","children","Calendar","onDateFocus","handleClear","render","inputAttributes","id","idProp","ariaLabelledByProp","ariaLabelledBy","ref","clsx","onKeyDown","_jsxs","OverlayIdProvider","DateTrigger","selectedDate","onClick","onClear","undefined","ResponsivePanel","anchorRef","position","Position","BOTTOM","considerHeight","onClose","WrappedDateLookup","withInputAttributes","nonLabelable","displayName"],"mappings":"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"}
@@ -119,7 +119,19 @@ class DateLookup extends PureComponent {
119
119
  this.focusOn(fallbackElement);
120
120
  }
121
121
  };
122
- handleDateChange = date => {
122
+ handleDateChange = (date, meta) => {
123
+ const {
124
+ onDateSelect
125
+ } = this.props;
126
+ if (date && onDateSelect) {
127
+ onDateSelect({
128
+ date,
129
+ isEnabled: meta.isEnabled
130
+ });
131
+ }
132
+ };
133
+ handleDateSelect = date => {
134
+ if (!date) return;
123
135
  this.setState(state => {
124
136
  const originalDate = state.originalDate ?? this.props.value;
125
137
  return {
@@ -127,20 +139,18 @@ class DateLookup extends PureComponent {
127
139
  };
128
140
  }, () => {
129
141
  this.props.onChange(date);
142
+ this.close();
143
+ this.focusOn('.btn');
130
144
  });
131
145
  };
132
- handleDateSelect = date => {
133
- this.props.onChange(date);
134
- this.close();
135
- this.focusOn('.btn');
136
- };
137
146
  getCalendar = () => {
138
147
  const {
139
148
  value,
140
149
  min,
141
150
  max,
142
151
  monthFormat,
143
- placeholder
152
+ placeholder,
153
+ disabledRules
144
154
  } = this.props;
145
155
  return /*#__PURE__*/jsx("div", {
146
156
  className: "p-a-1",
@@ -150,8 +160,9 @@ class DateLookup extends PureComponent {
150
160
  max: max,
151
161
  monthFormat: monthFormat,
152
162
  placeholder: placeholder,
153
- onChange: this.handleDateChange,
154
- onSelect: this.handleDateSelect
163
+ disabledRules: disabledRules,
164
+ onDateFocus: this.handleDateChange,
165
+ onChange: this.handleDateSelect
155
166
  })
156
167
  });
157
168
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DateLookup.mjs","sources":["../../src/DateLookup/DateLookup.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { createRef, PureComponent, KeyboardEvent } from 'react';\nimport Calendar from '../Calendar';\nimport {\n Size,\n MonthFormat,\n Position,\n type SizeSmall,\n type SizeMedium,\n type SizeLarge,\n} from '../common';\nimport ResponsivePanel from '../common/ResponsivePanel';\nimport { WithInputAttributesProps, withInputAttributes } from '../Inputs/contexts';\nimport { OverlayIdProvider } from '../Provider/overlay/OverlayIdProvider';\nimport DateTrigger from './DateTrigger';\n\nexport interface DateLookupProps {\n id?: string;\n value: Date | null;\n min?: Date | null;\n max?: Date | null;\n size?: SizeSmall | SizeMedium | SizeLarge;\n placeholder?: string;\n label?: string;\n 'aria-labelledby'?: string;\n monthFormat?: `${MonthFormat}`;\n disabled?: boolean;\n clearable?: boolean;\n onChange: (date: Date | null) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n}\n\ntype DateLookupPropsWithInputAttributes = DateLookupProps & Partial<WithInputAttributesProps>;\n\ninterface DateLookupState {\n originalDate: Date | null;\n open: boolean;\n}\n\nclass DateLookup extends PureComponent<DateLookupPropsWithInputAttributes, DateLookupState> {\n declare props: DateLookupPropsWithInputAttributes &\n Required<Pick<DateLookupPropsWithInputAttributes, keyof typeof DateLookup.defaultProps>>;\n\n static defaultProps = {\n value: null,\n min: null,\n max: null,\n size: Size.MEDIUM,\n placeholder: '',\n label: '',\n monthFormat: MonthFormat.LONG,\n disabled: false,\n clearable: false,\n } satisfies Partial<DateLookupPropsWithInputAttributes>;\n\n element = createRef<HTMLDivElement>();\n\n constructor(props: DateLookup['props']) {\n super(props);\n this.state = {\n originalDate: null,\n open: false,\n };\n }\n\n componentDidUpdate(previousProps: DateLookupPropsWithInputAttributes) {\n if (this.props.value?.getTime() !== previousProps.value?.getTime() && this.state.open) {\n this.focusOn('.active');\n }\n }\n\n open = () => {\n const { onFocus } = this.props;\n\n this.setState({ open: true });\n if (onFocus) {\n onFocus();\n }\n };\n\n discard = () => {\n const { originalDate } = this.state;\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n };\n\n close = () => {\n const { onBlur } = this.props;\n this.setState({ open: false, originalDate: null });\n if (onBlur) {\n onBlur();\n }\n };\n\n handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const { open, originalDate } = this.state;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n case 'ArrowRight':\n case 'ArrowDown':\n if (!open) {\n this.open();\n event.preventDefault();\n }\n break;\n case 'Escape':\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n event.preventDefault();\n break;\n default:\n break;\n }\n };\n\n focusOn = (preferredElement: string, fallbackElement?: string) => {\n const element = this.element.current?.querySelector(preferredElement) as HTMLElement | null;\n if (element) {\n element.focus();\n } else if (fallbackElement) {\n this.focusOn(fallbackElement);\n }\n };\n\n handleDateChange = (date: Date | null) => {\n this.setState(\n (state) => {\n const originalDate = state.originalDate ?? this.props.value;\n return { originalDate };\n },\n () => {\n this.props.onChange(date);\n },\n );\n };\n\n handleDateSelect = (date: Date) => {\n this.props.onChange(date);\n this.close();\n this.focusOn('.btn');\n };\n\n getCalendar = () => {\n const { value, min, max, monthFormat, placeholder } = this.props;\n return (\n <div className=\"p-a-1\">\n <Calendar\n value={value}\n min={min}\n max={max}\n monthFormat={monthFormat}\n placeholder={placeholder}\n onChange={this.handleDateChange}\n onSelect={this.handleDateSelect}\n />\n </div>\n );\n };\n\n handleClear = () => {\n this.props.onChange(null);\n this.focusOn('.np-date-trigger');\n };\n\n render() {\n const { open } = this.state;\n\n const {\n inputAttributes,\n id: idProp,\n 'aria-labelledby': ariaLabelledByProp,\n size,\n placeholder,\n label,\n monthFormat,\n disabled,\n clearable,\n value,\n } = this.props;\n const id = idProp ?? inputAttributes?.id;\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes?.['aria-labelledby'];\n\n return (\n <div\n ref={this.element}\n aria-labelledby={id}\n aria-invalid={inputAttributes?.['aria-invalid']}\n aria-describedby={inputAttributes?.['aria-describedby']}\n className={clsx('input-group', disabled && 'disabled')}\n onKeyDown={this.handleKeyDown}\n >\n <OverlayIdProvider open={open}>\n <DateTrigger\n id={id}\n ariaLabelledBy={ariaLabelledBy}\n selectedDate={value}\n size={size}\n placeholder={placeholder}\n label={label}\n monthFormat={monthFormat}\n disabled={disabled || false}\n onClick={this.open}\n onClear={!disabled && clearable && value ? this.handleClear : undefined}\n />\n <ResponsivePanel\n anchorRef={this.element}\n open={open}\n className=\"tw-date-lookup-menu\"\n position={Position.BOTTOM}\n considerHeight\n onClose={this.discard}\n >\n {this.getCalendar()}\n </ResponsivePanel>\n </OverlayIdProvider>\n </div>\n );\n }\n}\n\nexport const DateLookupWithoutInputAttributes = DateLookup;\n\nconst WrappedDateLookup = withInputAttributes(\n DateLookup as React.ComponentType<DateLookupPropsWithInputAttributes>,\n { nonLabelable: true },\n);\nWrappedDateLookup.displayName = 'DateLookup';\n\nexport default WrappedDateLookup;\n"],"names":["DateLookup","PureComponent","defaultProps","value","min","max","size","Size","MEDIUM","placeholder","label","monthFormat","MonthFormat","LONG","disabled","clearable","element","createRef","constructor","props","state","originalDate","open","componentDidUpdate","previousProps","getTime","focusOn","onFocus","setState","discard","onChange","close","onBlur","handleKeyDown","event","key","preventDefault","preferredElement","fallbackElement","current","querySelector","focus","handleDateChange","date","handleDateSelect","getCalendar","_jsx","className","children","Calendar","onSelect","handleClear","render","inputAttributes","id","idProp","ariaLabelledByProp","ariaLabelledBy","ref","clsx","onKeyDown","_jsxs","OverlayIdProvider","DateTrigger","selectedDate","onClick","onClear","undefined","ResponsivePanel","anchorRef","position","Position","BOTTOM","considerHeight","onClose","WrappedDateLookup","withInputAttributes","nonLabelable","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,MAAMA,UAAW,SAAQC,aAAkE,CAAA;AAIzF,EAAA,OAAOC,YAAY,GAAG;AACpBC,IAAAA,KAAK,EAAE,IAAI;AACXC,IAAAA,GAAG,EAAE,IAAI;AACTC,IAAAA,GAAG,EAAE,IAAI;IACTC,IAAI,EAAEC,IAAI,CAACC,MAAM;AACjBC,IAAAA,WAAW,EAAE,EAAE;AACfC,IAAAA,KAAK,EAAE,EAAE;IACTC,WAAW,EAAEC,WAAW,CAACC,IAAI;AAC7BC,IAAAA,QAAQ,EAAE,KAAK;AACfC,IAAAA,SAAS,EAAE;GAC0C;EAEvDC,OAAO,gBAAGC,SAAS,EAAkB;EAErCC,WAAAA,CAAYC,KAA0B,EAAA;IACpC,KAAK,CAACA,KAAK,CAAC;IACZ,IAAI,CAACC,KAAK,GAAG;AACXC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,IAAI,EAAE;KACP;AACH,EAAA;EAEAC,kBAAkBA,CAACC,aAAiD,EAAA;IAClE,IAAI,IAAI,CAACL,KAAK,CAAChB,KAAK,EAAEsB,OAAO,EAAE,KAAKD,aAAa,CAACrB,KAAK,EAAEsB,OAAO,EAAE,IAAI,IAAI,CAACL,KAAK,CAACE,IAAI,EAAE;AACrF,MAAA,IAAI,CAACI,OAAO,CAAC,SAAS,CAAC;AACzB,IAAA;AACF,EAAA;EAEAJ,IAAI,GAAGA,MAAK;IACV,MAAM;AAAEK,MAAAA;KAAS,GAAG,IAAI,CAACR,KAAK;IAE9B,IAAI,CAACS,QAAQ,CAAC;AAAEN,MAAAA,IAAI,EAAE;AAAI,KAAE,CAAC;AAC7B,IAAA,IAAIK,OAAO,EAAE;AACXA,MAAAA,OAAO,EAAE;AACX,IAAA;EACF,CAAC;EAEDE,OAAO,GAAGA,MAAK;IACb,MAAM;AAAER,MAAAA;KAAc,GAAG,IAAI,CAACD,KAAK;IACnC,IAAIC,YAAY,KAAK,IAAI,EAAE;AACzB,MAAA,IAAI,CAACF,KAAK,CAACW,QAAQ,CAACT,YAAY,CAAC;AACnC,IAAA;IACA,IAAI,CAACU,KAAK,EAAE;EACd,CAAC;EAEDA,KAAK,GAAGA,MAAK;IACX,MAAM;AAAEC,MAAAA;KAAQ,GAAG,IAAI,CAACb,KAAK;IAC7B,IAAI,CAACS,QAAQ,CAAC;AAAEN,MAAAA,IAAI,EAAE,KAAK;AAAED,MAAAA,YAAY,EAAE;AAAI,KAAE,CAAC;AAClD,IAAA,IAAIW,MAAM,EAAE;AACVA,MAAAA,MAAM,EAAE;AACV,IAAA;EACF,CAAC;EAEDC,aAAa,GAAIC,KAAoC,IAAI;IACvD,MAAM;MAAEZ,IAAI;AAAED,MAAAA;KAAc,GAAG,IAAI,CAACD,KAAK;IACzC,QAAQc,KAAK,CAACC,GAAG;AACf,MAAA,KAAK,WAAW;AAChB,MAAA,KAAK,SAAS;AACd,MAAA,KAAK,YAAY;AACjB,MAAA,KAAK,WAAW;QACd,IAAI,CAACb,IAAI,EAAE;UACT,IAAI,CAACA,IAAI,EAAE;UACXY,KAAK,CAACE,cAAc,EAAE;AACxB,QAAA;AACA,QAAA;AACF,MAAA,KAAK,QAAQ;QACX,IAAIf,YAAY,KAAK,IAAI,EAAE;AACzB,UAAA,IAAI,CAACF,KAAK,CAACW,QAAQ,CAACT,YAAY,CAAC;AACnC,QAAA;QACA,IAAI,CAACU,KAAK,EAAE;QACZG,KAAK,CAACE,cAAc,EAAE;AACtB,QAAA;AAGJ;EACF,CAAC;AAEDV,EAAAA,OAAO,GAAGA,CAACW,gBAAwB,EAAEC,eAAwB,KAAI;IAC/D,MAAMtB,OAAO,GAAG,IAAI,CAACA,OAAO,CAACuB,OAAO,EAAEC,aAAa,CAACH,gBAAgB,CAAuB;AAC3F,IAAA,IAAIrB,OAAO,EAAE;MACXA,OAAO,CAACyB,KAAK,EAAE;IACjB,CAAC,MAAM,IAAIH,eAAe,EAAE;AAC1B,MAAA,IAAI,CAACZ,OAAO,CAACY,eAAe,CAAC;AAC/B,IAAA;EACF,CAAC;EAEDI,gBAAgB,GAAIC,IAAiB,IAAI;AACvC,IAAA,IAAI,CAACf,QAAQ,CACVR,KAAK,IAAI;MACR,MAAMC,YAAY,GAAGD,KAAK,CAACC,YAAY,IAAI,IAAI,CAACF,KAAK,CAAChB,KAAK;MAC3D,OAAO;AAAEkB,QAAAA;OAAc;AACzB,IAAA,CAAC,EACD,MAAK;AACH,MAAA,IAAI,CAACF,KAAK,CAACW,QAAQ,CAACa,IAAI,CAAC;AAC3B,IAAA,CAAC,CACF;EACH,CAAC;EAEDC,gBAAgB,GAAID,IAAU,IAAI;AAChC,IAAA,IAAI,CAACxB,KAAK,CAACW,QAAQ,CAACa,IAAI,CAAC;IACzB,IAAI,CAACZ,KAAK,EAAE;AACZ,IAAA,IAAI,CAACL,OAAO,CAAC,MAAM,CAAC;EACtB,CAAC;EAEDmB,WAAW,GAAGA,MAAK;IACjB,MAAM;MAAE1C,KAAK;MAAEC,GAAG;MAAEC,GAAG;MAAEM,WAAW;AAAEF,MAAAA;KAAa,GAAG,IAAI,CAACU,KAAK;AAChE,IAAA,oBACE2B,GAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,OAAO;MAAAC,QAAA,eACpBF,GAAA,CAACG,QAAQ,EAAA;AACP9C,QAAAA,KAAK,EAAEA,KAAM;AACbC,QAAAA,GAAG,EAAEA,GAAI;AACTC,QAAAA,GAAG,EAAEA,GAAI;AACTM,QAAAA,WAAW,EAAEA,WAAY;AACzBF,QAAAA,WAAW,EAAEA,WAAY;QACzBqB,QAAQ,EAAE,IAAI,CAACY,gBAAiB;QAChCQ,QAAQ,EAAE,IAAI,CAACN;OAAiB;AAEpC,KAAK,CAAC;EAEV,CAAC;EAEDO,WAAW,GAAGA,MAAK;AACjB,IAAA,IAAI,CAAChC,KAAK,CAACW,QAAQ,CAAC,IAAI,CAAC;AACzB,IAAA,IAAI,CAACJ,OAAO,CAAC,kBAAkB,CAAC;EAClC,CAAC;AAED0B,EAAAA,MAAMA,GAAA;IACJ,MAAM;AAAE9B,MAAAA;KAAM,GAAG,IAAI,CAACF,KAAK;IAE3B,MAAM;MACJiC,eAAe;AACfC,MAAAA,EAAE,EAAEC,MAAM;AACV,MAAA,iBAAiB,EAAEC,kBAAkB;MACrClD,IAAI;MACJG,WAAW;MACXC,KAAK;MACLC,WAAW;MACXG,QAAQ;MACRC,SAAS;AACTZ,MAAAA;KACD,GAAG,IAAI,CAACgB,KAAK;AACd,IAAA,MAAMmC,EAAE,GAAGC,MAAM,IAAIF,eAAe,EAAEC,EAAE;AACxC,IAAA,MAAMG,cAAc,GAAGD,kBAAkB,IAAIH,eAAe,GAAG,iBAAiB,CAAC;AAEjF,IAAA,oBACEP,GAAA,CAAA,KAAA,EAAA;MACEY,GAAG,EAAE,IAAI,CAAC1C,OAAQ;AAClB,MAAA,iBAAA,EAAiBsC,EAAG;MACpB,cAAA,EAAcD,eAAe,GAAG,cAAc,CAAE;MAChD,kBAAA,EAAkBA,eAAe,GAAG,kBAAkB,CAAE;MACxDN,SAAS,EAAEY,IAAI,CAAC,aAAa,EAAE7C,QAAQ,IAAI,UAAU,CAAE;MACvD8C,SAAS,EAAE,IAAI,CAAC3B,aAAc;MAAAe,QAAA,eAE9Ba,IAAA,CAACC,iBAAiB,EAAA;AAACxC,QAAAA,IAAI,EAAEA,IAAK;QAAA0B,QAAA,EAAA,cAC5BF,GAAA,CAACiB,WAAW,EAAA;AACVT,UAAAA,EAAE,EAAEA,EAAG;AACPG,UAAAA,cAAc,EAAEA,cAAe;AAC/BO,UAAAA,YAAY,EAAE7D,KAAM;AACpBG,UAAAA,IAAI,EAAEA,IAAK;AACXG,UAAAA,WAAW,EAAEA,WAAY;AACzBC,UAAAA,KAAK,EAAEA,KAAM;AACbC,UAAAA,WAAW,EAAEA,WAAY;UACzBG,QAAQ,EAAEA,QAAQ,IAAI,KAAM;UAC5BmD,OAAO,EAAE,IAAI,CAAC3C,IAAK;UACnB4C,OAAO,EAAE,CAACpD,QAAQ,IAAIC,SAAS,IAAIZ,KAAK,GAAG,IAAI,CAACgD,WAAW,GAAGgB;AAAU,SAAA,CAE1E,eAAArB,GAAA,CAACsB,eAAe,EAAA;UACdC,SAAS,EAAE,IAAI,CAACrD,OAAQ;AACxBM,UAAAA,IAAI,EAAEA,IAAK;AACXyB,UAAAA,SAAS,EAAC,qBAAqB;UAC/BuB,QAAQ,EAAEC,QAAQ,CAACC,MAAO;UAC1BC,cAAc,EAAA,IAAA;UACdC,OAAO,EAAE,IAAI,CAAC7C,OAAQ;AAAAmB,UAAAA,QAAA,EAErB,IAAI,CAACH,WAAW;AAAE,SACJ,CACnB;OAAmB;AACrB,KAAK,CAAC;AAEV,EAAA;;AAKF,MAAM8B,iBAAiB,GAAGC,mBAAmB,CAC3C5E,UAAqE,EACrE;AAAE6E,EAAAA,YAAY,EAAE;AAAI,CAAE;AAExBF,iBAAiB,CAACG,WAAW,GAAG,YAAY;;;;"}
1
+ {"version":3,"file":"DateLookup.mjs","sources":["../../src/DateLookup/DateLookup.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { createRef, PureComponent, KeyboardEvent } from 'react';\nimport Calendar from '../Calendar';\nimport type { DateChangeMeta, DisabledRules, OnDateSelectParams } from '../Calendar/Calendar.types';\nimport {\n Size,\n MonthFormat,\n Position,\n type SizeSmall,\n type SizeMedium,\n type SizeLarge,\n} from '../common';\nimport ResponsivePanel from '../common/ResponsivePanel';\nimport { WithInputAttributesProps, withInputAttributes } from '../Inputs/contexts';\nimport { OverlayIdProvider } from '../Provider/overlay/OverlayIdProvider';\nimport DateTrigger from './DateTrigger';\n\nexport interface DateLookupProps {\n /** The currently selected date, or `null` for no selection. */\n value: Date | null;\n /** Called when an enabled date is confirmed. Receives `null` when the value is cleared. */\n onChange: (date: Date | null) => void;\n /** HTML `id` applied to the trigger button, used for label association. */\n id?: string;\n /** Earliest selectable date (inclusive). Dates before this are interactive but not selectable, and show a boundary prompt. */\n min?: Date | null;\n /** Latest selectable date (inclusive). Dates after this are interactive but not selectable, and show a boundary prompt. */\n max?: Date | null;\n /** Size of the trigger input. Defaults to `'md'`. */\n size?: SizeSmall | SizeMedium | SizeLarge;\n /** Label text rendered above the trigger input. */\n label?: string;\n /** ID of an external element that labels the trigger, for use inside custom label contexts. */\n 'aria-labelledby'?: string;\n /** Placeholder text shown in the trigger when no date is selected. */\n placeholder?: string;\n /** Month name format in the calendar header. Defaults to `'long'` (e.g. \"January\"). */\n monthFormat?: `${MonthFormat}`;\n /** When `true`, the trigger and calendar are non-interactive. */\n disabled?: boolean;\n /** When `true`, a clear button is shown in the trigger to reset the value to `null`. */\n clearable?: boolean;\n /** Rules for disabling specific weekdays, individual dates, or date ranges. The required `reason` is shown in an inline prompt and linked to disabled cells via `aria-describedby` for screen reader accessibility. */\n disabledRules?: DisabledRules;\n /** Called whenever any date is focused or clicked, including disabled and out-of-range dates. `isEnabled` is `false` when the date is not selectable. */\n onDateSelect?: (params: OnDateSelectParams) => void;\n /** Called when the calendar panel opens. */\n onFocus?: () => void;\n /** Called when the calendar panel closes. */\n onBlur?: () => void;\n}\n\ntype DateLookupPropsWithInputAttributes = DateLookupProps & Partial<WithInputAttributesProps>;\n\ninterface DateLookupState {\n originalDate: Date | null;\n open: boolean;\n}\n\nclass DateLookup extends PureComponent<DateLookupPropsWithInputAttributes, DateLookupState> {\n declare props: DateLookupPropsWithInputAttributes &\n Required<Pick<DateLookupPropsWithInputAttributes, keyof typeof DateLookup.defaultProps>>;\n\n static defaultProps = {\n value: null,\n min: null,\n max: null,\n size: Size.MEDIUM,\n placeholder: '',\n label: '',\n monthFormat: MonthFormat.LONG,\n disabled: false,\n clearable: false,\n } satisfies Partial<DateLookupPropsWithInputAttributes>;\n\n element = createRef<HTMLDivElement>();\n\n constructor(props: DateLookup['props']) {\n super(props);\n this.state = {\n originalDate: null,\n open: false,\n };\n }\n\n componentDidUpdate(previousProps: DateLookupPropsWithInputAttributes) {\n if (this.props.value?.getTime() !== previousProps.value?.getTime() && this.state.open) {\n this.focusOn('.active');\n }\n }\n\n open = () => {\n const { onFocus } = this.props;\n\n this.setState({ open: true });\n if (onFocus) {\n onFocus();\n }\n };\n\n discard = () => {\n const { originalDate } = this.state;\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n };\n\n close = () => {\n const { onBlur } = this.props;\n this.setState({ open: false, originalDate: null });\n if (onBlur) {\n onBlur();\n }\n };\n\n handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const { open, originalDate } = this.state;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n case 'ArrowRight':\n case 'ArrowDown':\n if (!open) {\n this.open();\n event.preventDefault();\n }\n break;\n case 'Escape':\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n event.preventDefault();\n break;\n default:\n break;\n }\n };\n\n focusOn = (preferredElement: string, fallbackElement?: string) => {\n const element = this.element.current?.querySelector(preferredElement) as HTMLElement | null;\n if (element) {\n element.focus();\n } else if (fallbackElement) {\n this.focusOn(fallbackElement);\n }\n };\n\n handleDateChange = (date: Date | null, meta: DateChangeMeta) => {\n const { onDateSelect } = this.props;\n if (date && onDateSelect) {\n onDateSelect({ date, isEnabled: meta.isEnabled });\n }\n };\n\n handleDateSelect = (date: Date | null) => {\n if (!date) return;\n this.setState(\n (state) => {\n const originalDate = state.originalDate ?? this.props.value;\n return { originalDate };\n },\n () => {\n this.props.onChange(date);\n this.close();\n this.focusOn('.btn');\n },\n );\n };\n\n getCalendar = () => {\n const { value, min, max, monthFormat, placeholder, disabledRules } = this.props;\n return (\n <div className=\"p-a-1\">\n <Calendar\n value={value}\n min={min}\n max={max}\n monthFormat={monthFormat}\n placeholder={placeholder}\n disabledRules={disabledRules}\n onDateFocus={this.handleDateChange}\n onChange={this.handleDateSelect}\n />\n </div>\n );\n };\n\n handleClear = () => {\n this.props.onChange(null);\n this.focusOn('.np-date-trigger');\n };\n\n render() {\n const { open } = this.state;\n\n const {\n inputAttributes,\n id: idProp,\n 'aria-labelledby': ariaLabelledByProp,\n size,\n placeholder,\n label,\n monthFormat,\n disabled,\n clearable,\n value,\n } = this.props;\n const id = idProp ?? inputAttributes?.id;\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes?.['aria-labelledby'];\n\n return (\n <div\n ref={this.element}\n aria-labelledby={id}\n aria-invalid={inputAttributes?.['aria-invalid']}\n aria-describedby={inputAttributes?.['aria-describedby']}\n className={clsx('input-group', disabled && 'disabled')}\n onKeyDown={this.handleKeyDown}\n >\n <OverlayIdProvider open={open}>\n <DateTrigger\n id={id}\n ariaLabelledBy={ariaLabelledBy}\n selectedDate={value}\n size={size}\n placeholder={placeholder}\n label={label}\n monthFormat={monthFormat}\n disabled={disabled || false}\n onClick={this.open}\n onClear={!disabled && clearable && value ? this.handleClear : undefined}\n />\n <ResponsivePanel\n anchorRef={this.element}\n open={open}\n className=\"tw-date-lookup-menu\"\n position={Position.BOTTOM}\n considerHeight\n onClose={this.discard}\n >\n {this.getCalendar()}\n </ResponsivePanel>\n </OverlayIdProvider>\n </div>\n );\n }\n}\n\nexport const DateLookupWithoutInputAttributes = DateLookup;\n\nconst WrappedDateLookup = withInputAttributes(\n DateLookup as React.ComponentType<DateLookupPropsWithInputAttributes>,\n { nonLabelable: true },\n);\nWrappedDateLookup.displayName = 'DateLookup';\n\nexport default WrappedDateLookup;\n"],"names":["DateLookup","PureComponent","defaultProps","value","min","max","size","Size","MEDIUM","placeholder","label","monthFormat","MonthFormat","LONG","disabled","clearable","element","createRef","constructor","props","state","originalDate","open","componentDidUpdate","previousProps","getTime","focusOn","onFocus","setState","discard","onChange","close","onBlur","handleKeyDown","event","key","preventDefault","preferredElement","fallbackElement","current","querySelector","focus","handleDateChange","date","meta","onDateSelect","isEnabled","handleDateSelect","getCalendar","disabledRules","_jsx","className","children","Calendar","onDateFocus","handleClear","render","inputAttributes","id","idProp","ariaLabelledByProp","ariaLabelledBy","ref","clsx","onKeyDown","_jsxs","OverlayIdProvider","DateTrigger","selectedDate","onClick","onClear","undefined","ResponsivePanel","anchorRef","position","Position","BOTTOM","considerHeight","onClose","WrappedDateLookup","withInputAttributes","nonLabelable","displayName"],"mappings":"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"}
@@ -12,6 +12,10 @@
12
12
  "neptune.DateLookup.goTo20YearView": "Go to 20 year view",
13
13
  "neptune.DateLookup.month": "month",
14
14
  "neptune.DateLookup.next": "next",
15
+ "neptune.DateLookup.notAvailable": "not available",
16
+ "neptune.DateLookup.outOfRangeAfter": "Please enter {min} or a later date.",
17
+ "neptune.DateLookup.outOfRangeBefore": "Please enter {max} or an earlier date.",
18
+ "neptune.DateLookup.outOfRangeBetween": "Please select a date between {min} and {max}.",
15
19
  "neptune.DateLookup.previous": "previous",
16
20
  "neptune.DateLookup.selected": "selected",
17
21
  "neptune.DateLookup.twentyYears": "20 years",
@@ -16,6 +16,10 @@ var en = {
16
16
  "neptune.DateLookup.goTo20YearView": "Go to 20 year view",
17
17
  "neptune.DateLookup.month": "month",
18
18
  "neptune.DateLookup.next": "next",
19
+ "neptune.DateLookup.notAvailable": "not available",
20
+ "neptune.DateLookup.outOfRangeAfter": "Please enter {min} or a later date.",
21
+ "neptune.DateLookup.outOfRangeBefore": "Please enter {max} or an earlier date.",
22
+ "neptune.DateLookup.outOfRangeBetween": "Please select a date between {min} and {max}.",
19
23
  "neptune.DateLookup.previous": "previous",
20
24
  "neptune.DateLookup.selected": "selected",
21
25
  "neptune.DateLookup.twentyYears": "20 years",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -12,6 +12,10 @@ var en = {
12
12
  "neptune.DateLookup.goTo20YearView": "Go to 20 year view",
13
13
  "neptune.DateLookup.month": "month",
14
14
  "neptune.DateLookup.next": "next",
15
+ "neptune.DateLookup.notAvailable": "not available",
16
+ "neptune.DateLookup.outOfRangeAfter": "Please enter {min} or a later date.",
17
+ "neptune.DateLookup.outOfRangeBefore": "Please enter {max} or an earlier date.",
18
+ "neptune.DateLookup.outOfRangeBetween": "Please select a date between {min} and {max}.",
15
19
  "neptune.DateLookup.previous": "previous",
16
20
  "neptune.DateLookup.selected": "selected",
17
21
  "neptune.DateLookup.twentyYears": "20 years",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -23,7 +23,7 @@
23
23
  "neptune.Field.characterCount": "Felhasználva {current}/{max} karakter",
24
24
  "neptune.FlowNavigation.back": "vissza az előző lépéshez",
25
25
  "neptune.Info.ariaLabel": "További információ",
26
- "neptune.Label.optional": "(Választható)",
26
+ "neptune.Label.optional": "(Válaszható)",
27
27
  "neptune.Link.opensInNewTab": "(új lapon nyílik meg)",
28
28
  "neptune.MoneyInput.Select.placeholder": "Válassz ki egy lehetőséget...",
29
29
  "neptune.MoneyInput.Select.searchPlaceholder": "Írj be egy pénznemet vagy országot",
@@ -27,7 +27,7 @@ var hu = {
27
27
  "neptune.Field.characterCount": "Felhasználva {current}/{max} karakter",
28
28
  "neptune.FlowNavigation.back": "vissza az előző lépéshez",
29
29
  "neptune.Info.ariaLabel": "További információ",
30
- "neptune.Label.optional": "(Választható)",
30
+ "neptune.Label.optional": "(Válaszható)",
31
31
  "neptune.Link.opensInNewTab": "(új lapon nyílik meg)",
32
32
  "neptune.MoneyInput.Select.placeholder": "Válassz ki egy lehetőséget...",
33
33
  "neptune.MoneyInput.Select.searchPlaceholder": "Írj be egy pénznemet vagy országot",
@@ -23,7 +23,7 @@ var hu = {
23
23
  "neptune.Field.characterCount": "Felhasználva {current}/{max} karakter",
24
24
  "neptune.FlowNavigation.back": "vissza az előző lépéshez",
25
25
  "neptune.Info.ariaLabel": "További információ",
26
- "neptune.Label.optional": "(Választható)",
26
+ "neptune.Label.optional": "(Válaszható)",
27
27
  "neptune.Link.opensInNewTab": "(új lapon nyílik meg)",
28
28
  "neptune.MoneyInput.Select.placeholder": "Válassz ki egy lehetőséget...",
29
29
  "neptune.MoneyInput.Select.searchPlaceholder": "Írj be egy pénznemet vagy országot",
package/build/index.js CHANGED
@@ -15,6 +15,7 @@ var BadgeAssets = require('./_deprecated/Badge/BadgeAssets.js');
15
15
  var Body = require('./Body/Body.js');
16
16
  var Button_resolver = require('./Button/Button.resolver.js');
17
17
  var IconButton = require('./IconButton/IconButton.js');
18
+ var Calendar = require('./Calendar/Calendar.js');
18
19
  var Carousel = require('./Carousel/Carousel.js');
19
20
  var Card = require('./_deprecated/Card/Card.js');
20
21
  var Checkbox = require('./Checkbox/Checkbox.js');
@@ -31,7 +32,6 @@ var BaseCard = require('./common/BaseCard/BaseCard.js');
31
32
  var CriticalCommsBanner = require('./_deprecated/CriticalBanner/CriticalCommsBanner.js');
32
33
  var DateInput = require('./DateInput/DateInput.js');
33
34
  var DateLookup = require('./DateLookup/DateLookup.js');
34
- var Calendar = require('./Calendar/Calendar.js');
35
35
  var Decision = require('./Decision/Decision.js');
36
36
  var DefinitionList = require('./DefinitionList/DefinitionList.js');
37
37
  var Dimmer = require('./Dimmer/Dimmer.js');
@@ -177,6 +177,7 @@ exports.BadgeAssets = BadgeAssets.default;
177
177
  exports.Body = Body.default;
178
178
  exports.Button = Button_resolver.default;
179
179
  exports.IconButton = IconButton.default;
180
+ exports.Calendar = Calendar.default;
180
181
  exports.Carousel = Carousel.default;
181
182
  exports.Card = Card.default;
182
183
  exports.Checkbox = Checkbox.default;
@@ -193,7 +194,6 @@ exports.BaseCard = BaseCard.default;
193
194
  exports.CriticalCommsBanner = CriticalCommsBanner.default;
194
195
  exports.DateInput = DateInput.default;
195
196
  exports.DateLookup = DateLookup.default;
196
- exports.Calendar = Calendar.default;
197
197
  exports.Decision = Decision.default;
198
198
  Object.defineProperty(exports, "DecisionPresentation", {
199
199
  enumerable: true,
package/build/index.mjs CHANGED
@@ -13,6 +13,7 @@ export { default as BadgeAssets } from './_deprecated/Badge/BadgeAssets.mjs';
13
13
  export { default as Body } from './Body/Body.mjs';
14
14
  export { default as Button } from './Button/Button.resolver.mjs';
15
15
  export { default as IconButton } from './IconButton/IconButton.mjs';
16
+ export { default as Calendar } from './Calendar/Calendar.mjs';
16
17
  export { default as Carousel } from './Carousel/Carousel.mjs';
17
18
  export { default as Card } from './_deprecated/Card/Card.mjs';
18
19
  export { default as Checkbox } from './Checkbox/Checkbox.mjs';
@@ -29,7 +30,6 @@ export { default as BaseCard } from './common/BaseCard/BaseCard.mjs';
29
30
  export { default as CriticalCommsBanner } from './_deprecated/CriticalBanner/CriticalCommsBanner.mjs';
30
31
  export { default as DateInput } from './DateInput/DateInput.mjs';
31
32
  export { default as DateLookup } from './DateLookup/DateLookup.mjs';
32
- export { default as Calendar } from './Calendar/Calendar.mjs';
33
33
  export { default as Decision, DecisionPresentation, DecisionType } from './Decision/Decision.mjs';
34
34
  export { default as DefinitionList } from './DefinitionList/DefinitionList.mjs';
35
35
  export { default as Dimmer } from './Dimmer/Dimmer.mjs';