@payloadcms/ui 4.0.0-beta.4 → 4.0.0-beta.6

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 (147) hide show
  1. package/dist/css/utilities.css +1 -0
  2. package/dist/elements/AddNewRelation/index.d.ts.map +1 -1
  3. package/dist/elements/AddNewRelation/index.js +4 -0
  4. package/dist/elements/AddNewRelation/index.js.map +1 -1
  5. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  6. package/dist/elements/AppHeader/index.js +2 -0
  7. package/dist/elements/AppHeader/index.js.map +1 -1
  8. package/dist/elements/Collapsible/index.css +1 -1
  9. package/dist/elements/ColumnSelection/Popup.css +2 -2
  10. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  11. package/dist/elements/DocumentDrawer/DrawerContent.js +15 -9
  12. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  13. package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
  14. package/dist/elements/DocumentHeader/Tabs/index.js +10 -8
  15. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  16. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  17. package/dist/elements/FileDetails/DraggableFileDetails/index.js +19 -12
  18. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  19. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  20. package/dist/elements/FileDetails/StaticFileDetails/index.js +63 -33
  21. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  22. package/dist/elements/FileManager/index.d.ts.map +1 -1
  23. package/dist/elements/FileManager/index.js +18 -11
  24. package/dist/elements/FileManager/index.js.map +1 -1
  25. package/dist/elements/FilterTrigger/index.d.ts.map +1 -1
  26. package/dist/elements/FilterTrigger/index.js +80 -44
  27. package/dist/elements/FilterTrigger/index.js.map +1 -1
  28. package/dist/elements/ListControls/index.css +1 -0
  29. package/dist/elements/ListControls/index.d.ts.map +1 -1
  30. package/dist/elements/ListControls/index.js +7 -4
  31. package/dist/elements/ListControls/index.js.map +1 -1
  32. package/dist/elements/ListControls/types.d.ts +1 -0
  33. package/dist/elements/ListControls/types.d.ts.map +1 -1
  34. package/dist/elements/ListControls/types.js.map +1 -1
  35. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  36. package/dist/elements/ListDrawer/DrawerContent.js +18 -12
  37. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  38. package/dist/elements/LivePreview/Toolbar/index.d.ts.map +1 -1
  39. package/dist/elements/LivePreview/Toolbar/index.js +13 -7
  40. package/dist/elements/LivePreview/Toolbar/index.js.map +1 -1
  41. package/dist/elements/Nav/NavSidebarToggle/index.d.ts.map +1 -1
  42. package/dist/elements/Nav/NavSidebarToggle/index.js +26 -37
  43. package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
  44. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  45. package/dist/elements/Nav/SidebarTabs/index.client.js +9 -2
  46. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  47. package/dist/elements/Nav/SidebarTabs/index.css +1 -1
  48. package/dist/elements/Nav/context.d.ts +1 -0
  49. package/dist/elements/Nav/context.d.ts.map +1 -1
  50. package/dist/elements/Nav/context.js +2 -0
  51. package/dist/elements/Nav/context.js.map +1 -1
  52. package/dist/elements/Nav/getNavPrefs.d.ts.map +1 -1
  53. package/dist/elements/Nav/getNavPrefs.js +7 -2
  54. package/dist/elements/Nav/getNavPrefs.js.map +1 -1
  55. package/dist/elements/Nav/index.css +11 -0
  56. package/dist/elements/Popup/PopupButtonList/index.css +1 -1
  57. package/dist/elements/Popup/SubmenuScope.d.ts +3 -5
  58. package/dist/elements/Popup/SubmenuScope.d.ts.map +1 -1
  59. package/dist/elements/Popup/SubmenuScope.js +10 -54
  60. package/dist/elements/Popup/SubmenuScope.js.map +1 -1
  61. package/dist/elements/Popup/index.css +15 -0
  62. package/dist/elements/Popup/index.d.ts.map +1 -1
  63. package/dist/elements/Popup/index.js +69 -30
  64. package/dist/elements/Popup/index.js.map +1 -1
  65. package/dist/elements/Popup/useSubmenuPointerIntent.d.ts +16 -4
  66. package/dist/elements/Popup/useSubmenuPointerIntent.d.ts.map +1 -1
  67. package/dist/elements/Popup/useSubmenuPointerIntent.js +68 -27
  68. package/dist/elements/Popup/useSubmenuPointerIntent.js.map +1 -1
  69. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  70. package/dist/elements/PreviewButton/index.js +4 -0
  71. package/dist/elements/PreviewButton/index.js.map +1 -1
  72. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
  73. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js +1 -0
  74. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
  75. package/dist/elements/ReactSelect/MultiValue/index.css +1 -1
  76. package/dist/elements/ReactSelect/index.css +4 -2
  77. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  78. package/dist/elements/ReactSelect/index.js +8 -3
  79. package/dist/elements/ReactSelect/index.js.map +1 -1
  80. package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
  81. package/dist/elements/SchedulePublishButton/index.js +4 -0
  82. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  83. package/dist/elements/Search/SearchInput/index.css +32 -3
  84. package/dist/elements/SegmentedControl/index.css +1 -1
  85. package/dist/elements/SidebarToggle/index.css +1 -1
  86. package/dist/elements/SortColumn/index.css +49 -5
  87. package/dist/elements/SortRow/index.css +1 -3
  88. package/dist/elements/SortRow/index.d.ts.map +1 -1
  89. package/dist/elements/SortRow/index.js +16 -10
  90. package/dist/elements/SortRow/index.js.map +1 -1
  91. package/dist/elements/StepNav/index.d.ts.map +1 -1
  92. package/dist/elements/StepNav/index.js +4 -1
  93. package/dist/elements/StepNav/index.js.map +1 -1
  94. package/dist/elements/Tabs/index.css +1 -1
  95. package/dist/elements/TimezonePicker/index.css +6 -5
  96. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  97. package/dist/elements/TimezonePicker/index.js +80 -43
  98. package/dist/elements/TimezonePicker/index.js.map +1 -1
  99. package/dist/elements/Upload/index.js +2 -0
  100. package/dist/elements/Upload/index.js.map +1 -1
  101. package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -1
  102. package/dist/elements/UploadDropzoneContent/index.js +1 -0
  103. package/dist/elements/UploadDropzoneContent/index.js.map +1 -1
  104. package/dist/elements/UserMenu/index.css +1 -1
  105. package/dist/exports/client/{DatePicker-AZBZPMY6.js → DatePicker-DJN2NVQC.js} +2 -2
  106. package/dist/exports/client/chunk-GQEFXRCN.js +29 -0
  107. package/dist/exports/client/{chunk-ZP2PB6M4.js.map → chunk-GQEFXRCN.js.map} +4 -4
  108. package/dist/exports/client/index.js +27 -27
  109. package/dist/exports/client/index.js.map +4 -4
  110. package/dist/fields/Blocks/SectionTitle/index.css +21 -2
  111. package/dist/fields/DateTime/index.js +1 -1
  112. package/dist/fields/DateTime/index.js.map +1 -1
  113. package/dist/fields/Upload/Input.d.ts.map +1 -1
  114. package/dist/fields/Upload/Input.js +1 -0
  115. package/dist/fields/Upload/Input.js.map +1 -1
  116. package/dist/fields/Upload/RelationshipContent/index.css +1 -1
  117. package/dist/forms/Form/index.d.ts.map +1 -1
  118. package/dist/forms/Form/index.js +9 -7
  119. package/dist/forms/Form/index.js.map +1 -1
  120. package/dist/hooks/usePointerSafeArea.d.ts +29 -0
  121. package/dist/hooks/usePointerSafeArea.d.ts.map +1 -0
  122. package/dist/hooks/usePointerSafeArea.js +232 -0
  123. package/dist/hooks/usePointerSafeArea.js.map +1 -0
  124. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  125. package/dist/providers/ListQuery/index.js +17 -1
  126. package/dist/providers/ListQuery/index.js.map +1 -1
  127. package/dist/styles.css +2 -1
  128. package/dist/views/List/index.client.d.ts.map +1 -1
  129. package/dist/views/List/index.client.js +15 -9
  130. package/dist/views/List/index.client.js.map +1 -1
  131. package/dist/views/Version/Default/index.d.ts.map +1 -1
  132. package/dist/views/Version/Default/index.js +6 -9
  133. package/dist/views/Version/Default/index.js.map +1 -1
  134. package/dist/views/Version/Default/types.d.ts +0 -1
  135. package/dist/views/Version/Default/types.d.ts.map +1 -1
  136. package/dist/views/Version/Default/types.js.map +1 -1
  137. package/dist/views/Version/Restore/index.css +0 -11
  138. package/dist/views/Version/Restore/index.d.ts +0 -1
  139. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  140. package/dist/views/Version/Restore/index.js +87 -115
  141. package/dist/views/Version/Restore/index.js.map +1 -1
  142. package/dist/views/Version/index.d.ts.map +1 -1
  143. package/dist/views/Version/index.js +1 -2
  144. package/dist/views/Version/index.js.map +1 -1
  145. package/package.json +4 -4
  146. package/dist/exports/client/chunk-ZP2PB6M4.js +0 -29
  147. /package/dist/exports/client/{DatePicker-AZBZPMY6.js.map → DatePicker-DJN2NVQC.js.map} +0 -0
