@cloudscape-design/components 3.0.883 → 3.0.884

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/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.d.ts.map +1 -1
  2. package/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js +1 -1
  3. package/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js.map +1 -1
  4. package/breadcrumb-group/item/item.d.ts.map +1 -1
  5. package/breadcrumb-group/item/item.js +1 -1
  6. package/breadcrumb-group/item/item.js.map +1 -1
  7. package/button/internal.d.ts.map +1 -1
  8. package/button/internal.js +1 -1
  9. package/button/internal.js.map +1 -1
  10. package/button-group/file-input-item.d.ts +5 -3
  11. package/button-group/file-input-item.d.ts.map +1 -1
  12. package/button-group/file-input-item.js +2 -2
  13. package/button-group/file-input-item.js.map +1 -1
  14. package/button-group/icon-button-item.d.ts +5 -3
  15. package/button-group/icon-button-item.d.ts.map +1 -1
  16. package/button-group/icon-button-item.js +2 -2
  17. package/button-group/icon-button-item.js.map +1 -1
  18. package/button-group/icon-toggle-button-item.d.ts +5 -3
  19. package/button-group/icon-toggle-button-item.d.ts.map +1 -1
  20. package/button-group/icon-toggle-button-item.js +2 -2
  21. package/button-group/icon-toggle-button-item.js.map +1 -1
  22. package/button-group/item-element.d.ts.map +1 -1
  23. package/button-group/item-element.js +4 -4
  24. package/button-group/item-element.js.map +1 -1
  25. package/button-group/menu-dropdown-item.d.ts +1 -0
  26. package/button-group/menu-dropdown-item.d.ts.map +1 -1
  27. package/button-group/menu-dropdown-item.js +2 -2
  28. package/button-group/menu-dropdown-item.js.map +1 -1
  29. package/calendar/grid/index.d.ts.map +1 -1
  30. package/calendar/grid/index.js +1 -1
  31. package/calendar/grid/index.js.map +1 -1
  32. package/date-range-picker/calendar/grids/grid-cell.d.ts.map +1 -1
  33. package/date-range-picker/calendar/grids/grid-cell.js +2 -2
  34. package/date-range-picker/calendar/grids/grid-cell.js.map +1 -1
  35. package/date-range-picker/calendar/grids/grid.d.ts +18 -0
  36. package/date-range-picker/calendar/grids/grid.d.ts.map +1 -0
  37. package/date-range-picker/calendar/grids/grid.js +174 -0
  38. package/date-range-picker/calendar/grids/grid.js.map +1 -0
  39. package/date-range-picker/calendar/grids/index.d.ts +3 -20
  40. package/date-range-picker/calendar/grids/index.d.ts.map +1 -1
  41. package/date-range-picker/calendar/grids/index.js +51 -22
  42. package/date-range-picker/calendar/grids/index.js.map +1 -1
  43. package/date-range-picker/calendar/grids/interfaces.d.ts +47 -0
  44. package/date-range-picker/calendar/grids/interfaces.d.ts.map +1 -0
  45. package/date-range-picker/calendar/grids/interfaces.js +2 -0
  46. package/date-range-picker/calendar/grids/interfaces.js.map +1 -0
  47. package/date-range-picker/calendar/grids/intl.d.ts +17 -0
  48. package/date-range-picker/calendar/grids/intl.d.ts.map +1 -0
  49. package/date-range-picker/calendar/grids/intl.js +56 -0
  50. package/date-range-picker/calendar/grids/intl.js.map +1 -0
  51. package/date-range-picker/calendar/grids/styles.css.js +30 -24
  52. package/date-range-picker/calendar/grids/styles.scoped.css +62 -46
  53. package/date-range-picker/calendar/grids/styles.selectors.js +30 -24
  54. package/date-range-picker/calendar/header/header-button.d.ts +5 -4
  55. package/date-range-picker/calendar/header/header-button.d.ts.map +1 -1
  56. package/date-range-picker/calendar/header/header-button.js +6 -6
  57. package/date-range-picker/calendar/header/header-button.js.map +1 -1
  58. package/date-range-picker/calendar/header/index.d.ts +6 -4
  59. package/date-range-picker/calendar/header/index.d.ts.map +1 -1
  60. package/date-range-picker/calendar/header/index.js +18 -13
  61. package/date-range-picker/calendar/header/index.js.map +1 -1
  62. package/date-range-picker/calendar/index.d.ts +2 -1
  63. package/date-range-picker/calendar/index.d.ts.map +1 -1
  64. package/date-range-picker/calendar/index.js +49 -41
  65. package/date-range-picker/calendar/index.js.map +1 -1
  66. package/date-range-picker/calendar/range-inputs.d.ts +4 -3
  67. package/date-range-picker/calendar/range-inputs.d.ts.map +1 -1
  68. package/date-range-picker/calendar/range-inputs.js +23 -10
  69. package/date-range-picker/calendar/range-inputs.js.map +1 -1
  70. package/date-range-picker/calendar/utils.d.ts +2 -0
  71. package/date-range-picker/calendar/utils.d.ts.map +1 -1
  72. package/date-range-picker/calendar/utils.js +27 -1
  73. package/date-range-picker/calendar/utils.js.map +1 -1
  74. package/date-range-picker/dropdown.d.ts +3 -2
  75. package/date-range-picker/dropdown.d.ts.map +1 -1
  76. package/date-range-picker/dropdown.js +17 -12
  77. package/date-range-picker/dropdown.js.map +1 -1
  78. package/date-range-picker/index.d.ts.map +1 -1
  79. package/date-range-picker/index.js +17 -8
  80. package/date-range-picker/index.js.map +1 -1
  81. package/date-range-picker/interfaces.d.ts +89 -14
  82. package/date-range-picker/interfaces.d.ts.map +1 -1
  83. package/date-range-picker/interfaces.js.map +1 -1
  84. package/date-range-picker/mode-switcher.js +2 -2
  85. package/date-range-picker/mode-switcher.js.map +1 -1
  86. package/date-range-picker/relative-range/index.d.ts +2 -1
  87. package/date-range-picker/relative-range/index.d.ts.map +1 -1
  88. package/date-range-picker/relative-range/index.js +14 -8
  89. package/date-range-picker/relative-range/index.js.map +1 -1
  90. package/date-range-picker/relative-range/styles.css.js +6 -9
  91. package/date-range-picker/relative-range/styles.scoped.css +10 -19
  92. package/date-range-picker/relative-range/styles.selectors.js +6 -9
  93. package/date-range-picker/styles.css.js +23 -38
  94. package/date-range-picker/styles.scoped.css +32 -78
  95. package/date-range-picker/styles.selectors.js +23 -38
  96. package/date-range-picker/test-classes/styles.css.js +36 -2
  97. package/date-range-picker/test-classes/styles.scoped.css +36 -2
  98. package/date-range-picker/test-classes/styles.selectors.js +36 -2
  99. package/date-range-picker/utils.d.ts +9 -11
  100. package/date-range-picker/utils.d.ts.map +1 -1
  101. package/date-range-picker/utils.js +43 -32
  102. package/date-range-picker/utils.js.map +1 -1
  103. package/file-token-group/file-token.d.ts.map +1 -1
  104. package/file-token-group/file-token.js +1 -1
  105. package/file-token-group/file-token.js.map +1 -1
  106. package/i18n/messages/all.all.js +1 -1
  107. package/i18n/messages/all.all.json +1 -1
  108. package/i18n/messages/all.en.js +1 -1
  109. package/i18n/messages/all.en.json +1 -1
  110. package/i18n/messages-types.d.ts +9 -0
  111. package/i18n/messages-types.d.ts.map +1 -1
  112. package/i18n/messages-types.js.map +1 -1
  113. package/internal/components/tooltip/index.d.ts +2 -1
  114. package/internal/components/tooltip/index.d.ts.map +1 -1
  115. package/internal/components/tooltip/index.js +21 -2
  116. package/internal/components/tooltip/index.js.map +1 -1
  117. package/internal/environment.js +1 -1
  118. package/internal/environment.json +1 -1
  119. package/internal/manifest.json +1 -1
  120. package/internal/utils/date-time/calendar.d.ts +22 -6
  121. package/internal/utils/date-time/calendar.d.ts.map +1 -1
  122. package/internal/utils/date-time/calendar.js +62 -6
  123. package/internal/utils/date-time/calendar.js.map +1 -1
  124. package/multiselect/index.d.ts.map +1 -1
  125. package/multiselect/index.js +2 -3
  126. package/multiselect/index.js.map +1 -1
  127. package/package.json +1 -1
  128. package/progress-bar/index.d.ts.map +1 -1
  129. package/progress-bar/index.js +4 -3
  130. package/progress-bar/index.js.map +1 -1
  131. package/progress-bar/internal.js +2 -2
  132. package/progress-bar/internal.js.map +1 -1
  133. package/segmented-control/segment.d.ts.map +1 -1
  134. package/segmented-control/segment.js +1 -1
  135. package/segmented-control/segment.js.map +1 -1
  136. package/select/parts/item.d.ts.map +1 -1
  137. package/select/parts/item.js +4 -2
  138. package/select/parts/item.js.map +1 -1
  139. package/select/parts/multiselect-item.d.ts.map +1 -1
  140. package/select/parts/multiselect-item.js +4 -2
  141. package/select/parts/multiselect-item.js.map +1 -1
  142. package/slider/internal.d.ts.map +1 -1
  143. package/slider/internal.js +1 -1
  144. package/slider/internal.js.map +1 -1
  145. package/tabs/tab-header-bar.d.ts.map +1 -1
  146. package/tabs/tab-header-bar.js +1 -1
  147. package/tabs/tab-header-bar.js.map +1 -1
  148. package/test-utils/dom/date-range-picker/index.d.ts +26 -0
  149. package/test-utils/dom/date-range-picker/index.js +58 -24
  150. package/test-utils/dom/date-range-picker/index.js.map +1 -1
  151. package/test-utils/selectors/date-range-picker/index.d.ts +26 -0
  152. package/test-utils/selectors/date-range-picker/index.js +58 -24
  153. package/test-utils/selectors/date-range-picker/index.js.map +1 -1
  154. package/test-utils/tsconfig.tsbuildinfo +1 -1
  155. package/date-range-picker/calendar/grids/monthly-grid.d.ts +0 -39
  156. package/date-range-picker/calendar/grids/monthly-grid.d.ts.map +0 -1
  157. package/date-range-picker/calendar/grids/monthly-grid.js +0 -97
  158. package/date-range-picker/calendar/grids/monthly-grid.js.map +0 -1
