@payloadcms/ui 4.0.0-internal.cea8867 → 4.0.0-internal.d1cc1d3
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.
- package/dist/css/app.css +121 -0
- package/dist/css/forms.css +0 -6
- package/dist/css/spacing.css +11 -3
- package/dist/css/z-index.css +10 -0
- package/dist/elements/AddNewRelation/index.css +0 -1
- package/dist/elements/AppHeader/index.css +0 -3
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +5 -1
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.d.ts +2 -0
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +65 -24
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js +2 -2
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.css +4 -0
- package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +2 -2
- package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/createFormData.js +4 -15
- package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
- package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
- package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
- package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
- package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
- package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/index.js +17 -1
- package/dist/elements/ClipboardAction/index.js.map +1 -1
- package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
- package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
- package/dist/elements/ClipboardAction/types.d.ts +3 -0
- package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/types.js.map +1 -1
- package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
- package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
- package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
- package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
- package/dist/elements/CodeEditor/index.css +0 -5
- package/dist/elements/CommandPalette/index.css +0 -7
- package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
- package/dist/elements/CreateDocumentButton/index.js +4 -1
- package/dist/elements/CreateDocumentButton/index.js.map +1 -1
- package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +1 -0
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/index.css +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +16 -1
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +2 -2
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
- package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
- package/dist/elements/FileDetails/StaticFileDetails/index.css +8 -9
- package/dist/elements/FileManager/FilePreview/index.css +3 -3
- package/dist/elements/FileManager/index.css +36 -23
- package/dist/elements/FileManager/index.d.ts +1 -1
- package/dist/elements/FileManager/index.d.ts.map +1 -1
- package/dist/elements/FileManager/index.js +15 -4
- package/dist/elements/FileManager/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +0 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.css +0 -1
- package/dist/elements/InputStepper/index.css +0 -1
- package/dist/elements/Locked/index.css +0 -8
- package/dist/elements/Locked/index.d.ts.map +1 -1
- package/dist/elements/Locked/index.js +70 -64
- package/dist/elements/Locked/index.js.map +1 -1
- package/dist/elements/MiniCarousel/index.css +39 -37
- package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
- package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.css +0 -5
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
- package/dist/elements/NavGroup/index.css +0 -1
- package/dist/elements/PreviewButton/index.d.ts +1 -2
- package/dist/elements/PreviewButton/index.d.ts.map +1 -1
- package/dist/elements/PreviewButton/index.js +11 -5
- package/dist/elements/PreviewButton/index.js.map +1 -1
- package/dist/elements/PreviewSizes/index.css +8 -9
- package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
- package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts +7 -0
- package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts.map +1 -0
- package/dist/elements/ReactSelect/DefaultMenuPortal.js +120 -0
- package/dist/elements/ReactSelect/DefaultMenuPortal.js.map +1 -0
- package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
- package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
- package/dist/elements/ReactSelect/getMenuListStyles.d.ts +1 -1
- package/dist/elements/ReactSelect/getMenuListStyles.d.ts.map +1 -1
- package/dist/elements/ReactSelect/getMenuListStyles.js +13 -5
- package/dist/elements/ReactSelect/getMenuListStyles.js.map +1 -1
- package/dist/elements/ReactSelect/getMenuStyles.d.ts +10 -0
- package/dist/elements/ReactSelect/getMenuStyles.d.ts.map +1 -0
- package/dist/elements/ReactSelect/getMenuStyles.js +21 -0
- package/dist/elements/ReactSelect/getMenuStyles.js.map +1 -0
- package/dist/elements/ReactSelect/index.css +7 -3
- package/dist/elements/ReactSelect/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/index.js +24 -101
- package/dist/elements/ReactSelect/index.js.map +1 -1
- package/dist/elements/ReactSelect/types.d.ts +1 -2
- package/dist/elements/ReactSelect/types.d.ts.map +1 -1
- package/dist/elements/ReactSelect/types.js.map +1 -1
- package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
- package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/Pagination.js +27 -77
- package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
- package/dist/elements/RelationshipTable/index.css +0 -2
- package/dist/elements/RelationshipTable/index.d.ts +1 -0
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +36 -3
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RenderTitle/index.css +4 -0
- package/dist/elements/RenderTitle/index.d.ts.map +1 -1
- package/dist/elements/RenderTitle/index.js +18 -13
- package/dist/elements/RenderTitle/index.js.map +1 -1
- package/dist/elements/SelectRow/index.d.ts +4 -3
- package/dist/elements/SelectRow/index.d.ts.map +1 -1
- package/dist/elements/SelectRow/index.js +10 -7
- package/dist/elements/SelectRow/index.js.map +1 -1
- package/dist/elements/SidebarToggle/index.css +0 -17
- package/dist/elements/SortColumn/index.d.ts.map +1 -1
- package/dist/elements/SortColumn/index.js +42 -38
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/Table/OrderableRow.d.ts +3 -1
- package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
- package/dist/elements/Table/OrderableRow.js +17 -1
- package/dist/elements/Table/OrderableRow.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +19 -2
- package/dist/elements/Table/OrderableTable.js.map +1 -1
- package/dist/elements/Table/index.css +1 -0
- package/dist/elements/TableSection/index.css +0 -1
- package/dist/elements/Thumbnail/index.d.ts +1 -1
- package/dist/elements/Thumbnail/index.d.ts.map +1 -1
- package/dist/elements/Thumbnail/index.js.map +1 -1
- package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
- package/dist/elements/TimezonePicker/index.js +5 -1
- package/dist/elements/TimezonePicker/index.js.map +1 -1
- package/dist/elements/Tooltip/index.css +15 -34
- package/dist/elements/Tooltip/index.d.ts +11 -3
- package/dist/elements/Tooltip/index.d.ts.map +1 -1
- package/dist/elements/Tooltip/index.js +151 -85
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Upload/index.css +0 -5
- package/dist/exports/client/index.d.ts +3 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +1 -1
- package/dist/exports/client/index.js.map +3 -3
- package/dist/exports/layouts.d.ts +1 -0
- package/dist/exports/layouts.d.ts.map +1 -1
- package/dist/exports/layouts.js +1 -0
- package/dist/exports/layouts.js.map +1 -1
- package/dist/exports/shared/index.d.ts +1 -0
- package/dist/exports/shared/index.d.ts.map +1 -1
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +4 -4
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +97 -160
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +134 -195
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +2 -0
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js +23 -20
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/index.js +3 -3
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.d.ts +2 -0
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js +32 -26
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.css +37 -73
- package/dist/fields/FieldError/index.css +0 -9
- package/dist/fields/FieldError/index.d.ts.map +1 -1
- package/dist/fields/FieldError/index.js +19 -9
- package/dist/fields/FieldError/index.js.map +1 -1
- package/dist/fields/Join/index.css +9 -0
- package/dist/fields/Join/index.d.ts.map +1 -1
- package/dist/fields/Join/index.js +13 -9
- package/dist/fields/Join/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.css +0 -7
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +32 -14
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
- package/dist/fields/Slug/index.css +0 -1
- package/dist/fields/Slug/index.d.ts.map +1 -1
- package/dist/fields/Slug/index.js +75 -111
- package/dist/fields/Slug/index.js.map +1 -1
- package/dist/fields/Upload/index.css +19 -4
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +3 -1
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +9 -15
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/types.d.ts +1 -1
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/RenderFields/index.css +16 -2
- package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/index.js +2 -2
- package/dist/forms/WatchChildErrors/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
- package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
- package/dist/layouts/Root/index.d.ts +1 -1
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +8 -2
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/layouts/Root/viewport.d.ts +1 -0
- package/dist/layouts/Root/viewport.d.ts.map +1 -1
- package/dist/layouts/Root/viewport.js +4 -1
- package/dist/layouts/Root/viewport.js.map +1 -1
- package/dist/providers/DocumentTitle/index.d.ts +1 -0
- package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
- package/dist/providers/DocumentTitle/index.js +2 -0
- package/dist/providers/DocumentTitle/index.js.map +1 -1
- package/dist/providers/Embed/index.d.ts +24 -0
- package/dist/providers/Embed/index.d.ts.map +1 -0
- package/dist/providers/Embed/index.js +105 -0
- package/dist/providers/Embed/index.js.map +1 -0
- package/dist/providers/FormErrorHandler/index.d.ts +20 -0
- package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
- package/dist/providers/FormErrorHandler/index.js +6 -0
- package/dist/providers/FormErrorHandler/index.js.map +1 -0
- package/dist/providers/Root/index.d.ts +1 -0
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +33 -27
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/SidebarTabs/index.d.ts +3 -2
- package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
- package/dist/providers/SidebarTabs/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
- package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
- package/dist/providers/Theme/index.d.ts +3 -0
- package/dist/providers/Theme/index.d.ts.map +1 -1
- package/dist/providers/Theme/index.js +107 -95
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/providers/UploadHandlers/index.d.ts +2 -7
- package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
- package/dist/providers/UploadHandlers/index.js +102 -42
- package/dist/providers/UploadHandlers/index.js.map +1 -1
- package/dist/styles.css +23 -10
- package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
- package/dist/utilities/combineFieldLabel.js +5 -1
- package/dist/utilities/combineFieldLabel.js.map +1 -1
- package/dist/utilities/generateFieldID.d.ts +1 -1
- package/dist/utilities/generateFieldID.d.ts.map +1 -1
- package/dist/utilities/generateFieldID.js +2 -2
- package/dist/utilities/generateFieldID.js.map +1 -1
- package/dist/utilities/getRequestEmbed.d.ts +14 -0
- package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
- package/dist/utilities/getRequestEmbed.js +10 -0
- package/dist/utilities/getRequestEmbed.js.map +1 -0
- package/dist/utilities/handleServerFunctions.d.ts +32 -8
- package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
- package/dist/utilities/handleServerFunctions.js +17 -37
- package/dist/utilities/handleServerFunctions.js.map +1 -1
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +18 -2
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/utilities/serverFunctionRegistry.d.ts +12 -7
- package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
- package/dist/utilities/serverFunctionRegistry.js +25 -7
- package/dist/utilities/serverFunctionRegistry.js.map +1 -1
- package/dist/utilities/slugify.d.ts.map +1 -1
- package/dist/utilities/slugify.js +49 -6
- package/dist/utilities/slugify.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.css +0 -8
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +4 -4
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
- package/dist/views/Edit/index.css +61 -53
- package/dist/views/HierarchyList/index.css +1 -1
- package/dist/views/List/index.css +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +4 -0
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/Logout/index.d.ts.map +1 -1
- package/dist/views/Logout/index.js +11 -0
- package/dist/views/Logout/index.js.map +1 -1
- package/dist/views/Root/index.d.ts +12 -1
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +10 -3
- package/dist/views/Root/index.js.map +1 -1
- package/package.json +7 -11
- package/dist/elements/RelationshipTable/Pagination.css +0 -39
- package/dist/scss/app.scss +0 -183
- package/dist/scss/colors.scss +0 -191
- package/dist/scss/custom.css +0 -1
- package/dist/scss/queries.scss +0 -27
- package/dist/scss/styles.scss +0 -9
- package/dist/scss/svg.scss +0 -10
- package/dist/scss/toastify.scss +0 -61
- package/dist/scss/vars.scss +0 -192
- package/dist/scss/z-index.scss +0 -9
|
@@ -9,7 +9,7 @@ export type ThumbnailProps = {
|
|
|
9
9
|
height?: number;
|
|
10
10
|
imageCacheTag?: false | string;
|
|
11
11
|
size?: 'expand' | 'large' | 'medium' | 'none' | 'small';
|
|
12
|
-
uploadConfig?: SanitizedCollectionConfig['upload']
|
|
12
|
+
uploadConfig?: Omit<SanitizedCollectionConfig['upload'], 'uploadInstructions'>;
|
|
13
13
|
width?: number;
|
|
14
14
|
};
|
|
15
15
|
export declare const Thumbnail: React.FC<ThumbnailProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Thumbnail/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,aAAa,CAAA;AAIpB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAMxD,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC9B,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IACvD,YAAY,CAAC,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Thumbnail/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,aAAa,CAAA;AAIpB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAMxD,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC9B,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IACvD,YAAY,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC,CAAA;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2C9C,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;CACjE,CAAA;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,qBAmChE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","baseClass","File","appendCacheTag","ShimmerEffect","Thumbnail","props","className","doc","filename","fileSrc","height","imageCacheTag","size","width","fileExists","setFileExists","useState","undefined","classNames","join","src","useMemo","useEffect","img","Image","onload","onerror","_jsxs","_jsx","alt","ThumbnailComponent"],"sources":["../../../src/elements/Thumbnail/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport './index.css'\n\nconst baseClass = 'thumbnail'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { File } from '../../graphics/File/index.js'\nimport { appendCacheTag } from '../../utilities/appendCacheTag.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nexport type ThumbnailProps = {\n className?: string\n collectionSlug?: string\n doc?: Record<string, unknown>\n fileSrc?: string\n height?: number\n imageCacheTag?: false | string\n size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n uploadConfig?: SanitizedCollectionConfig['upload']
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","baseClass","File","appendCacheTag","ShimmerEffect","Thumbnail","props","className","doc","filename","fileSrc","height","imageCacheTag","size","width","fileExists","setFileExists","useState","undefined","classNames","join","src","useMemo","useEffect","img","Image","onload","onerror","_jsxs","_jsx","alt","ThumbnailComponent"],"sources":["../../../src/elements/Thumbnail/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport './index.css'\n\nconst baseClass = 'thumbnail'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { File } from '../../graphics/File/index.js'\nimport { appendCacheTag } from '../../utilities/appendCacheTag.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nexport type ThumbnailProps = {\n className?: string\n collectionSlug?: string\n doc?: Record<string, unknown>\n fileSrc?: string\n height?: number\n imageCacheTag?: false | string\n size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n uploadConfig?: Omit<SanitizedCollectionConfig['upload'], 'uploadInstructions'>\n width?: number\n}\n\nexport const Thumbnail: React.FC<ThumbnailProps> = (props) => {\n const {\n className = '',\n doc: { filename } = {},\n fileSrc,\n height,\n imageCacheTag,\n size,\n width,\n } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n const src = React.useMemo(\n () => (fileSrc ? appendCacheTag(fileSrc, imageCacheTag) : null),\n [fileSrc, imageCacheTag],\n )\n\n React.useEffect(() => {\n if (!src) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = src\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [src])\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={filename as string} height={height} src={src} width={width} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n\ntype ThumbnailComponentProps = {\n readonly alt?: string\n readonly className?: string\n readonly filename: string\n readonly fileSrc: string\n readonly imageCacheTag?: false | string\n readonly size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n}\nexport function ThumbnailComponent(props: ThumbnailComponentProps) {\n const { alt, className = '', filename, fileSrc, imageCacheTag, size } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n const src = React.useMemo(\n () => (fileSrc ? appendCacheTag(fileSrc, imageCacheTag) : null),\n [fileSrc, imageCacheTag],\n )\n\n React.useEffect(() => {\n if (!src) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = src\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [src])\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={alt || filename} src={src} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/TimezonePicker/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAQvC,OAAO,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/TimezonePicker/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAQvC,OAAO,aAAa,CAAA;AAqEpB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuE1C,CAAA"}
|
|
@@ -15,8 +15,12 @@ const SmallDropdownIndicator = props => {
|
|
|
15
15
|
innerProps: {
|
|
16
16
|
ref,
|
|
17
17
|
...restInnerProps
|
|
18
|
-
}
|
|
18
|
+
},
|
|
19
|
+
isDisabled
|
|
19
20
|
} = props;
|
|
21
|
+
if (isDisabled) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
20
24
|
return /*#__PURE__*/_jsx("button", {
|
|
21
25
|
className: "timezone-picker__dropdown-indicator",
|
|
22
26
|
ref: ref,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useMemo","components","rsComponents","CheckIcon","ChevronIcon","CircledXIcon","useTranslation","ReactSelect","formatOptions","SmallDropdownIndicator","props","innerProps","ref","restInnerProps","_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","find","value","Boolean","length","classNames","menu","menuList","ClearIndicator","DropdownIndicator","customProps","menuPortalTheme","disabled","inputId","isClearable","isCreatable","val","placeholder","styles","control","base","flexWrap","option","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 } = props\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 {\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 } as StylesConfig<OptionType>\n }\n value={selectedTimezone}\n />\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAYA,SAASA,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;
|
|
1
|
+
{"version":3,"file":"index.js","names":["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","find","value","Boolean","length","classNames","menu","menuList","ClearIndicator","DropdownIndicator","customProps","menuPortalTheme","disabled","inputId","isClearable","isCreatable","val","placeholder","styles","control","base","flexWrap","option","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 {\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 } as StylesConfig<OptionType>\n }\n value={selectedTimezone}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,15 +4,18 @@
|
|
|
4
4
|
--caret-height: 7px;
|
|
5
5
|
--caret-offset: 4px;
|
|
6
6
|
--caret-border-color: var(--color-border);
|
|
7
|
-
--tooltip-x: -50%;
|
|
8
7
|
--tooltip-caret-x: 0px;
|
|
8
|
+
--tooltip-caret-y: 0px;
|
|
9
9
|
--tooltip-max-width: none;
|
|
10
10
|
|
|
11
|
+
position: fixed;
|
|
12
|
+
top: 0;
|
|
13
|
+
left: 0;
|
|
14
|
+
z-index: var(--z-portal-element);
|
|
15
|
+
pointer-events: none;
|
|
16
|
+
|
|
11
17
|
opacity: 0;
|
|
12
18
|
background-color: var(--color-bg-tooltip);
|
|
13
|
-
position: absolute;
|
|
14
|
-
z-index: 3;
|
|
15
|
-
left: 50%;
|
|
16
19
|
max-width: var(--tooltip-max-width);
|
|
17
20
|
padding: var(--spacer-1);
|
|
18
21
|
color: var(--color-text-ontooltip);
|
|
@@ -26,6 +29,11 @@
|
|
|
26
29
|
box-shadow: var(--elevation-300-tooltip);
|
|
27
30
|
visibility: hidden;
|
|
28
31
|
|
|
32
|
+
&[data-wrap] {
|
|
33
|
+
white-space: normal;
|
|
34
|
+
overflow-wrap: break-word;
|
|
35
|
+
}
|
|
36
|
+
|
|
29
37
|
&.field-error {
|
|
30
38
|
background-color: var(--color-bg-danger);
|
|
31
39
|
color: var(--color-text-ondanger);
|
|
@@ -51,11 +59,6 @@
|
|
|
51
59
|
}
|
|
52
60
|
}
|
|
53
61
|
|
|
54
|
-
.tooltip--wrap {
|
|
55
|
-
white-space: normal;
|
|
56
|
-
overflow-wrap: break-word;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
62
|
.tooltip__caret {
|
|
60
63
|
position: absolute;
|
|
61
64
|
pointer-events: none;
|
|
@@ -76,7 +79,6 @@
|
|
|
76
79
|
.tooltip--show {
|
|
77
80
|
visibility: visible;
|
|
78
81
|
opacity: 1;
|
|
79
|
-
transition: opacity 0.2s ease-in-out;
|
|
80
82
|
cursor: default;
|
|
81
83
|
}
|
|
82
84
|
|
|
@@ -94,13 +96,6 @@
|
|
|
94
96
|
}
|
|
95
97
|
|
|
96
98
|
.tooltip--position-top {
|
|
97
|
-
top: 0;
|
|
98
|
-
transform: translate3d(
|
|
99
|
-
var(--tooltip-x),
|
|
100
|
-
calc(-100% - var(--caret-height) - var(--caret-offset) + 1px),
|
|
101
|
-
0
|
|
102
|
-
);
|
|
103
|
-
|
|
104
99
|
.tooltip__caret {
|
|
105
100
|
--color-border: var(--ramp-grey-700);
|
|
106
101
|
top: calc(100% - 0.5px);
|
|
@@ -112,13 +107,6 @@
|
|
|
112
107
|
}
|
|
113
108
|
|
|
114
109
|
.tooltip--position-bottom {
|
|
115
|
-
top: 100%;
|
|
116
|
-
transform: translate3d(
|
|
117
|
-
var(--tooltip-x),
|
|
118
|
-
calc(var(--caret-height) + var(--caret-offset) - 1px),
|
|
119
|
-
0
|
|
120
|
-
);
|
|
121
|
-
|
|
122
110
|
.tooltip__caret {
|
|
123
111
|
bottom: calc(100% - 0.5px);
|
|
124
112
|
transform: rotate(180deg);
|
|
@@ -134,28 +122,21 @@
|
|
|
134
122
|
}
|
|
135
123
|
|
|
136
124
|
.tooltip--position-left {
|
|
137
|
-
top: 50%;
|
|
138
|
-
left: 0;
|
|
139
|
-
transform: translate3d(calc(-100% - var(--caret-height) - var(--caret-offset)), -50%, 0);
|
|
140
|
-
|
|
141
125
|
.tooltip__caret {
|
|
142
126
|
top: calc(50% + 0.5px);
|
|
143
127
|
left: calc(100% - 0.5px);
|
|
144
|
-
transform: translateY(calc(1 * var(--caret-width) / 2
|
|
128
|
+
transform: translateY(calc(1 * var(--caret-width) / 2 + var(--tooltip-caret-y)))
|
|
129
|
+
rotate(-90deg);
|
|
145
130
|
transform-origin: top left;
|
|
146
131
|
}
|
|
147
132
|
}
|
|
148
133
|
|
|
149
134
|
.tooltip--position-right {
|
|
150
|
-
top: 50%;
|
|
151
|
-
left: 100%;
|
|
152
|
-
transform: translate3d(calc(var(--caret-height) + var(--caret-offset)), -50%, 0);
|
|
153
|
-
|
|
154
135
|
.tooltip__caret {
|
|
155
136
|
top: calc(50% + 0.5px);
|
|
156
137
|
left: unset;
|
|
157
138
|
right: calc(100% - 0.5px);
|
|
158
|
-
transform: translateY(calc(1 * var(--caret-width) / 2)) rotate(90deg);
|
|
139
|
+
transform: translateY(calc(1 * var(--caret-width) / 2 + var(--tooltip-caret-y))) rotate(90deg);
|
|
159
140
|
transform-origin: top right;
|
|
160
141
|
}
|
|
161
142
|
}
|
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import './index.css';
|
|
3
|
+
type Side = 'bottom' | 'left' | 'right' | 'top';
|
|
3
4
|
export type Props = {
|
|
4
5
|
alignCaret?: 'center' | 'left' | 'right';
|
|
5
|
-
boundingRef?: React.RefObject<HTMLElement | null>;
|
|
6
6
|
children: React.ReactNode;
|
|
7
7
|
className?: string;
|
|
8
8
|
delay?: number;
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Applied to the portaled tooltip element, so it can be located independent of its
|
|
11
|
+
* position in the DOM (e.g. by tests).
|
|
12
|
+
*/
|
|
13
|
+
id?: string;
|
|
14
|
+
position?: Side;
|
|
10
15
|
show?: boolean;
|
|
11
16
|
/**
|
|
12
|
-
*
|
|
17
|
+
* Disables adaptive placement: the tooltip always renders on `position` (or its
|
|
18
|
+
* default) instead of flipping to whichever side has room. It does not affect
|
|
19
|
+
* portaling - every tooltip is portaled to `document.body` regardless. @default false
|
|
13
20
|
*/
|
|
14
21
|
staticPositioning?: boolean;
|
|
15
22
|
};
|
|
16
23
|
export declare const Tooltip: React.FC<Props>;
|
|
24
|
+
export {};
|
|
17
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Tooltip/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Tooltip/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoE,MAAM,OAAO,CAAA;AAGxF,OAAO,aAAa,CAAA;AAOpB,KAAK,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAA;AAE/C,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,CAAA;AAwCD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAyOnC,CAAA"}
|
|
@@ -2,24 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import { c as _c } from "react/compiler-runtime";
|
|
4
4
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
5
|
+
import { autoUpdate, computePosition, flip, hide, offset, shift, size } from '@floating-ui/dom';
|
|
6
|
+
import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
|
7
|
+
import { createPortal } from 'react-dom';
|
|
7
8
|
import './index.css';
|
|
8
|
-
// Breathing room (px) between a shifted tooltip and its clipping edge. Maps to `--spacer-1`.
|
|
9
9
|
const EDGE_GUTTER = 4;
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
while (current) {
|
|
13
|
-
const {
|
|
14
|
-
overflowX
|
|
15
|
-
} = window.getComputedStyle(current);
|
|
16
|
-
if (overflowX === 'auto' || overflowX === 'clip' || overflowX === 'hidden' || overflowX === 'scroll') {
|
|
17
|
-
return current.getBoundingClientRect();
|
|
18
|
-
}
|
|
19
|
-
current = current.parentElement;
|
|
20
|
-
}
|
|
21
|
-
return null;
|
|
22
|
-
};
|
|
10
|
+
const TOP_BOTTOM_OFFSET = 10;
|
|
11
|
+
const LEFT_RIGHT_OFFSET = 11;
|
|
23
12
|
const TooltipCaret = () => {
|
|
24
13
|
const $ = _c(2);
|
|
25
14
|
const clipId = React.useId();
|
|
@@ -55,10 +44,24 @@ const TooltipCaret = () => {
|
|
|
55
44
|
}
|
|
56
45
|
return t0;
|
|
57
46
|
};
|
|
47
|
+
const isTriggerHidden = element => {
|
|
48
|
+
if (typeof element.checkVisibility === 'function') {
|
|
49
|
+
return !element.checkVisibility();
|
|
50
|
+
}
|
|
51
|
+
// Fallback for browsers without `checkVisibility`: an element collapsed by a
|
|
52
|
+
// `display: none` ancestor has no client rects.
|
|
53
|
+
return element.getClientRects().length === 0;
|
|
54
|
+
};
|
|
55
|
+
const toPlacement = (side, alignCaret) => {
|
|
56
|
+
if (side === 'left' || side === 'right' || alignCaret === 'center') {
|
|
57
|
+
return side;
|
|
58
|
+
}
|
|
59
|
+
return `${side}-${alignCaret === 'left' ? 'start' : 'end'}`;
|
|
60
|
+
};
|
|
58
61
|
export const Tooltip = props => {
|
|
59
62
|
const {
|
|
63
|
+
id,
|
|
60
64
|
alignCaret = 'center',
|
|
61
|
-
boundingRef,
|
|
62
65
|
children,
|
|
63
66
|
className,
|
|
64
67
|
delay = 500,
|
|
@@ -66,15 +69,16 @@ export const Tooltip = props => {
|
|
|
66
69
|
show: showFromProps = true,
|
|
67
70
|
staticPositioning = false
|
|
68
71
|
} = props;
|
|
69
|
-
const
|
|
70
|
-
const
|
|
71
|
-
const [
|
|
72
|
-
const [
|
|
73
|
-
const [
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
const generatedID = React.useId();
|
|
73
|
+
const tooltipID = id || generatedID;
|
|
74
|
+
const [show, setShow] = useState(showFromProps);
|
|
75
|
+
const [isMounted, setIsMounted] = useState(false);
|
|
76
|
+
const [placement, setPlacement] = useState(positionFromProps || 'top');
|
|
77
|
+
// A hidden marker rendered where the tooltip used to live in the DOM, so its
|
|
78
|
+
// parent element can be used as the floating-ui reference for the portaled tooltip.
|
|
79
|
+
const triggerMarkerRef = useRef(null);
|
|
80
|
+
const floatingRef = useRef(null);
|
|
81
|
+
const updateTokenRef = useRef(0);
|
|
78
82
|
useEffect(() => {
|
|
79
83
|
let timerID;
|
|
80
84
|
// do not use the delay on transition-out
|
|
@@ -91,83 +95,145 @@ export const Tooltip = props => {
|
|
|
91
95
|
}
|
|
92
96
|
};
|
|
93
97
|
}, [showFromProps, delay]);
|
|
98
|
+
// Keep the tooltip mounted for the duration of its fade-out transition so the
|
|
99
|
+
// portal doesn't disappear abruptly when `show` flips back to false.
|
|
94
100
|
useEffect(() => {
|
|
95
|
-
if (
|
|
101
|
+
if (show) {
|
|
102
|
+
setIsMounted(true);
|
|
96
103
|
return;
|
|
97
104
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
// Matches the `.tooltip--show` opacity transition duration.
|
|
106
|
+
const timeoutID = setTimeout(() => setIsMounted(false), 200);
|
|
107
|
+
return () => {
|
|
108
|
+
clearTimeout(timeoutID);
|
|
109
|
+
};
|
|
110
|
+
}, [show]);
|
|
111
|
+
const updatePosition = useCallback(async () => {
|
|
112
|
+
const trigger = triggerMarkerRef.current?.parentElement;
|
|
113
|
+
const floatingElement = floatingRef.current;
|
|
114
|
+
if (!trigger || !floatingElement) {
|
|
108
115
|
return;
|
|
109
116
|
}
|
|
110
|
-
const
|
|
111
|
-
const boundary =
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
117
|
+
const token = ++updateTokenRef.current;
|
|
118
|
+
const boundary = 'clippingAncestors';
|
|
119
|
+
const canFlip = !staticPositioning && !positionFromProps;
|
|
120
|
+
const {
|
|
121
|
+
middlewareData,
|
|
122
|
+
placement: resolvedPlacement,
|
|
123
|
+
x,
|
|
124
|
+
y
|
|
125
|
+
} = await computePosition(trigger, floatingElement, {
|
|
126
|
+
middleware: [offset(({
|
|
127
|
+
placement: currentPlacement
|
|
128
|
+
}) => currentPlacement.startsWith('left') || currentPlacement.startsWith('right') ? LEFT_RIGHT_OFFSET : TOP_BOTTOM_OFFSET), ...(canFlip ? [flip({
|
|
129
|
+
boundary,
|
|
130
|
+
padding: EDGE_GUTTER
|
|
131
|
+
})] : []), ...(staticPositioning ? [] : [shift({
|
|
132
|
+
boundary,
|
|
133
|
+
padding: EDGE_GUTTER
|
|
134
|
+
}), size({
|
|
135
|
+
apply({
|
|
136
|
+
availableWidth,
|
|
137
|
+
elements
|
|
138
|
+
}) {
|
|
139
|
+
const shouldWrap = elements.floating.scrollWidth > availableWidth;
|
|
140
|
+
elements.floating.toggleAttribute('data-wrap', shouldWrap);
|
|
141
|
+
elements.floating.style.setProperty('--tooltip-max-width', shouldWrap ? `${Math.floor(availableWidth)}px` : '');
|
|
142
|
+
},
|
|
143
|
+
boundary,
|
|
144
|
+
padding: EDGE_GUTTER
|
|
145
|
+
})]), hide({
|
|
146
|
+
boundary: 'clippingAncestors'
|
|
147
|
+
})],
|
|
148
|
+
placement: toPlacement(positionFromProps || 'top', alignCaret),
|
|
149
|
+
strategy: 'fixed'
|
|
150
|
+
});
|
|
151
|
+
// A newer call already applied a fresher position - discard this stale result.
|
|
152
|
+
if (token !== updateTokenRef.current) {
|
|
153
|
+
return;
|
|
129
154
|
}
|
|
130
|
-
|
|
131
|
-
|
|
155
|
+
const hidden = isTriggerHidden(trigger) || Boolean(middlewareData.hide?.referenceHidden);
|
|
156
|
+
Object.assign(floatingElement.style, {
|
|
157
|
+
left: `${x}px`,
|
|
158
|
+
top: `${y}px`,
|
|
159
|
+
visibility: hidden ? 'hidden' : ''
|
|
160
|
+
});
|
|
161
|
+
const resolvedSide = resolvedPlacement.split('-')[0];
|
|
162
|
+
const isHorizontalSide = resolvedSide === 'left' || resolvedSide === 'right';
|
|
163
|
+
const shiftX = !isHorizontalSide && alignCaret === 'center' ? middlewareData.shift?.x || 0 : 0;
|
|
164
|
+
const shiftY = isHorizontalSide ? middlewareData.shift?.y || 0 : 0;
|
|
165
|
+
floatingElement.style.setProperty('--tooltip-caret-x', shiftX ? `${-shiftX}px` : '0px');
|
|
166
|
+
floatingElement.style.setProperty('--tooltip-caret-y', shiftY ? `${-shiftY}px` : '0px');
|
|
167
|
+
setPlacement(resolvedSide);
|
|
168
|
+
}, [alignCaret, positionFromProps, staticPositioning]);
|
|
169
|
+
const setFloatingElement = useCallback(element => {
|
|
170
|
+
floatingRef.current = element;
|
|
171
|
+
void updatePosition();
|
|
172
|
+
}, [updatePosition]);
|
|
173
|
+
// While mounted, let floating-ui keep the portaled tooltip aligned to its trigger
|
|
174
|
+
// as the page scrolls, the trigger resizes or moves, or a hidden ancestor becomes
|
|
175
|
+
// visible again - instead of manually re-measuring on window scroll/resize alone.
|
|
132
176
|
useLayoutEffect(() => {
|
|
133
|
-
|
|
177
|
+
const trigger_0 = triggerMarkerRef.current?.parentElement;
|
|
178
|
+
const floatingElement_0 = floatingRef.current;
|
|
179
|
+
if (!isMounted || !trigger_0 || !floatingElement_0) {
|
|
134
180
|
return;
|
|
135
181
|
}
|
|
136
|
-
|
|
137
|
-
|
|
182
|
+
const cleanupAutoUpdate = autoUpdate(trigger_0, floatingElement_0, updatePosition, {
|
|
183
|
+
elementResize: 'ResizeObserver' in window
|
|
184
|
+
});
|
|
185
|
+
// autoUpdate's own layout-shift tracking gives up once the trigger's rect
|
|
186
|
+
// collapses to zero (e.g. behind a `display: none` ancestor), so it can't
|
|
187
|
+
// tell when the trigger becomes visible again. Watch for that separately.
|
|
188
|
+
const visibilityObserver = typeof IntersectionObserver === 'function' ? new IntersectionObserver(() => void updatePosition(), {
|
|
189
|
+
threshold: 0
|
|
190
|
+
}) : null;
|
|
191
|
+
visibilityObserver?.observe(trigger_0);
|
|
192
|
+
const visualViewport = window.visualViewport;
|
|
193
|
+
visualViewport?.addEventListener('resize', updatePosition);
|
|
194
|
+
visualViewport?.addEventListener('scroll', updatePosition);
|
|
195
|
+
return () => {
|
|
196
|
+
cleanupAutoUpdate();
|
|
197
|
+
visibilityObserver?.disconnect();
|
|
198
|
+
visualViewport?.removeEventListener('resize', updatePosition);
|
|
199
|
+
visualViewport?.removeEventListener('scroll', updatePosition);
|
|
200
|
+
};
|
|
201
|
+
}, [isMounted, updatePosition]);
|
|
202
|
+
useEffect(() => {
|
|
203
|
+
const trigger_1 = triggerMarkerRef.current?.parentElement;
|
|
204
|
+
if (!show || !trigger_1) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const describedByIDs = trigger_1.getAttribute('aria-describedby')?.split(' ') || [];
|
|
208
|
+
if (!describedByIDs.includes(tooltipID)) {
|
|
209
|
+
trigger_1.setAttribute('aria-describedby', [...describedByIDs, tooltipID].join(' '));
|
|
210
|
+
}
|
|
138
211
|
return () => {
|
|
139
|
-
|
|
212
|
+
const remainingIDs = (trigger_1.getAttribute('aria-describedby')?.split(' ') || []).filter(describedByID => describedByID !== tooltipID);
|
|
213
|
+
if (remainingIDs.length) {
|
|
214
|
+
trigger_1.setAttribute('aria-describedby', remainingIDs.join(' '));
|
|
215
|
+
} else {
|
|
216
|
+
trigger_1.removeAttribute('aria-describedby');
|
|
217
|
+
}
|
|
140
218
|
};
|
|
141
|
-
}, [show,
|
|
142
|
-
// The first aside is always on top. The purpose of that is that it can reliably be used for the interaction observer (as it's not moving around), to calculate the position of the actual tooltip.
|
|
219
|
+
}, [show, tooltipID]);
|
|
143
220
|
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
144
|
-
children: [
|
|
221
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
145
222
|
"aria-hidden": "true",
|
|
146
|
-
|
|
147
|
-
ref: ref,
|
|
223
|
+
ref: triggerMarkerRef,
|
|
148
224
|
style: {
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
className: ['tooltip', className, show && 'tooltip--show', maxWidth && 'tooltip--wrap', `tooltip--caret-${alignCaret}`, `tooltip--position-${positionFromProps || position}`].filter(Boolean).join(' '),
|
|
157
|
-
style: {
|
|
158
|
-
...(maxWidth ? {
|
|
159
|
-
'--tooltip-max-width': `${maxWidth}px`
|
|
160
|
-
} : {}),
|
|
161
|
-
...(shiftX ? {
|
|
162
|
-
'--tooltip-caret-x': `${-shiftX}px`,
|
|
163
|
-
'--tooltip-x': `calc(-50% + ${shiftX}px)`
|
|
164
|
-
} : {})
|
|
165
|
-
},
|
|
225
|
+
display: 'none'
|
|
226
|
+
}
|
|
227
|
+
}), isMounted && /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs("aside", {
|
|
228
|
+
className: ['tooltip', className, show && 'tooltip--show', `tooltip--caret-${alignCaret}`, `tooltip--position-${placement}`].filter(Boolean).join(' '),
|
|
229
|
+
id: tooltipID,
|
|
230
|
+
ref: setFloatingElement,
|
|
231
|
+
role: "tooltip",
|
|
166
232
|
children: [/*#__PURE__*/_jsx(TooltipCaret, {}), /*#__PURE__*/_jsx("div", {
|
|
167
233
|
className: "tooltip-content",
|
|
168
234
|
children: children
|
|
169
235
|
})]
|
|
170
|
-
})]
|
|
236
|
+
}), document.body)]
|
|
171
237
|
});
|
|
172
238
|
};
|
|
173
239
|
//# sourceMappingURL=index.js.map
|