@@ -13,54 +13,79 @@ import { formatOptions } from '../WhereBuilder/Condition/Select/formatOptions.js
13
13
  import './index.css';
14
14
  const SmallDropdownIndicator = props => {
15
15
  const {
16
- innerProps: {
17
- ref,
18
- ...restInnerProps
19
- },
16
+ innerProps,
20
17
  isDisabled
21
18
  } = props;
22
19
  if (isDisabled) {
23
20
  return null;
24
21
  }
25
- return /*#__PURE__*/_jsx("button", {
22
+ return /*#__PURE__*/_jsx("div", {
26
23
  className: "timezone-picker__dropdown-indicator",
27
- ref: ref,
28
- ...restInnerProps,
29
- onKeyDown: e => {
30
- if (e.key === 'Enter') {
31
- e.key = ' ';
32
- }
33
- },
34
- type: "button",
24
+ ...innerProps,
35
25
  children: /*#__PURE__*/_jsx(ChevronIcon, {
36
26
  size: 16
37
27
  })
38
28
  });
39
29
  };
40
30
  const SmallClearIndicator = props => {
31
+ const $ = _c(9);
41
32
  const {
42
- clearValue,
43
- innerProps: {
44
- ref,
45
- ...restInnerProps
46
- }
33
+ clearValue
47
34
  } = props;
48
- return /*#__PURE__*/_jsx("div", {
49
- className: "timezone-picker__clear-indicator",
50
- ref: typeof ref === 'string' ? null : ref,
51
- ...restInnerProps,
52
- onKeyDown: e => {
53
- if (e.key === 'Enter') {
54
- clearValue();
55
- e.stopPropagation();
56
- }
57
- },
58
- role: "button",
59
- tabIndex: 0,
60
- children: /*#__PURE__*/_jsx(CircledXIcon, {
61
- size: 24
62
- })
63
- });
35
+ const {
36
+ t
37
+ } = useTranslation();
38
+ let t0;
39
+ if ($[0] !== t) {
40
+ t0 = t("general:clear");
41
+ $[0] = t;
42
+ $[1] = t0;
43
+ } else {
44
+ t0 = $[1];
45
+ }
46
+ let t1;
47
+ if ($[2] !== t) {
48
+ t1 = t("general:timezone");
49
+ $[2] = t;
50
+ $[3] = t1;
51
+ } else {
52
+ t1 = $[3];
53
+ }
54
+ const t2 = `${t0} ${t1}`;
55
+ let t3;
56
+ if ($[4] !== clearValue) {
57
+ t3 = event => {
58
+ event.stopPropagation();
59
+ const input = event.currentTarget.closest(".timezone-picker")?.querySelector("[role=\"combobox\"]");
60
+ clearValue();
61
+ input?.focus();
62
+ };
63
+ $[4] = clearValue;
64
+ $[5] = t3;
65
+ } else {
66
+ t3 = $[5];
67
+ }
68
+ let t4;
69
+ if ($[6] !== t2 || $[7] !== t3) {
70
+ t4 = _jsx("button", {
71
+ "aria-label": t2,
72
+ className: "timezone-picker__clear-indicator",
73
+ onClick: t3,
74
+ onKeyDown: _temp,
75
+ onMouseDown: _temp2,
76
+ onTouchEnd: _temp3,
77
+ type: "button",
78
+ children: _jsx(CircledXIcon, {
79
+ size: 24
80
+ })
81
+ });
82
+ $[6] = t2;
83
+ $[7] = t3;
84
+ $[8] = t4;
85
+ } else {
86
+ t4 = $[8];
87
+ }
88
+ return t4;
64
89
  };
65
90
  const TimezoneOption = props => {
66
91
  const {
@@ -137,8 +162,9 @@ export const TimezonePicker = props => {
137
162
  }
138
163
  t2 = _jsxs("div", {
139
164
  className: "timezone-picker-wrapper",
140
- children: [_jsxs("span", {
165
+ children: [_jsxs("label", {
141
166
  className: "timezone-picker__label",
167
+ htmlFor: id,
142
168
  children: [t("general:timezone"), required && _jsx("span", {
143
169
  className: "timezone-picker__required",
144
170
  children: "*"
@@ -146,8 +172,8 @@ export const TimezonePicker = props => {
146
172
  }), _jsx(ReactSelect, {
147
173
  className: "timezone-picker",
148
174
  classNames: {
149
- menu: _temp,
150
- menuList: _temp2
175
+ menu: _temp4,
176
+ menuList: _temp5
151
177
  },
152
178
  components: {
153
179
  ClearIndicator: SmallClearIndicator,
@@ -165,8 +191,8 @@ export const TimezonePicker = props => {
165
191
  options,
166
192
  placeholder: t("general:none"),
167
193
  styles: {
168
- control: _temp3,
169
- option: _temp4
194
+ control: _temp6,
195
+ option: _temp7
170
196
  },
171
197
  value: selectedTimezone
172
198
  })]
@@ -184,19 +210,30 @@ export const TimezonePicker = props => {
184
210
  }
185
211
  return t2;
186
212
  };
187
- function _temp() {
213
+ function _temp(event_0) {
214
+ if (event_0.key === " " || event_0.key === "Enter") {
215
+ event_0.stopPropagation();
216
+ }
217
+ }
218
+ function _temp2(event_1) {
219
+ return event_1.stopPropagation();
220
+ }
221
+ function _temp3(event_2) {
222
+ return event_2.stopPropagation();
223
+ }
224
+ function _temp4() {
188
225
  return "timezone-picker__menu";
189
226
  }
190
- function _temp2() {
227
+ function _temp5() {
191
228
  return "timezone-picker__menu-list";
192
229
  }
193
- function _temp3(base) {
230
+ function _temp6(base) {
194
231
  return {
195
232
  ...base,
196
233
  flexWrap: "nowrap"
197
234
  };
198
235
  }
199
- function _temp4(base_0) {
236
+ function _temp7(base_0) {
200
237
  return {
201
238
  ...base_0,
202
239
  alignItems: "center",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useMemo","components","rsComponents","CheckIcon","ChevronIcon","CircledXIcon","useTranslation","ReactSelect","formatOptions","SmallDropdownIndicator","props","innerProps","ref","restInnerProps","isDisabled","_jsx","className","onKeyDown","e","key","type","size","SmallClearIndicator","clearValue","stopPropagation","role","tabIndex","TimezoneOption","children","_jsxs","Option","TimezonePicker","$","id","onChange","onChangeFromProps","options","optionsFromProps","readOnly","readOnlyFromProps","required","selectedTimezone","selectedTimezoneFromProps","t","t0","t1","t2","t_0","value","find","Boolean","length","t3","val","classNames","menu","_temp","menuList","_temp2","ClearIndicator","DropdownIndicator","customProps","menuPortalTheme","disabled","inputId","isClearable","isCreatable","placeholder","styles","control","_temp3","option","_temp4","base","flexWrap","base_0","alignItems","display","gap","minWidth"],"sources":["../../../src/elements/TimezonePicker/index.tsx"],"sourcesContent":["'use client'\n\nimport type { OptionObject } from 'payload'\nimport type React from 'react'\nimport type { JSX } from 'react'\nimport type {\n ClearIndicatorProps,\n DropdownIndicatorProps,\n OptionProps,\n StylesConfig,\n} from 'react-select'\n\nimport { useMemo } from 'react'\nimport { components as rsComponents } from 'react-select'\n\nimport type { Option as OptionType } from '../ReactSelect/types.js'\nimport type { Props } from './types.js'\n\nimport { CheckIcon } from '../../icons/Check/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { CircledXIcon } from '../../icons/CircledX/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport { formatOptions } from '../WhereBuilder/Condition/Select/formatOptions.js'\nimport './index.css'\n\nconst SmallDropdownIndicator: React.FC<\n {\n innerProps: JSX.IntrinsicElements['button']\n } & DropdownIndicatorProps<OptionType, true>\n> = (props) => {\n const {\n innerProps: { ref, ...restInnerProps },\n isDisabled,\n } = props\n\n if (isDisabled) {\n return null\n }\n\n return (\n <button\n className=\"timezone-picker__dropdown-indicator\"\n ref={ref}\n {...restInnerProps}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.key = ' '\n }\n }}\n type=\"button\"\n >\n <ChevronIcon size={16} />\n </button>\n )\n}\n\nconst SmallClearIndicator: React.FC<ClearIndicatorProps<OptionType, true>> = (props) => {\n const {\n clearValue,\n innerProps: { ref, ...restInnerProps },\n } = props\n\n return (\n <div\n className=\"timezone-picker__clear-indicator\"\n ref={typeof ref === 'string' ? null : ref}\n {...restInnerProps}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n clearValue()\n e.stopPropagation()\n }\n }}\n role=\"button\"\n tabIndex={0}\n >\n <CircledXIcon size={24} />\n </div>\n )\n}\n\nconst TimezoneOption: React.FC<OptionProps<OptionType, false>> = (props) => {\n const { children } = props\n\n return (\n <rsComponents.Option {...props}>\n <CheckIcon className=\"timezone-picker__option-check\" size={16} />\n <span className=\"timezone-picker__option-label\">{children}</span>\n </rsComponents.Option>\n )\n}\n\nexport const TimezonePicker: React.FC<Props> = (props) => {\n const {\n id,\n onChange: onChangeFromProps,\n options: optionsFromProps,\n readOnly: readOnlyFromProps,\n required,\n selectedTimezone: selectedTimezoneFromProps,\n } = props\n\n const { t } = useTranslation()\n\n const options = formatOptions(optionsFromProps)\n\n const selectedTimezone = useMemo(() => {\n return options.find((t) => {\n const value = typeof t === 'string' ? t : t.value\n return value === selectedTimezoneFromProps\n })\n }, [options, selectedTimezoneFromProps])\n\n const readOnly = Boolean(readOnlyFromProps) || options.length === 1\n\n return (\n <div className=\"timezone-picker-wrapper\">\n <span className=\"timezone-picker__label\">\n {t('general:timezone')}\n {required && <span className=\"timezone-picker__required\">*</span>}\n </span>\n <ReactSelect\n className=\"timezone-picker\"\n classNames={{\n menu: () => 'timezone-picker__menu',\n menuList: () => 'timezone-picker__menu-list',\n }}\n components={{\n ClearIndicator: SmallClearIndicator,\n DropdownIndicator: SmallDropdownIndicator,\n Option: TimezoneOption,\n }}\n customProps={{ menuPortalTheme: 'dark' }}\n disabled={readOnly}\n inputId={id}\n isClearable={!required}\n isCreatable={false}\n onChange={(val: OptionObject) => {\n if (onChangeFromProps) {\n onChangeFromProps(val?.value || '')\n }\n }}\n options={options}\n placeholder={t('general:none')}\n styles={{\n control: (base) => ({\n ...base,\n flexWrap: 'nowrap',\n }),\n option: (base) => ({\n ...base,\n alignItems: 'center',\n display: 'flex',\n gap: 'var(--spacer-1)',\n minWidth: 0,\n }),\n }}\n value={selectedTimezone}\n />\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAYA,SAASC,OAAO,QAAQ;AACxB,SAASC,UAAA,IAAcC,YAAY,QAAQ;AAK3C,SAASC,SAAS,QAAQ;AAC1B,SAASC,WAAW,QAAQ;AAC5B,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,WAAW,QAAQ;AAC5B,SAASC,aAAa,QAAQ;AAC9B,OAAO;AAEP,MAAMC,sBAAA,GAIDC,KAAA;EACH,MAAM;IACJC,UAAA,EAAY;MAAEC,GAAG;MAAE,GAAGC;IAAA,CAAgB;IACtCC;EAAU,CACX,GAAGJ,KAAA;EAEJ,IAAII,UAAA,EAAY;IACd,OAAO;EACT;EAEA,oBACEC,IAAA,CAAC;IACCC,SAAA,EAAU;IACVJ,GAAA,EAAKA,GAAA;IACJ,GAAGC,cAAc;IAClBI,SAAA,EAAYC,CAAA;MACV,IAAIA,CAAA,CAAEC,GAAG,KAAK,SAAS;QACrBD,CAAA,CAAEC,GAAG,GAAG;MACV;IACF;IACAC,IAAA,EAAK;cAEL,aAAAL,IAAA,CAACX,WAAA;MAAYiB,IAAA,EAAM;;;AAGzB;AAEA,MAAMC,mBAAA,GAAwEZ,KAAA;EAC5E,MAAM;IACJa,UAAU;IACVZ,UAAA,EAAY;MAAEC,GAAG;MAAE,GAAGC;IAAA;EAAgB,CACvC,GAAGH,KAAA;EAEJ,oBACEK,IAAA,CAAC;IACCC,SAAA,EAAU;IACVJ,GAAA,EAAK,OAAOA,GAAA,KAAQ,WAAW,OAAOA,GAAA;IACrC,GAAGC,cAAc;IAClBI,SAAA,EAAYC,CAAA;MACV,IAAIA,CAAA,CAAEC,GAAG,KAAK,SAAS;QACrBI,UAAA;QACAL,CAAA,CAAEM,eAAe;MACnB;IACF;IACAC,IAAA,EAAK;IACLC,QAAA,EAAU;cAEV,aAAAX,IAAA,CAACV,YAAA;MAAagB,IAAA,EAAM;;;AAG1B;AAEA,MAAMM,cAAA,GAA4DjB,KAAA;EAChE,MAAM;IAAEkB;EAAQ,CAAE,GAAGlB,KAAA;EAErB,oBACEmB,KAAA,CAAC3B,YAAA,CAAa4B,MAAM;IAAE,GAAGpB,KAAK;4BAC5BK,IAAA,CAACZ,SAAA;MAAUa,SAAA,EAAU;MAAgCK,IAAA,EAAM;qBAC3DN,IAAA,CAAC;MAAKC,SAAA,EAAU;gBAAiCY;;;AAGvD;AAEA,OAAO,MAAMG,cAAA,GAAkCrB,KAAA;EAAA,MAAAsB,CAAA,GAAAjC,EAAA;EAC7C;IAAAkC,EAAA;IAAAC,QAAA,EAAAC,iBAAA;IAAAC,OAAA,EAAAC,gBAAA;IAAAC,QAAA,EAAAC,iBAAA;IAAAC,QAAA;IAAAC,gBAAA,EAAAC;EAAA,IAOIhC,KAAA;EAEJ;IAAAiC;EAAA,IAAcrC,cAAA;EAAA,IAAAsC,EAAA;EAAA,IAAAZ,CAAA,QAAAK,gBAAA;IAEEO,EAAA,GAAApC,aAAA,CAAc6B,gBAAA;IAAAL,CAAA,MAAAK,gBAAA;IAAAL,CAAA,MAAAY,EAAA;EAAA;IAAAA,EAAA,GAAAZ,CAAA;EAAA;EAA9B,MAAAI,OAAA,GAAgBQ,EAAc;EAAA,IAAAC,EAAA;EAAA,IAAAb,CAAA,QAAAI,OAAA,IAAAJ,CAAA,QAAAU,yBAAA;IAAA,IAAAI,EAAA;IAAA,IAAAd,CAAA,QAAAU,yBAAA;MAGRI,EAAA,GAAAC,GAAA;QAClB,MAAAC,KAAA,GAAc,OAAOL,GAAA,KAAM,QAAsB,GAAnCI,GAAmC,GAAPJ,GAAA,CAAAK,KAAO;QAAA,OAC1CA,KAAA,KAAUN,yBAAA;MAAA,CACnB;MAAAV,CAAA,MAAAU,yBAAA;MAAAV,CAAA,MAAAc,EAAA;IAAA;MAAAA,EAAA,GAAAd,CAAA;IAAA;IAHOa,EAAA,GAAAT,OAAA,CAAAa,IAAY,CAACH,EAGpB;IAAAd,CAAA,MAAAI,OAAA;IAAAJ,CAAA,MAAAU,yBAAA;IAAAV,CAAA,MAAAa,EAAA;EAAA;IAAAA,EAAA,GAAAb,CAAA;EAAA;EAJF,MAAAS,gBAAA,GACEI,EAGA;EAGF,MAAAP,QAAA,GAAiBY,OAAA,CAAQX,iBAAyC,KAAnBH,OAAA,CAAAe,MAAc,KAAK;EAAA,IAAAL,EAAA;EAAA,IAAAd,CAAA,QAAAC,EAAA,IAAAD,CAAA,QAAAG,iBAAA,IAAAH,CAAA,QAAAI,OAAA,IAAAJ,CAAA,SAAAM,QAAA,IAAAN,CAAA,SAAAQ,QAAA,IAAAR,CAAA,SAAAS,gBAAA,IAAAT,CAAA,SAAAW,CAAA;IAAA,IAAAS,EAAA;IAAA,IAAApB,CAAA,SAAAG,iBAAA;MAwBlDiB,EAAA,GAAAC,GAAA;QACR,IAAIlB,iBAAA;UACFA,iBAAA,CAAkBkB,GAAA,EAAAL,KAAc,IAAd,EAAc;QAAA;MAClC,CACF;MAAAhB,CAAA,OAAAG,iBAAA;MAAAH,CAAA,OAAAoB,EAAA;IAAA;MAAAA,EAAA,GAAApB,CAAA;IAAA;IAzBJc,EAAA,GAAAjB,KAAA,CAAC;MAAAb,SAAA,EAAc;MAAAY,QAAA,E,CACbC,KAAA,CAAC;QAAAb,SAAA,EAAe;QAAAY,QAAA,E,CACbe,CAAA,CAAE,qBACFH,Q,IAAYzB,IAAA,CAAC;UAAAC,SAAA,EAAe;UAAAY,QAAA,EAA4B;;UAE3Db,IAAA,CAACR,WAAA;QAAAS,SAAA,EACW;QAAAsC,UAAA,EACE;UAAAC,IAAA,EACJC,KAAM;UAAAC,QAAA,EACFC;QACZ;QAAAzD,UAAA,EACY;UAAA0D,cAAA,EACMrC,mBAAA;UAAAsC,iBAAA,EACGnD,sBAAA;UAAAqB,MAAA,EACXH;QACV;QAAAkC,WAAA,EACa;UAAAC,eAAA,EAAmB;QAAO;QAAAC,QAAA,EAC7BzB,QAAA;QAAA0B,OAAA,EACD/B,EAAA;QAAAgC,WAAA,EACI,CAACzB,QAAA;QAAA0B,WAAA,EACD;QAAAhC,QAAA,EACHkB,EAIV;QAAAhB,OAAA;QAAA+B,WAAA,EAEaxB,CAAA,CAAE;QAAAyB,MAAA,EACP;UAAAC,OAAA,EACGC,MAGT;UAAAC,MAAA,EACQC;QAOV;QAAAxB,KAAA,EACOP;;;;;;;;;;;;;;SAzCXK,E;CA6CJ;AArE+C,SAAAU,MAAA;EAAA,OAgCzB;AAAA;AAhCyB,SAAAE,OAAA;EAAA,OAiCrB;AAAA;AAjCqB,SAAAY,OAAAG,IAAA;EAAA,OAqDjB;IAAA,GACfA,IAAI;IAAAC,QAAA,EACG;EACZ;AAAA;AAxDqC,SAAAF,OAAAG,MAAA;EAAA,OAyDlB;IAAA,GACdF,MAAI;IAAAG,UAAA,EACK;IAAAC,OAAA,EACH;IAAAC,GAAA,EACJ;IAAAC,QAAA,EACK;EACZ;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useMemo","components","rsComponents","CheckIcon","ChevronIcon","CircledXIcon","useTranslation","ReactSelect","formatOptions","SmallDropdownIndicator","props","innerProps","isDisabled","_jsx","className","size","SmallClearIndicator","$","clearValue","t","t0","t1","t2","t3","event","stopPropagation","input","currentTarget","closest","querySelector","focus","t4","onClick","onKeyDown","_temp","onMouseDown","_temp2","onTouchEnd","_temp3","type","children","TimezoneOption","_jsxs","Option","TimezonePicker","id","onChange","onChangeFromProps","options","optionsFromProps","readOnly","readOnlyFromProps","required","selectedTimezone","selectedTimezoneFromProps","t_0","value","find","Boolean","length","val","htmlFor","classNames","menu","_temp4","menuList","_temp5","ClearIndicator","DropdownIndicator","customProps","menuPortalTheme","disabled","inputId","isClearable","isCreatable","placeholder","styles","control","_temp6","option","_temp7","event_0","key","event_1","event_2","base","flexWrap","base_0","alignItems","display","gap","minWidth"],"sources":["../../../src/elements/TimezonePicker/index.tsx"],"sourcesContent":["'use client'\n\nimport type { OptionObject } from 'payload'\nimport type React from 'react'\nimport type { ClearIndicatorProps, DropdownIndicatorProps, OptionProps } from 'react-select'\n\nimport { useMemo } from 'react'\nimport { components as rsComponents } from 'react-select'\n\nimport type { Option as OptionType } from '../ReactSelect/types.js'\nimport type { Props } from './types.js'\n\nimport { CheckIcon } from '../../icons/Check/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { CircledXIcon } from '../../icons/CircledX/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport { formatOptions } from '../WhereBuilder/Condition/Select/formatOptions.js'\nimport './index.css'\n\nconst SmallDropdownIndicator: React.FC<DropdownIndicatorProps<OptionType, true>> = (props) => {\n const { innerProps, isDisabled } = props\n\n if (isDisabled) {\n return null\n }\n\n return (\n <div className=\"timezone-picker__dropdown-indicator\" {...innerProps}>\n <ChevronIcon size={16} />\n </div>\n )\n}\n\nconst SmallClearIndicator: React.FC<ClearIndicatorProps<OptionType, true>> = (props) => {\n const { clearValue } = props\n const { t } = useTranslation()\n\n return (\n <button\n aria-label={`${t('general:clear')} ${t('general:timezone')}`}\n className=\"timezone-picker__clear-indicator\"\n onClick={(event) => {\n event.stopPropagation()\n const input = event.currentTarget\n .closest('.timezone-picker')\n ?.querySelector<HTMLInputElement>('[role=\"combobox\"]')\n\n clearValue()\n input?.focus()\n }}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.stopPropagation()\n }\n }}\n onMouseDown={(event) => event.stopPropagation()}\n onTouchEnd={(event) => event.stopPropagation()}\n type=\"button\"\n >\n <CircledXIcon size={24} />\n </button>\n )\n}\n\nconst TimezoneOption: React.FC<OptionProps<OptionType, false>> = (props) => {\n const { children } = props\n\n return (\n <rsComponents.Option {...props}>\n <CheckIcon className=\"timezone-picker__option-check\" size={16} />\n <span className=\"timezone-picker__option-label\">{children}</span>\n </rsComponents.Option>\n )\n}\n\nexport const TimezonePicker: React.FC<Props> = (props) => {\n const {\n id,\n onChange: onChangeFromProps,\n options: optionsFromProps,\n readOnly: readOnlyFromProps,\n required,\n selectedTimezone: selectedTimezoneFromProps,\n } = props\n\n const { t } = useTranslation()\n\n const options = formatOptions(optionsFromProps)\n\n const selectedTimezone = useMemo(() => {\n return options.find((t) => {\n const value = typeof t === 'string' ? t : t.value\n return value === selectedTimezoneFromProps\n })\n }, [options, selectedTimezoneFromProps])\n\n const readOnly = Boolean(readOnlyFromProps) || options.length === 1\n\n return (\n <div className=\"timezone-picker-wrapper\">\n <label className=\"timezone-picker__label\" htmlFor={id}>\n {t('general:timezone')}\n {required && <span className=\"timezone-picker__required\">*</span>}\n </label>\n <ReactSelect\n className=\"timezone-picker\"\n classNames={{\n menu: () => 'timezone-picker__menu',\n menuList: () => 'timezone-picker__menu-list',\n }}\n components={{\n ClearIndicator: SmallClearIndicator,\n DropdownIndicator: SmallDropdownIndicator,\n Option: TimezoneOption,\n }}\n customProps={{ menuPortalTheme: 'dark' }}\n disabled={readOnly}\n inputId={id}\n isClearable={!required}\n isCreatable={false}\n onChange={(val: OptionObject) => {\n if (onChangeFromProps) {\n onChangeFromProps(val?.value || '')\n }\n }}\n options={options}\n placeholder={t('general:none')}\n styles={{\n control: (base) => ({\n ...base,\n flexWrap: 'nowrap',\n }),\n option: (base) => ({\n ...base,\n alignItems: 'center',\n display: 'flex',\n gap: 'var(--spacer-1)',\n minWidth: 0,\n }),\n }}\n value={selectedTimezone}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -385,6 +385,7 @@ const UploadComponent = props => {
385
385
  className: `${baseClass}__orText`,
386
386
  children: t('general:or')
387
387
  }), /*#__PURE__*/_jsx(Button, {
388
+ "aria-label": t('upload:pasteURL'),
388
389
  buttonStyle: "pill",
389
390
  className: `${baseClass}__pasteFromClipboard`,
390
391
  icon: "clipboard",
@@ -399,6 +400,7 @@ const UploadComponent = props => {
399
400
  })
400
401
  }), value && fileSrc && /*#__PURE__*/_jsxs(React.Fragment, {
401
402
  children: [/*#__PURE__*/_jsx(Button, {
403
+ "aria-label": t('general:cancel'),
402
404
  buttonStyle: "ghost",
403
405
  className: `${baseClass}__remove`,
404
406
  icon: "x",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","isImage","React","useCallback","useEffect","useRef","useState","FieldError","fieldBaseClass","TextInput","useForm","useFormProcessing","useField","useDocumentInfo","EditDepthProvider","useTranslation","UploadControlsProvider","useUploadControls","useUploadEdits","Button","Drawer","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","getEditorFileSrc","pasteURLDrawerSlug","UploadFromURLModal","usePasteFromClipboard","useUploadFromUrl","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","name","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","openModal","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","_jsxs","className","children","Fragment","_jsx","buttonStyle","margin","onClick","size","map","_temp","Upload","props","resetUploadEdits","updateUploadEdits","uploadEdits","UploadComponent","collectionSlug","initialState","onChange","uploadConfig","UploadControls","setUploadControlFile","setUploadControlFileName","setUploadControlFileUrl","uploadControlFile","uploadControlFileUrl","setModified","data","docPermissions","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","inputRef","handleFileChange","file","isNewFile","File","URL","createObjectURL","renameFile","fileToChange","newName","newFile","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileFetchedFromUrl","fileUrl","handleUrlSubmit","isValidUrl","setFileUrl","onFileFetched","handlePasteFromClipboard","handleFileRemoval","onEditsSave","args","startsWith","revokeObjectURL","canRemoveUpload","update","hasVariants","variants","hasImageAdjustments","Boolean","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","handleControlFileUrl","handleControlFile","drawers","fileName","hasSelectedFile","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","slug","title","label","doc","pasteURL","filter","message","customUploadActions","handleRemove","hasImageSizes","hideRemoveFile","hideFileInputOnCreate","current","click","accept","hidden","ref","icon","tooltip","round","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { isImage } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { TextInput } from '../../fields/Text/Input.js'\nimport { useForm, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider, useUploadControls } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport './index.css'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport { getEditorFileSrc } from './getEditorFileSrc.js'\nimport { pasteURLDrawerSlug, UploadFromURLModal } from './UploadFromURLModal/index.js'\nimport { usePasteFromClipboard } from './usePasteFromClipboard.js'\nimport { useUploadFromUrl } from './useUploadFromUrl.js'\n\nexport { pasteURLDrawerSlug }\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n if (value && (!value.name || value.name === '')) {\n return 'A file name is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n const { openModal } = useModal()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__previewSizes`}\n margin={false}\n onClick={() => {\n openModal(sizePreviewSlug)\n }}\n size=\"medium\"\n >\n {t('upload:previewSizes')}\n </Button>\n )}\n {enableAdjustments && (\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__edit`}\n margin={false}\n onClick={() => {\n openModal(editDrawerSlug)\n }}\n size=\"medium\"\n >\n {t('upload:editImage')}\n </Button>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: Omit<SanitizedCollectionConfig['upload'], 'uploadInstructions'>\n readonly UploadControls?: React.ReactNode\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n return (\n <UploadControlsProvider>\n <UploadComponent\n {...props}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadEdits={uploadEdits}\n />\n </UploadControlsProvider>\n )\n}\n\ntype UploadComponentProps = {\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadEdits?: UploadEdits\n} & UploadProps\n\nconst UploadComponent: React.FC<UploadComponentProps> = (props) => {\n const {\n collectionSlug,\n customActions,\n initialState,\n onChange,\n resetUploadEdits,\n updateUploadEdits,\n uploadConfig,\n UploadControls,\n uploadEdits,\n } = props\n\n const {\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileUrl,\n } = useUploadControls()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { data, docPermissions } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleFileChange = useCallback(\n ({ file, isNewFile = true }: { file: File | null; isNewFile?: boolean }) => {\n if (isNewFile && file instanceof File) {\n setFileSrc(URL.createObjectURL(file))\n }\n\n setValue(file)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n\n if (typeof onChange === 'function') {\n onChange(file)\n }\n },\n [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange({ file: renameFile(value, updatedFileName), isNewFile: false })\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange({ file: fileToUpload })\n },\n [handleFileChange],\n )\n\n const handleFileFetchedFromUrl = useCallback(\n (file: File) => handleFileChange({ file }),\n [handleFileChange],\n )\n\n const { fileUrl, handleUrlSubmit, isValidUrl, setFileUrl } = useUploadFromUrl({\n collectionSlug,\n onFileFetched: handleFileFetchedFromUrl,\n uploadConfig,\n })\n\n const handlePasteFromClipboard = usePasteFromClipboard({\n handleFileSelection,\n handleUrlSubmit,\n setFileUrl,\n uploadConfig,\n })\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange({ file: null })\n setFileSrc('')\n setFileUrl('')\n resetUploadEdits()\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n }, [\n handleFileChange,\n resetUploadEdits,\n setFileUrl,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n ])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\n }, [initialState])\n\n useEffect(() => {\n return () => {\n if (fileSrc?.startsWith('blob:')) {\n URL.revokeObjectURL(fileSrc)\n }\n }\n }, [fileSrc])\n\n useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload = docPermissions?.update\n\n const hasVariants = uploadConfig?.variants?.length > 0\n const hasImageAdjustments = Boolean(uploadConfig?.hasImageAdjustments)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasVariants || hasImageAdjustments || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n const imageCacheTag = uploadConfig?.cacheTags && data?.updatedAt\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit, setFileUrl])\n\n useEffect(() => {\n const handleControlFile = () => {\n if (uploadControlFile) {\n handleFileChange({ file: uploadControlFile })\n }\n }\n\n void handleControlFile()\n }, [uploadControlFile, handleFileChange])\n\n const drawers = (\n <React.Fragment>\n {(value || data?.filename) && (\n <EditDepthProvider>\n <EditUpload\n fileName={value?.name || data?.filename}\n fileSrc={getEditorFileSrc({ data, fileSrc, hasSelectedFile: Boolean(value) })}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || data?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || data?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </EditDepthProvider>\n )}\n {data && hasVariants && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: data.filename })}\n >\n <PreviewSizes doc={data} imageCacheTag={imageCacheTag} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n {uploadConfig?.pasteURL !== false && (\n <UploadFromURLModal\n fileUrl={fileUrl}\n handleUrlSubmit={handleUrlSubmit}\n isValidUrl={isValidUrl}\n setFileUrl={setFileUrl}\n />\n )}\n </React.Fragment>\n )\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {data && data.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={data}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasVariants}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !data?.filename) || removedFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"medium\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__pasteFromClipboard`}\n icon=\"clipboard\"\n onClick={handlePasteFromClipboard}\n size=\"medium\"\n tooltip={t('upload:pasteURL')}\n />\n\n {UploadControls ? UploadControls : null}\n </div>\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n <TextInput\n label={t('upload:fileName')}\n onChange={handleFileNameChange}\n path=\"filename\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasVariants && data?.filename && !removedFile}\n mimeType={value.type}\n />\n </div>\n </React.Fragment>\n )}\n </div>\n )}\n {drawers}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","isImage","React","useCallback","useEffect","useRef","useState","FieldError","fieldBaseClass","TextInput","useForm","useFormProcessing","useField","useDocumentInfo","EditDepthProvider","useTranslation","UploadControlsProvider","useUploadControls","useUploadEdits","Button","Drawer","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","getEditorFileSrc","pasteURLDrawerSlug","UploadFromURLModal","usePasteFromClipboard","useUploadFromUrl","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","name","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","openModal","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","_jsxs","className","children","Fragment","_jsx","buttonStyle","margin","onClick","size","map","_temp","Upload","props","resetUploadEdits","updateUploadEdits","uploadEdits","UploadComponent","collectionSlug","initialState","onChange","uploadConfig","UploadControls","setUploadControlFile","setUploadControlFileName","setUploadControlFileUrl","uploadControlFile","uploadControlFileUrl","setModified","data","docPermissions","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","inputRef","handleFileChange","file","isNewFile","File","URL","createObjectURL","renameFile","fileToChange","newName","newFile","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileFetchedFromUrl","fileUrl","handleUrlSubmit","isValidUrl","setFileUrl","onFileFetched","handlePasteFromClipboard","handleFileRemoval","onEditsSave","args","startsWith","revokeObjectURL","canRemoveUpload","update","hasVariants","variants","hasImageAdjustments","Boolean","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","handleControlFileUrl","handleControlFile","drawers","fileName","hasSelectedFile","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","slug","title","label","doc","pasteURL","filter","message","customUploadActions","handleRemove","hasImageSizes","hideRemoveFile","hideFileInputOnCreate","current","click","accept","hidden","ref","icon","tooltip","round","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { isImage } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { TextInput } from '../../fields/Text/Input.js'\nimport { useForm, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider, useUploadControls } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport './index.css'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport { getEditorFileSrc } from './getEditorFileSrc.js'\nimport { pasteURLDrawerSlug, UploadFromURLModal } from './UploadFromURLModal/index.js'\nimport { usePasteFromClipboard } from './usePasteFromClipboard.js'\nimport { useUploadFromUrl } from './useUploadFromUrl.js'\n\nexport { pasteURLDrawerSlug }\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n if (value && (!value.name || value.name === '')) {\n return 'A file name is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n const { openModal } = useModal()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__previewSizes`}\n margin={false}\n onClick={() => {\n openModal(sizePreviewSlug)\n }}\n size=\"medium\"\n >\n {t('upload:previewSizes')}\n </Button>\n )}\n {enableAdjustments && (\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__edit`}\n margin={false}\n onClick={() => {\n openModal(editDrawerSlug)\n }}\n size=\"medium\"\n >\n {t('upload:editImage')}\n </Button>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: Omit<SanitizedCollectionConfig['upload'], 'uploadInstructions'>\n readonly UploadControls?: React.ReactNode\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n return (\n <UploadControlsProvider>\n <UploadComponent\n {...props}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadEdits={uploadEdits}\n />\n </UploadControlsProvider>\n )\n}\n\ntype UploadComponentProps = {\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadEdits?: UploadEdits\n} & UploadProps\n\nconst UploadComponent: React.FC<UploadComponentProps> = (props) => {\n const {\n collectionSlug,\n customActions,\n initialState,\n onChange,\n resetUploadEdits,\n updateUploadEdits,\n uploadConfig,\n UploadControls,\n uploadEdits,\n } = props\n\n const {\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileUrl,\n } = useUploadControls()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { data, docPermissions } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleFileChange = useCallback(\n ({ file, isNewFile = true }: { file: File | null; isNewFile?: boolean }) => {\n if (isNewFile && file instanceof File) {\n setFileSrc(URL.createObjectURL(file))\n }\n\n setValue(file)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n\n if (typeof onChange === 'function') {\n onChange(file)\n }\n },\n [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange({ file: renameFile(value, updatedFileName), isNewFile: false })\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange({ file: fileToUpload })\n },\n [handleFileChange],\n )\n\n const handleFileFetchedFromUrl = useCallback(\n (file: File) => handleFileChange({ file }),\n [handleFileChange],\n )\n\n const { fileUrl, handleUrlSubmit, isValidUrl, setFileUrl } = useUploadFromUrl({\n collectionSlug,\n onFileFetched: handleFileFetchedFromUrl,\n uploadConfig,\n })\n\n const handlePasteFromClipboard = usePasteFromClipboard({\n handleFileSelection,\n handleUrlSubmit,\n setFileUrl,\n uploadConfig,\n })\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange({ file: null })\n setFileSrc('')\n setFileUrl('')\n resetUploadEdits()\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n }, [\n handleFileChange,\n resetUploadEdits,\n setFileUrl,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n ])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\n }, [initialState])\n\n useEffect(() => {\n return () => {\n if (fileSrc?.startsWith('blob:')) {\n URL.revokeObjectURL(fileSrc)\n }\n }\n }, [fileSrc])\n\n useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload = docPermissions?.update\n\n const hasVariants = uploadConfig?.variants?.length > 0\n const hasImageAdjustments = Boolean(uploadConfig?.hasImageAdjustments)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasVariants || hasImageAdjustments || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n const imageCacheTag = uploadConfig?.cacheTags && data?.updatedAt\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit, setFileUrl])\n\n useEffect(() => {\n const handleControlFile = () => {\n if (uploadControlFile) {\n handleFileChange({ file: uploadControlFile })\n }\n }\n\n void handleControlFile()\n }, [uploadControlFile, handleFileChange])\n\n const drawers = (\n <React.Fragment>\n {(value || data?.filename) && (\n <EditDepthProvider>\n <EditUpload\n fileName={value?.name || data?.filename}\n fileSrc={getEditorFileSrc({ data, fileSrc, hasSelectedFile: Boolean(value) })}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || data?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || data?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </EditDepthProvider>\n )}\n {data && hasVariants && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: data.filename })}\n >\n <PreviewSizes doc={data} imageCacheTag={imageCacheTag} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n {uploadConfig?.pasteURL !== false && (\n <UploadFromURLModal\n fileUrl={fileUrl}\n handleUrlSubmit={handleUrlSubmit}\n isValidUrl={isValidUrl}\n setFileUrl={setFileUrl}\n />\n )}\n </React.Fragment>\n )\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {data && data.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={data}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasVariants}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !data?.filename) || removedFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"medium\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n aria-label={t('upload:pasteURL')}\n buttonStyle=\"pill\"\n className={`${baseClass}__pasteFromClipboard`}\n icon=\"clipboard\"\n onClick={handlePasteFromClipboard}\n size=\"medium\"\n tooltip={t('upload:pasteURL')}\n />\n\n {UploadControls ? UploadControls : null}\n </div>\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <Button\n aria-label={t('general:cancel')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n <TextInput\n label={t('upload:fileName')}\n onChange={handleFileNameChange}\n path=\"filename\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasVariants && data?.filename && !removedFile}\n mimeType={value.type}\n />\n </div>\n </React.Fragment>\n )}\n </div>\n )}\n {drawers}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/UploadDropzoneContent/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,0HAA0H;IAC1H,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxC,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAA;IACzC,yGAAyG;IACzG,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,wBAAgB,qBAAqB,CAAC,EACpC,eAAe,EACf,SAAS,EACT,aAAa,EACb,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,GACb,EAAE,0BAA0B,qBA0C5B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/UploadDropzoneContent/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,0HAA0H;IAC1H,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxC,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAA;IACzC,yGAAyG;IACzG,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,wBAAgB,qBAAqB,CAAC,EACpC,eAAe,EACf,SAAS,EACT,aAAa,EACb,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,GACb,EAAE,0BAA0B,qBA2C5B"}
@@ -46,6 +46,7 @@ export function UploadDropzoneContent({
46
46
  className: `${baseClass}__or-text`,
47
47
  children: t('general:or')
48
48
  }), /*#__PURE__*/_jsx(Button, {
49
+ "aria-label": pasteTooltip,
49
50
  buttonStyle: "secondary",
50
51
  className: [`${baseClass}__pasteFromClipboard`, pasteButtonClassName].filter(Boolean).join(' '),
51
52
  icon: "clipboard",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useTranslation","Button","baseClass","UploadDropzoneContent","acceptMimeTypes","className","extraControls","multiple","onFilesSelected","onPasteFromClipboard","pasteButtonClassName","pasteTooltip","t","inputRef","useRef","_jsxs","filter","Boolean","join","_jsx","buttonStyle","onClick","current","click","size","accept","hidden","onChange","e","target","files","length","ref","type","icon","tooltip"],"sources":["../../../src/elements/UploadDropzoneContent/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.css'\n\nconst baseClass = 'upload-dropzone-content'\n\nexport type UploadDropzoneContentProps = {\n readonly acceptMimeTypes?: string\n readonly className?: string\n /** Extra controls rendered alongside the select/paste buttons, e.g. the single-upload field's custom `UploadControls`. */\n readonly extraControls?: React.ReactNode\n /** Allows selecting more than one file at once, used by the bulk upload drawer. */\n readonly multiple?: boolean\n readonly onFilesSelected: (files: FileList) => void\n readonly onPasteFromClipboard: () => void\n /** Additional className kept on the paste button for callers with existing selectors depending on it. */\n readonly pasteButtonClassName?: string\n readonly pasteTooltip: string\n}\n\nexport function UploadDropzoneContent({\n acceptMimeTypes,\n className,\n extraControls,\n multiple,\n onFilesSelected,\n onPasteFromClipboard,\n pasteButtonClassName,\n pasteTooltip,\n}: UploadDropzoneContentProps) {\n const { t } = useTranslation()\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__buttons`}>\n <Button buttonStyle=\"secondary\" onClick={() => inputRef.current?.click()} size=\"medium\">\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n multiple={multiple}\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n onFilesSelected(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n <span className={`${baseClass}__or-text`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"secondary\"\n className={[`${baseClass}__pasteFromClipboard`, pasteButtonClassName]\n .filter(Boolean)\n .join(' ')}\n icon=\"clipboard\"\n onClick={onPasteFromClipboard}\n size=\"medium\"\n tooltip={pasteTooltip}\n />\n {extraControls}\n </div>\n <p className={`${baseClass}__drag-text`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAgBlB,OAAO,SAASC,sBAAsB;EACpCC,eAAe;EACfC,SAAS;EACTC,aAAa;EACbC,QAAQ;EACRC,eAAe;EACfC,oBAAoB;EACpBC,oBAAoB;EACpBC;AAAY,CACe;EAC3B,MAAM;IAAEC;EAAC,CAAE,GAAGZ,cAAA;EACd,MAAMa,QAAA,GAAWd,KAAA,CAAMe,MAAM,CAAmB;EAEhD,oBACEC,KAAA,CAAC;IAAIV,SAAA,EAAW,CAACH,SAAA,EAAWG,SAAA,CAAU,CAACW,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;4BAC1DH,KAAA,CAAC;MAAIV,SAAA,EAAW,GAAGH,SAAA,WAAoB;8BACrCiB,IAAA,CAAClB,MAAA;QAAOmB,WAAA,EAAY;QAAYC,OAAA,EAASA,CAAA,KAAMR,QAAA,CAASS,OAAO,EAAEC,KAAA;QAASC,IAAA,EAAK;kBAC5EZ,CAAA,CAAE;uBAELO,IAAA,CAAC;QACCM,MAAA,EAAQrB,eAAA;QACR,eAAY;QACZC,SAAA,EAAW,GAAGH,SAAA,gBAAyB;QACvCwB,MAAM;QACNnB,QAAA,EAAUA,QAAA;QACVoB,QAAA,EAAWC,CAAA;UACT,IAAIA,CAAA,CAAEC,MAAM,CAACC,KAAK,IAAIF,CAAA,CAAEC,MAAM,CAACC,KAAK,CAACC,MAAM,GAAG,GAAG;YAC/CvB,eAAA,CAAgBoB,CAAA,CAAEC,MAAM,CAACC,KAAK;UAChC;QACF;QACAE,GAAA,EAAKnB,QAAA;QACLoB,IAAA,EAAK;uBAEPd,IAAA,CAAC;QAAKd,SAAA,EAAW,GAAGH,SAAA,WAAoB;kBAAGU,CAAA,CAAE;uBAC7CO,IAAA,CAAClB,MAAA;QACCmB,WAAA,EAAY;QACZf,SAAA,EAAW,CAAC,GAAGH,SAAA,sBAA+B,EAAEQ,oBAAA,CAAqB,CAClEM,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;QACRgB,IAAA,EAAK;QACLb,OAAA,EAASZ,oBAAA;QACTe,IAAA,EAAK;QACLW,OAAA,EAASxB;UAEVL,aAAA;qBAEHS,KAAA,CAAC;MAAEV,SAAA,EAAW,GAAGH,SAAA,aAAsB;iBACpCU,CAAA,CAAE,eAAc,KAAEA,CAAA,CAAE;;;AAI7B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useTranslation","Button","baseClass","UploadDropzoneContent","acceptMimeTypes","className","extraControls","multiple","onFilesSelected","onPasteFromClipboard","pasteButtonClassName","pasteTooltip","t","inputRef","useRef","_jsxs","filter","Boolean","join","_jsx","buttonStyle","onClick","current","click","size","accept","hidden","onChange","e","target","files","length","ref","type","icon","tooltip"],"sources":["../../../src/elements/UploadDropzoneContent/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.css'\n\nconst baseClass = 'upload-dropzone-content'\n\nexport type UploadDropzoneContentProps = {\n readonly acceptMimeTypes?: string\n readonly className?: string\n /** Extra controls rendered alongside the select/paste buttons, e.g. the single-upload field's custom `UploadControls`. */\n readonly extraControls?: React.ReactNode\n /** Allows selecting more than one file at once, used by the bulk upload drawer. */\n readonly multiple?: boolean\n readonly onFilesSelected: (files: FileList) => void\n readonly onPasteFromClipboard: () => void\n /** Additional className kept on the paste button for callers with existing selectors depending on it. */\n readonly pasteButtonClassName?: string\n readonly pasteTooltip: string\n}\n\nexport function UploadDropzoneContent({\n acceptMimeTypes,\n className,\n extraControls,\n multiple,\n onFilesSelected,\n onPasteFromClipboard,\n pasteButtonClassName,\n pasteTooltip,\n}: UploadDropzoneContentProps) {\n const { t } = useTranslation()\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__buttons`}>\n <Button buttonStyle=\"secondary\" onClick={() => inputRef.current?.click()} size=\"medium\">\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n multiple={multiple}\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n onFilesSelected(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n <span className={`${baseClass}__or-text`}>{t('general:or')}</span>\n <Button\n aria-label={pasteTooltip}\n buttonStyle=\"secondary\"\n className={[`${baseClass}__pasteFromClipboard`, pasteButtonClassName]\n .filter(Boolean)\n .join(' ')}\n icon=\"clipboard\"\n onClick={onPasteFromClipboard}\n size=\"medium\"\n tooltip={pasteTooltip}\n />\n {extraControls}\n </div>\n <p className={`${baseClass}__drag-text`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAgBlB,OAAO,SAASC,sBAAsB;EACpCC,eAAe;EACfC,SAAS;EACTC,aAAa;EACbC,QAAQ;EACRC,eAAe;EACfC,oBAAoB;EACpBC,oBAAoB;EACpBC;AAAY,CACe;EAC3B,MAAM;IAAEC;EAAC,CAAE,GAAGZ,cAAA;EACd,MAAMa,QAAA,GAAWd,KAAA,CAAMe,MAAM,CAAmB;EAEhD,oBACEC,KAAA,CAAC;IAAIV,SAAA,EAAW,CAACH,SAAA,EAAWG,SAAA,CAAU,CAACW,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;4BAC1DH,KAAA,CAAC;MAAIV,SAAA,EAAW,GAAGH,SAAA,WAAoB;8BACrCiB,IAAA,CAAClB,MAAA;QAAOmB,WAAA,EAAY;QAAYC,OAAA,EAASA,CAAA,KAAMR,QAAA,CAASS,OAAO,EAAEC,KAAA;QAASC,IAAA,EAAK;kBAC5EZ,CAAA,CAAE;uBAELO,IAAA,CAAC;QACCM,MAAA,EAAQrB,eAAA;QACR,eAAY;QACZC,SAAA,EAAW,GAAGH,SAAA,gBAAyB;QACvCwB,MAAM;QACNnB,QAAA,EAAUA,QAAA;QACVoB,QAAA,EAAWC,CAAA;UACT,IAAIA,CAAA,CAAEC,MAAM,CAACC,KAAK,IAAIF,CAAA,CAAEC,MAAM,CAACC,KAAK,CAACC,MAAM,GAAG,GAAG;YAC/CvB,eAAA,CAAgBoB,CAAA,CAAEC,MAAM,CAACC,KAAK;UAChC;QACF;QACAE,GAAA,EAAKnB,QAAA;QACLoB,IAAA,EAAK;uBAEPd,IAAA,CAAC;QAAKd,SAAA,EAAW,GAAGH,SAAA,WAAoB;kBAAGU,CAAA,CAAE;uBAC7CO,IAAA,CAAClB,MAAA;QACC,cAAYU,YAAA;QACZS,WAAA,EAAY;QACZf,SAAA,EAAW,CAAC,GAAGH,SAAA,sBAA+B,EAAEQ,oBAAA,CAAqB,CAClEM,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;QACRgB,IAAA,EAAK;QACLb,OAAA,EAASZ,oBAAA;QACTe,IAAA,EAAK;QACLW,OAAA,EAASxB;UAEVL,aAAA;qBAEHS,KAAA,CAAC;MAAEV,SAAA,EAAW,GAAGH,SAAA,aAAsB;iBACpCU,CAAA,CAAE,eAAc,KAAEA,CAAA,CAAE;;;AAI7B","ignoreList":[]}
@@ -94,7 +94,7 @@
94
94
 
95
95
  .user-menu__submenu-header-row:focus-visible {
96
96
  outline: var(--accessibility-outline);
97
- outline-offset: -1px;
97
+ outline-offset: var(--accessibility-outline-inset);
98
98
  }
99
99
 
100
100
  .user-menu__submenu-header-row:hover {
@@ -10,5 +10,5 @@ function require(m) {
10
10
  }
11
11
  // Workaround end
12
12
 
13
- import{ca as a}from"./chunk-ZP2PB6M4.js";import"./chunk-SMBFG6XU.js";export{a as default};
14
- //# sourceMappingURL=DatePicker-AZBZPMY6.js.map
13
+ import{ca as a}from"./chunk-GQEFXRCN.js";import"./chunk-SMBFG6XU.js";export{a as default};
14
+ //# sourceMappingURL=DatePicker-DJN2NVQC.js.map