@@ -1,26 +1,37 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { joinDateTime, splitDateTime } from '../internal/utils/date-time';
4
- import { isIsoDateOnly } from '../internal/utils/date-time';
4
+ import { isIsoDateOnly, isIsoMonthOnly } from '../internal/utils/date-time';
5
5
  import { normalizeTimeString } from '../internal/utils/date-time/join-date-time';
6
6
  import { setTimeOffset, shiftTimeOffset } from './time-offset';
7
- export function formatValue(value, { timeOffset, dateOnly }) {
8
- if (!value ||
9
- value.type === 'relative' ||
10
- (value.startDate === '' && value.endDate === '' && value.type === 'absolute')) {
7
+ function isAbsoluteValue(value) {
8
+ return value !== null && (value === null || value === void 0 ? void 0 : value.type) === 'absolute';
9
+ }
10
+ function isEmptyAbsoluteValue(value) {
11
+ return value.type === 'absolute' && value.startDate === '' && value.endDate === '';
12
+ }
13
+ function isDateOrMonthOnly(value, checkFn) {
14
+ return checkFn(value.startDate) && checkFn(value.endDate);
15
+ }
16
+ export function formatValue(value, { timeOffset, monthOnly, dateOnly, }) {
17
+ if (!isAbsoluteValue(value) || isEmptyAbsoluteValue(value)) {
11
18
  return value;
12
19
  }
13
- if (dateOnly) {
14
- return {
15
- type: 'absolute',
16
- startDate: value.startDate.split('T')[0],
17
- endDate: value.endDate.split('T')[0],
18
- };
20
+ if (monthOnly || dateOnly) {
21
+ const [startPart, endPart] = [value.startDate, value.endDate].map(date =>
22
+ //strip out time or day+time text from dates
23
+ monthOnly ? date.split('T')[0].split('-').slice(0, 2).join('-') : date.split('T')[0]);
24
+ return { type: 'absolute', startDate: startPart, endDate: endPart };
19
25
  }
20
- return setTimeOffset(value, timeOffset);
26
+ return setTimeOffset(value, timeOffset === null
27
+ ? {
28
+ startDate: undefined,
29
+ endDate: undefined,
30
+ }
31
+ : timeOffset);
21
32
  }
22
33
  export function getDefaultMode(value, relativeOptions, rangeSelectorMode) {
23
- if (value && value.type) {
34
+ if (value === null || value === void 0 ? void 0 : value.type) {
24
35
  return value.type;
25
36
  }
26
37
  if (rangeSelectorMode === 'relative-only') {
@@ -31,36 +42,36 @@ export function getDefaultMode(value, relativeOptions, rangeSelectorMode) {
31
42
  }
32
43
  return relativeOptions.length > 0 ? 'relative' : 'absolute';
33
44
  }
34
- export function splitAbsoluteValue(value) {
45
+ export function splitAbsoluteValue(value, hideTime = false) {
35
46
  if (!value) {
36
- return {
37
- start: { date: '', time: '' },
38
- end: { date: '', time: '' },
39
- };
47
+ return { start: { date: '', time: '' }, end: { date: '', time: '' } };
40
48
  }
41
- return { start: splitDateTime(value.startDate), end: splitDateTime(value.endDate) };
49
+ return {
50
+ start: Object.assign(Object.assign({}, splitDateTime(value.startDate)), (hideTime ? { time: '' } : {})),
51
+ end: Object.assign(Object.assign({}, splitDateTime(value.endDate)), (hideTime ? { time: '' } : {})),
52
+ };
42
53
  }
43
- export function joinAbsoluteValue(value) {
44
- const startTime = normalizeTimeString(value.start.time || '00:00:00');
45
- const endTime = normalizeTimeString(value.end.time || '23:59:59');
54
+ export function joinAbsoluteValue(value, hideTime = false) {
55
+ const [startTime, endTime] = [value.start.time || '00:00:00', value.end.time || '23:59:59'].map(normalizeTimeString);
46
56
  return {
47
57
  type: 'absolute',
48
- startDate: joinDateTime(value.start.date, startTime),
49
- endDate: joinDateTime(value.end.date, endTime),
58
+ startDate: hideTime ? value.start.date : joinDateTime(value.start.date, startTime),
59
+ endDate: hideTime ? value.end.date : joinDateTime(value.end.date, endTime),
50
60
  };
51
61
  }
52
- export function formatInitialValue(value, dateOnly, normalizedTimeOffset) {
53
- if ((value === null || value === void 0 ? void 0 : value.type) !== 'absolute') {
62
+ export function formatInitialValue(value, dateOnly, monthOnly, normalizedTimeOffset) {
63
+ if (!isAbsoluteValue(value)) {
54
64
  return shiftTimeOffset(value, normalizedTimeOffset);
55
65
  }
56
- if (value.endDate === '' && value.startDate === '') {
66
+ if (isEmptyAbsoluteValue(value)) {
57
67
  return value;
58
68
  }
59
- if (dateOnly) {
60
- return formatValue(value, { dateOnly, timeOffset: normalizedTimeOffset });
69
+ if (dateOnly || monthOnly) {
70
+ return formatValue(value, { dateOnly, monthOnly, timeOffset: normalizedTimeOffset });
71
+ }
72
+ if (isDateOrMonthOnly(value, isIsoDateOnly) || isDateOrMonthOnly(value, isIsoMonthOnly)) {
73
+ return value;
61
74
  }
62
- return isIsoDateOnly(value.startDate) && isIsoDateOnly(value.endDate)
63
- ? value
64
- : shiftTimeOffset(value, normalizedTimeOffset);
75
+ return shiftTimeOffset(value, normalizedTimeOffset);
65
76
  }
66
77
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/date-range-picker/utils.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { joinDateTime, splitDateTime } from '../internal/utils/date-time';\nimport { isIsoDateOnly } from '../internal/utils/date-time';\nimport { normalizeTimeString } from '../internal/utils/date-time/join-date-time';\nimport { DateRangePickerProps } from './interfaces';\nimport { setTimeOffset, shiftTimeOffset } from './time-offset';\n\nexport function formatValue(\n value: null | DateRangePickerProps.Value,\n { timeOffset, dateOnly }: { timeOffset: { startDate?: number; endDate?: number }; dateOnly: boolean }\n): null | DateRangePickerProps.Value {\n if (\n !value ||\n value.type === 'relative' ||\n (value.startDate === '' && value.endDate === '' && value.type === 'absolute')\n ) {\n return value;\n }\n if (dateOnly) {\n return {\n type: 'absolute',\n startDate: value.startDate.split('T')[0],\n endDate: value.endDate.split('T')[0],\n };\n }\n return setTimeOffset(value, timeOffset);\n}\n\nexport function getDefaultMode(\n value: null | DateRangePickerProps.Value,\n relativeOptions: readonly DateRangePickerProps.RelativeOption[],\n rangeSelectorMode: DateRangePickerProps.RangeSelectorMode\n) {\n if (value && value.type) {\n return value.type;\n }\n if (rangeSelectorMode === 'relative-only') {\n return 'relative';\n }\n if (rangeSelectorMode === 'absolute-only') {\n return 'absolute';\n }\n return relativeOptions.length > 0 ? 'relative' : 'absolute';\n}\n\nexport function splitAbsoluteValue(\n value: null | DateRangePickerProps.AbsoluteValue\n): DateRangePickerProps.PendingAbsoluteValue {\n if (!value) {\n return {\n start: { date: '', time: '' },\n end: { date: '', time: '' },\n };\n }\n return { start: splitDateTime(value.startDate), end: splitDateTime(value.endDate) };\n}\n\nexport function joinAbsoluteValue(\n value: DateRangePickerProps.PendingAbsoluteValue\n): DateRangePickerProps.AbsoluteValue {\n const startTime = normalizeTimeString(value.start.time || '00:00:00');\n const endTime = normalizeTimeString(value.end.time || '23:59:59');\n\n return {\n type: 'absolute',\n startDate: joinDateTime(value.start.date, startTime),\n endDate: joinDateTime(value.end.date, endTime),\n };\n}\n\ntype NormalizedTimeOffset =\n | {\n startDate: number;\n endDate: number;\n }\n | {\n startDate: undefined;\n endDate: undefined;\n };\n\nexport function formatInitialValue(\n value: null | DateRangePickerProps.Value,\n dateOnly: boolean,\n normalizedTimeOffset: NormalizedTimeOffset\n): DateRangePickerProps.Value | null {\n if (value?.type !== 'absolute') {\n return shiftTimeOffset(value, normalizedTimeOffset);\n }\n\n if (value.endDate === '' && value.startDate === '') {\n return value;\n }\n\n if (dateOnly) {\n return formatValue(value, { dateOnly, timeOffset: normalizedTimeOffset });\n }\n\n return isIsoDateOnly(value.startDate) && isIsoDateOnly(value.endDate)\n ? value\n : shiftTimeOffset(value, normalizedTimeOffset);\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/date-range-picker/utils.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAY/D,SAAS,eAAe,CAAC,KAAwC;IAC/D,OAAO,KAAK,KAAK,IAAI,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,UAAU,CAAC;AACtD,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAyC;IACrE,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,SAAS,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAyC,EACzC,OAAqD;IAErD,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,KAAwC,EACxC,EACE,UAAU,EACV,SAAS,EACT,QAAQ,GAKT;IAED,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE;QAC1D,OAAO,KAAK,CAAC;KACd;IAED,IAAI,SAAS,IAAI,QAAQ,EAAE;QACzB,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACvE,4CAA4C;QAC5C,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACrF,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;KACrE;IAED,OAAO,aAAa,CAClB,KAAK,EACL,UAAU,KAAK,IAAI;QACjB,CAAC,CAAC;YACE,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,SAAS;SACnB;QACH,CAAC,CAAC,UAAU,CACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAwC,EACxC,eAA+D,EAC/D,iBAAyD;IAEzD,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,EAAE;QACf,OAAO,KAAK,CAAC,IAAI,CAAC;KACnB;IACD,IAAI,iBAAiB,KAAK,eAAe,EAAE;QACzC,OAAO,UAAU,CAAC;KACnB;IACD,IAAI,iBAAiB,KAAK,eAAe,EAAE;QACzC,OAAO,UAAU,CAAC;KACnB;IACD,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAgD,EAChD,QAAQ,GAAG,KAAK;IAEhB,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;KACvE;IAED,OAAO;QACL,KAAK,kCACA,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,GAC9B,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAClC;QACD,GAAG,kCACE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,GAC5B,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAClC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAgD,EAChD,QAAQ,GAAG,KAAK;IAEhB,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACrH,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;QAClF,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAwC,EACxC,QAAiB,EACjB,SAAkB,EAClB,oBAA0C;IAE1C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;QAC3B,OAAO,eAAe,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;KACrD;IACD,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE;QAC/B,OAAO,KAAK,CAAC;KACd;IACD,IAAI,QAAQ,IAAI,SAAS,EAAE;QACzB,OAAO,WAAW,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC,CAAC;KACtF;IACD,IAAI,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE;QACvF,OAAO,KAAK,CAAC;KACd;IACD,OAAO,eAAe,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;AACtD,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { joinDateTime, splitDateTime } from '../internal/utils/date-time';\nimport { isIsoDateOnly, isIsoMonthOnly } from '../internal/utils/date-time';\nimport { normalizeTimeString } from '../internal/utils/date-time/join-date-time';\nimport { DateRangePickerProps } from './interfaces';\nimport { setTimeOffset, shiftTimeOffset } from './time-offset';\n\ntype NormalizedTimeOffset =\n | {\n startDate: number;\n endDate: number;\n }\n | {\n startDate: undefined;\n endDate: undefined;\n };\n\nfunction isAbsoluteValue(value: null | DateRangePickerProps.Value): value is DateRangePickerProps.AbsoluteValue {\n return value !== null && value?.type === 'absolute';\n}\n\nfunction isEmptyAbsoluteValue(value: DateRangePickerProps.AbsoluteValue): boolean {\n return value.type === 'absolute' && value.startDate === '' && value.endDate === '';\n}\n\nfunction isDateOrMonthOnly(\n value: DateRangePickerProps.AbsoluteValue,\n checkFn: typeof isIsoDateOnly | typeof isIsoMonthOnly\n): boolean {\n return checkFn(value.startDate) && checkFn(value.endDate);\n}\n\nexport function formatValue(\n value: null | DateRangePickerProps.Value,\n {\n timeOffset,\n monthOnly,\n dateOnly,\n }: {\n timeOffset: NormalizedTimeOffset | null;\n monthOnly: boolean;\n dateOnly: boolean;\n }\n): null | DateRangePickerProps.Value {\n if (!isAbsoluteValue(value) || isEmptyAbsoluteValue(value)) {\n return value;\n }\n\n if (monthOnly || dateOnly) {\n const [startPart, endPart] = [value.startDate, value.endDate].map(date =>\n //strip out time or day+time text from dates\n monthOnly ? date.split('T')[0].split('-').slice(0, 2).join('-') : date.split('T')[0]\n );\n return { type: 'absolute', startDate: startPart, endDate: endPart };\n }\n\n return setTimeOffset(\n value,\n timeOffset === null\n ? {\n startDate: undefined,\n endDate: undefined,\n }\n : timeOffset\n );\n}\n\nexport function getDefaultMode(\n value: null | DateRangePickerProps.Value,\n relativeOptions: readonly DateRangePickerProps.RelativeOption[],\n rangeSelectorMode: DateRangePickerProps.RangeSelectorMode\n): 'relative' | 'absolute' {\n if (value?.type) {\n return value.type;\n }\n if (rangeSelectorMode === 'relative-only') {\n return 'relative';\n }\n if (rangeSelectorMode === 'absolute-only') {\n return 'absolute';\n }\n return relativeOptions.length > 0 ? 'relative' : 'absolute';\n}\n\nexport function splitAbsoluteValue(\n value: null | DateRangePickerProps.AbsoluteValue,\n hideTime = false\n): DateRangePickerProps.PendingAbsoluteValue {\n if (!value) {\n return { start: { date: '', time: '' }, end: { date: '', time: '' } };\n }\n\n return {\n start: {\n ...splitDateTime(value.startDate),\n ...(hideTime ? { time: '' } : {}),\n },\n end: {\n ...splitDateTime(value.endDate),\n ...(hideTime ? { time: '' } : {}),\n },\n };\n}\n\nexport function joinAbsoluteValue(\n value: DateRangePickerProps.PendingAbsoluteValue,\n hideTime = false\n): DateRangePickerProps.AbsoluteValue {\n const [startTime, endTime] = [value.start.time || '00:00:00', value.end.time || '23:59:59'].map(normalizeTimeString);\n return {\n type: 'absolute',\n startDate: hideTime ? value.start.date : joinDateTime(value.start.date, startTime),\n endDate: hideTime ? value.end.date : joinDateTime(value.end.date, endTime),\n };\n}\n\nexport function formatInitialValue(\n value: null | DateRangePickerProps.Value,\n dateOnly: boolean,\n monthOnly: boolean,\n normalizedTimeOffset: NormalizedTimeOffset\n): DateRangePickerProps.Value | null {\n if (!isAbsoluteValue(value)) {\n return shiftTimeOffset(value, normalizedTimeOffset);\n }\n if (isEmptyAbsoluteValue(value)) {\n return value;\n }\n if (dateOnly || monthOnly) {\n return formatValue(value, { dateOnly, monthOnly, timeOffset: normalizedTimeOffset });\n }\n if (isDateOrMonthOnly(value, isIsoDateOnly) || isDateOrMonthOnly(value, isIsoMonthOnly)) {\n return value;\n }\n return shiftTimeOffset(value, normalizedTimeOffset);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"file-token.d.ts","sourceRoot":"","sources":["../../../src/file-token-group/file-token.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAKhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAMzE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAO/D,yBAAiB,cAAc,CAAC;IAC9B,UAAiB,WAAW;QAC1B,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;QACpD,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;QACjD,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;KACjD;CACF;AAED,UAAU,cAAe,SAAQ,kBAAkB;IACjD,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iBAAS,iBAAiB,CAAC,EACzB,IAAI,EACJ,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,OAAO,EACP,SAAS,EACT,kBAAkB,EAClB,OAAO,EACP,KAAK,GACN,EAAE,cAAc,eAiIhB;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"file-token.d.ts","sourceRoot":"","sources":["../../../src/file-token-group/file-token.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAKhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAMzE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAO/D,yBAAiB,cAAc,CAAC;IAC9B,UAAiB,WAAW;QAC1B,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;QACpD,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;QACjD,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;KACjD;CACF;AAED,UAAU,cAAe,SAAQ,kBAAkB;IACjD,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iBAAS,iBAAiB,CAAC,EACzB,IAAI,EACJ,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,OAAO,EACP,SAAS,EACT,kBAAkB,EAClB,OAAO,EACP,KAAK,GACN,EAAE,cAAc,eAkIhB;AAED,eAAe,iBAAiB,CAAC"}
@@ -69,7 +69,7 @@ function InternalFileToken({ file, showFileLastModified, showFileSize, showFileT
69
69
  onDismiss && !readOnly && React.createElement(DismissButton, { dismissLabel: getDismissLabel(index), onDismiss: onDismiss })),
70
70
  errorText && (React.createElement(FormFieldError, { id: errorId, errorIconAriaLabel: i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.errorIconAriaLabel }, errorText)),
71
71
  showWarning && (React.createElement(FormFieldWarning, { id: warningId, warningIconAriaLabel: i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.warningIconAriaLabel }, warningText)),
72
- showTooltip && isEllipsisActive() && (React.createElement(Tooltip, { trackRef: containerRef, trackKey: file.name, value: React.createElement(InternalBox, { fontWeight: "normal" }, file.name) }))));
72
+ showTooltip && isEllipsisActive() && (React.createElement(Tooltip, { trackRef: containerRef, trackKey: file.name, value: React.createElement(InternalBox, { fontWeight: "normal" }, file.name), onDismiss: () => setShowTooltip(false) }))));
73
73
  }
74
74
  export default InternalFileToken;
75
75
  //# sourceMappingURL=file-token.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-token.js","sourceRoot":"","sources":["../../../src/file-token-group/file-token.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport InternalBox from '../box/internal.js';\nimport { FormFieldError, FormFieldWarning } from '../form-field/internal';\nimport { BaseComponentProps } from '../internal/base-component/index.js';\nimport Tooltip from '../internal/components/tooltip/index';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport InternalSpaceBetween from '../space-between/internal.js';\nimport InternalSpinner from '../spinner/internal.js';\nimport DismissButton from '../token-group/dismiss-button';\nimport { TokenGroupProps } from '../token-group/interfaces.js';\nimport * as defaultFormatters from './default-formatters.js';\nimport { FileOptionThumbnail } from './thumbnail.js';\n\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\n\nexport namespace FileTokenProps {\n export interface I18nStrings {\n removeFileAriaLabel?: (fileIndex: number) => string;\n errorIconAriaLabel?: string;\n warningIconAriaLabel?: string;\n formatFileSize?: (sizeInBytes: number) => string;\n formatFileLastModified?: (date: Date) => string;\n }\n}\n\ninterface FileTokenProps extends BaseComponentProps {\n file: File;\n onDismiss: () => void;\n showFileSize?: boolean;\n showFileLastModified?: boolean;\n showFileThumbnail?: boolean;\n errorText?: React.ReactNode;\n warningText?: React.ReactNode;\n loading?: boolean;\n readOnly?: boolean;\n i18nStrings?: FileTokenProps.I18nStrings;\n dismissLabel?: string;\n alignment?: TokenGroupProps.Alignment;\n groupContainsImage?: boolean;\n isImage: boolean;\n index: number;\n}\n\nfunction InternalFileToken({\n file,\n showFileLastModified,\n showFileSize,\n showFileThumbnail,\n i18nStrings,\n onDismiss,\n errorText,\n warningText,\n readOnly,\n loading,\n alignment,\n groupContainsImage,\n isImage,\n index,\n}: FileTokenProps) {\n const formatFileSize = i18nStrings?.formatFileSize ?? defaultFormatters.formatFileSize;\n const formatFileLastModified = i18nStrings?.formatFileLastModified ?? defaultFormatters.formatFileLastModified;\n\n const errorId = useUniqueId('error');\n const warningId = useUniqueId('warning');\n\n const showWarning = warningText && !errorText;\n const containerRef = useRef<HTMLDivElement>(null);\n const fileNameRef = useRef<HTMLSpanElement>(null);\n const fileNameContainerRef = useRef<HTMLDivElement>(null);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const getDismissLabel = (fileIndex: number) => {\n return i18nStrings?.removeFileAriaLabel?.(fileIndex);\n };\n\n function isEllipsisActive() {\n const span = fileNameRef.current;\n const container = fileNameContainerRef.current;\n\n if (span && container) {\n return span.offsetWidth >= container.offsetWidth;\n }\n return false;\n }\n\n const fileIsSingleRow =\n !showFileLastModified && !showFileSize && (!groupContainsImage || (groupContainsImage && !showFileThumbnail));\n\n return (\n <div\n ref={containerRef}\n className={clsx(styles.token, {\n [styles['token-grid']]: alignment === 'horizontal',\n [styles['token-contains-image']]: groupContainsImage && showFileThumbnail,\n })}\n role=\"group\"\n aria-label={file.name}\n aria-describedby={errorText ? errorId : warningText ? warningId : undefined}\n aria-disabled={loading}\n data-index={index}\n >\n <div\n className={clsx(styles['token-box'], {\n [styles.loading]: loading,\n [styles.error]: errorText,\n [styles.warning]: showWarning,\n [styles.horizontal]: alignment === 'horizontal',\n [styles['read-only']]: readOnly,\n })}\n >\n {loading && (\n <div\n className={clsx(styles['file-loading-overlay'], {\n [styles['file-loading-overlay-single-row']]: loading && fileIsSingleRow,\n })}\n >\n <InternalSpinner variant=\"disabled\" size=\"normal\" />\n </div>\n )}\n <InternalBox className={styles['file-option']}>\n {showFileThumbnail && isImage && <FileOptionThumbnail file={file} />}\n\n <div\n className={clsx(styles['file-option-metadata'], {\n [styles['with-image']]: showFileThumbnail && isImage,\n [styles['single-row-loading']]: loading && fileIsSingleRow,\n })}\n >\n <InternalSpaceBetween direction=\"vertical\" size=\"xxxs\">\n <div\n onMouseOver={() => setShowTooltip(true)}\n onMouseOut={() => setShowTooltip(false)}\n ref={fileNameContainerRef}\n >\n <InternalBox\n fontWeight=\"normal\"\n className={clsx(styles['file-option-name'], testUtilStyles['file-option-name'], {\n [testUtilStyles['ellipsis-active']]: isEllipsisActive(),\n })}\n >\n <span ref={fileNameRef}>{file.name}</span>\n </InternalBox>\n </div>\n\n {showFileSize && file.size ? (\n <InternalBox\n fontSize=\"body-s\"\n color={'text-body-secondary'}\n className={clsx(styles['file-option-size'], testUtilStyles['file-option-size'])}\n >\n {formatFileSize(file.size)}\n </InternalBox>\n ) : null}\n\n {showFileLastModified && file.lastModified ? (\n <InternalBox\n fontSize=\"body-s\"\n color={'text-body-secondary'}\n className={clsx(styles['file-option-last-modified'], testUtilStyles['file-option-last-modified'])}\n >\n {formatFileLastModified(new Date(file.lastModified))}\n </InternalBox>\n ) : null}\n </InternalSpaceBetween>\n </div>\n </InternalBox>\n {onDismiss && !readOnly && <DismissButton dismissLabel={getDismissLabel(index)} onDismiss={onDismiss} />}\n </div>\n {errorText && (\n <FormFieldError id={errorId} errorIconAriaLabel={i18nStrings?.errorIconAriaLabel}>\n {errorText}\n </FormFieldError>\n )}\n {showWarning && (\n <FormFieldWarning id={warningId} warningIconAriaLabel={i18nStrings?.warningIconAriaLabel}>\n {warningText}\n </FormFieldWarning>\n )}\n {showTooltip && isEllipsisActive() && (\n <Tooltip\n trackRef={containerRef}\n trackKey={file.name}\n value={<InternalBox fontWeight=\"normal\">{file.name}</InternalBox>}\n />\n )}\n </div>\n );\n}\n\nexport default InternalFileToken;\n"]}
1
+ {"version":3,"file":"file-token.js","sourceRoot":"","sources":["../../../src/file-token-group/file-token.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport InternalBox from '../box/internal.js';\nimport { FormFieldError, FormFieldWarning } from '../form-field/internal';\nimport { BaseComponentProps } from '../internal/base-component/index.js';\nimport Tooltip from '../internal/components/tooltip/index';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport InternalSpaceBetween from '../space-between/internal.js';\nimport InternalSpinner from '../spinner/internal.js';\nimport DismissButton from '../token-group/dismiss-button';\nimport { TokenGroupProps } from '../token-group/interfaces.js';\nimport * as defaultFormatters from './default-formatters.js';\nimport { FileOptionThumbnail } from './thumbnail.js';\n\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\n\nexport namespace FileTokenProps {\n export interface I18nStrings {\n removeFileAriaLabel?: (fileIndex: number) => string;\n errorIconAriaLabel?: string;\n warningIconAriaLabel?: string;\n formatFileSize?: (sizeInBytes: number) => string;\n formatFileLastModified?: (date: Date) => string;\n }\n}\n\ninterface FileTokenProps extends BaseComponentProps {\n file: File;\n onDismiss: () => void;\n showFileSize?: boolean;\n showFileLastModified?: boolean;\n showFileThumbnail?: boolean;\n errorText?: React.ReactNode;\n warningText?: React.ReactNode;\n loading?: boolean;\n readOnly?: boolean;\n i18nStrings?: FileTokenProps.I18nStrings;\n dismissLabel?: string;\n alignment?: TokenGroupProps.Alignment;\n groupContainsImage?: boolean;\n isImage: boolean;\n index: number;\n}\n\nfunction InternalFileToken({\n file,\n showFileLastModified,\n showFileSize,\n showFileThumbnail,\n i18nStrings,\n onDismiss,\n errorText,\n warningText,\n readOnly,\n loading,\n alignment,\n groupContainsImage,\n isImage,\n index,\n}: FileTokenProps) {\n const formatFileSize = i18nStrings?.formatFileSize ?? defaultFormatters.formatFileSize;\n const formatFileLastModified = i18nStrings?.formatFileLastModified ?? defaultFormatters.formatFileLastModified;\n\n const errorId = useUniqueId('error');\n const warningId = useUniqueId('warning');\n\n const showWarning = warningText && !errorText;\n const containerRef = useRef<HTMLDivElement>(null);\n const fileNameRef = useRef<HTMLSpanElement>(null);\n const fileNameContainerRef = useRef<HTMLDivElement>(null);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const getDismissLabel = (fileIndex: number) => {\n return i18nStrings?.removeFileAriaLabel?.(fileIndex);\n };\n\n function isEllipsisActive() {\n const span = fileNameRef.current;\n const container = fileNameContainerRef.current;\n\n if (span && container) {\n return span.offsetWidth >= container.offsetWidth;\n }\n return false;\n }\n\n const fileIsSingleRow =\n !showFileLastModified && !showFileSize && (!groupContainsImage || (groupContainsImage && !showFileThumbnail));\n\n return (\n <div\n ref={containerRef}\n className={clsx(styles.token, {\n [styles['token-grid']]: alignment === 'horizontal',\n [styles['token-contains-image']]: groupContainsImage && showFileThumbnail,\n })}\n role=\"group\"\n aria-label={file.name}\n aria-describedby={errorText ? errorId : warningText ? warningId : undefined}\n aria-disabled={loading}\n data-index={index}\n >\n <div\n className={clsx(styles['token-box'], {\n [styles.loading]: loading,\n [styles.error]: errorText,\n [styles.warning]: showWarning,\n [styles.horizontal]: alignment === 'horizontal',\n [styles['read-only']]: readOnly,\n })}\n >\n {loading && (\n <div\n className={clsx(styles['file-loading-overlay'], {\n [styles['file-loading-overlay-single-row']]: loading && fileIsSingleRow,\n })}\n >\n <InternalSpinner variant=\"disabled\" size=\"normal\" />\n </div>\n )}\n <InternalBox className={styles['file-option']}>\n {showFileThumbnail && isImage && <FileOptionThumbnail file={file} />}\n\n <div\n className={clsx(styles['file-option-metadata'], {\n [styles['with-image']]: showFileThumbnail && isImage,\n [styles['single-row-loading']]: loading && fileIsSingleRow,\n })}\n >\n <InternalSpaceBetween direction=\"vertical\" size=\"xxxs\">\n <div\n onMouseOver={() => setShowTooltip(true)}\n onMouseOut={() => setShowTooltip(false)}\n ref={fileNameContainerRef}\n >\n <InternalBox\n fontWeight=\"normal\"\n className={clsx(styles['file-option-name'], testUtilStyles['file-option-name'], {\n [testUtilStyles['ellipsis-active']]: isEllipsisActive(),\n })}\n >\n <span ref={fileNameRef}>{file.name}</span>\n </InternalBox>\n </div>\n\n {showFileSize && file.size ? (\n <InternalBox\n fontSize=\"body-s\"\n color={'text-body-secondary'}\n className={clsx(styles['file-option-size'], testUtilStyles['file-option-size'])}\n >\n {formatFileSize(file.size)}\n </InternalBox>\n ) : null}\n\n {showFileLastModified && file.lastModified ? (\n <InternalBox\n fontSize=\"body-s\"\n color={'text-body-secondary'}\n className={clsx(styles['file-option-last-modified'], testUtilStyles['file-option-last-modified'])}\n >\n {formatFileLastModified(new Date(file.lastModified))}\n </InternalBox>\n ) : null}\n </InternalSpaceBetween>\n </div>\n </InternalBox>\n {onDismiss && !readOnly && <DismissButton dismissLabel={getDismissLabel(index)} onDismiss={onDismiss} />}\n </div>\n {errorText && (\n <FormFieldError id={errorId} errorIconAriaLabel={i18nStrings?.errorIconAriaLabel}>\n {errorText}\n </FormFieldError>\n )}\n {showWarning && (\n <FormFieldWarning id={warningId} warningIconAriaLabel={i18nStrings?.warningIconAriaLabel}>\n {warningText}\n </FormFieldWarning>\n )}\n {showTooltip && isEllipsisActive() && (\n <Tooltip\n trackRef={containerRef}\n trackKey={file.name}\n value={<InternalBox fontWeight=\"normal\">{file.name}</InternalBox>}\n onDismiss={() => setShowTooltip(false)}\n />\n )}\n </div>\n );\n}\n\nexport default InternalFileToken;\n"]}