@payloadcms/ui 4.0.0-canary.1 → 4.0.0-canary.2
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/radius.css +1 -3
- package/dist/css/theme.css +4 -0
- package/dist/css/utilities.css +5 -0
- package/dist/elements/APIKeyInput/index.css +92 -0
- package/dist/elements/APIKeyInput/index.d.ts +14 -0
- package/dist/elements/APIKeyInput/index.d.ts.map +1 -0
- package/dist/elements/APIKeyInput/index.js +86 -0
- package/dist/elements/APIKeyInput/index.js.map +1 -0
- package/dist/elements/BulkUpload/ActionsBar/index.css +10 -4
- package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/ActionsBar/index.js +43 -40
- package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.js +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddingFilesView/index.css +25 -0
- package/dist/elements/BulkUpload/AddingFilesView/index.d.ts +1 -1
- package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/AddingFilesView/index.js +1 -1
- package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditForm/index.css +9 -0
- package/dist/elements/BulkUpload/EditForm/index.d.ts +1 -1
- package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/EditForm/index.js +1 -1
- package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts +1 -1
- package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js +59 -55
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/BulkUpload/EditMany/index.css +71 -0
- package/dist/elements/BulkUpload/EditMany/index.d.ts +1 -1
- package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/EditMany/index.js +1 -1
- package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.css +54 -75
- package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.js +60 -50
- package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
- package/dist/elements/ColumnSelector/index.js +1 -1
- package/dist/elements/ColumnSelector/index.js.map +1 -1
- package/dist/elements/DocumentFields/index.css +1 -1
- package/dist/elements/Drawer/index.d.ts +25 -0
- package/dist/elements/Drawer/index.d.ts.map +1 -1
- package/dist/elements/Drawer/index.js +134 -62
- package/dist/elements/Drawer/index.js.map +1 -1
- package/dist/elements/FileDetails/DraggableFileDetails/index.css +32 -0
- package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -1
- package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
- package/dist/elements/FileDetails/DraggableFileDetails/index.js +19 -18
- package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.css +36 -0
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts +1 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +1 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
- package/dist/elements/Hierarchy/Field/index.client.d.ts +1 -1
- package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Field/index.client.js +5 -2
- package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
- package/dist/elements/Hierarchy/Field/index.css +37 -0
- package/dist/elements/Hierarchy/MoveMany/index.d.ts +0 -1
- package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.js +0 -1
- package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/index.css +27 -0
- package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts +1 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/index.js +1 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/index.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.js +36 -16
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.js +20 -15
- package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
- package/dist/elements/LoadMoreRow/index.css +34 -0
- package/dist/elements/LoadMoreRow/index.d.ts +1 -1
- package/dist/elements/LoadMoreRow/index.d.ts.map +1 -1
- package/dist/elements/LoadMoreRow/index.js +4 -8
- package/dist/elements/LoadMoreRow/index.js.map +1 -1
- package/dist/elements/Popup/PopupGroupLabel/index.css +12 -0
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts +13 -0
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts.map +1 -0
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js +41 -0
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js.map +1 -0
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts +1 -0
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +9 -31
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +4 -5
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValue/index.css +1 -1
- package/dist/elements/ReactSelect/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/index.js +12 -4
- package/dist/elements/ReactSelect/index.js.map +1 -1
- package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
- package/dist/elements/SchedulePublishButton/index.js +6 -1
- package/dist/elements/SchedulePublishButton/index.js.map +1 -1
- package/dist/elements/SelectMany/index.js +1 -1
- package/dist/elements/SelectMany/index.js.map +1 -1
- package/dist/elements/Table/index.css +7 -5
- package/dist/elements/Tabs/index.css +100 -0
- package/dist/elements/Tabs/index.d.ts +32 -0
- package/dist/elements/Tabs/index.d.ts.map +1 -0
- package/dist/elements/Tabs/index.js +62 -0
- package/dist/elements/Tabs/index.js.map +1 -0
- package/dist/elements/TimezonePicker/index.css +0 -15
- package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
- package/dist/elements/UnpublishButton/index.js +5 -13
- package/dist/elements/UnpublishButton/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +6 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +14 -14
- package/dist/exports/client/index.js.map +4 -4
- package/dist/fields/Tabs/Tab/index.d.ts +0 -1
- package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
- package/dist/fields/Tabs/Tab/index.js +12 -23
- package/dist/fields/Tabs/Tab/index.js.map +1 -1
- package/dist/fields/Tabs/index.d.ts.map +1 -1
- package/dist/fields/Tabs/index.js +37 -37
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Upload/HasMany/index.css +4 -0
- package/dist/forms/RenderFields/RenderField.d.ts +1 -1
- package/dist/icons/Gear/index.d.ts.map +1 -1
- package/dist/icons/Gear/index.js +8 -1
- package/dist/icons/Gear/index.js.map +1 -1
- package/dist/icons/{Write → Key}/index.css +1 -1
- package/dist/icons/Key/index.d.ts +7 -0
- package/dist/icons/Key/index.d.ts.map +1 -0
- package/dist/icons/Key/index.js +24 -0
- package/dist/icons/Key/index.js.map +1 -0
- package/dist/icons/Schedule/index.d.ts.map +1 -1
- package/dist/icons/Schedule/index.js +38 -39
- package/dist/icons/Schedule/index.js.map +1 -1
- package/dist/icons/WarningTriangle/index.css +5 -0
- package/dist/icons/WarningTriangle/index.d.ts +6 -0
- package/dist/icons/WarningTriangle/index.d.ts.map +1 -0
- package/dist/icons/WarningTriangle/index.js +21 -0
- package/dist/icons/WarningTriangle/index.js.map +1 -0
- package/dist/icons/Write/index.d.ts +0 -1
- package/dist/icons/Write/index.d.ts.map +1 -1
- package/dist/icons/Write/index.js +1 -2
- package/dist/icons/Write/index.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +4 -0
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/DocumentInfo/types.d.ts +4 -0
- package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/types.js.map +1 -1
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +27 -24
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/TableColumns/RenderDefaultCell/index.css +1 -0
- package/dist/styles.css +1 -1
- package/dist/utilities/getHasScheduledPublish.d.ts +12 -0
- package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -0
- package/dist/utilities/getHasScheduledPublish.js +38 -0
- package/dist/utilities/getHasScheduledPublish.js.map +1 -0
- package/dist/utilities/getVersions.d.ts.map +1 -1
- package/dist/utilities/getVersions.js +1 -21
- package/dist/utilities/getVersions.js.map +1 -1
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +10 -1
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/Edit/Auth/APIKey.d.ts.map +1 -1
- package/dist/views/Edit/Auth/APIKey.js +10 -32
- package/dist/views/Edit/Auth/APIKey.js.map +1 -1
- package/dist/views/Edit/Auth/index.css +0 -67
- package/dist/views/List/handleGroupBy.d.ts.map +1 -1
- package/dist/views/List/handleGroupBy.js +9 -0
- package/dist/views/List/handleGroupBy.js.map +1 -1
- package/dist/views/List/index.client.d.ts.map +1 -1
- package/dist/views/List/index.client.js +3 -2
- package/dist/views/List/index.client.js.map +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 +2 -1
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
- package/dist/views/List/renderListViewSlots.js +8 -0
- package/dist/views/List/renderListViewSlots.js.map +1 -1
- package/dist/views/Version/SelectComparison/VersionDrawer/index.css +5 -0
- package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts +1 -1
- package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts.map +1 -1
- package/dist/views/Version/SelectComparison/VersionDrawer/index.js +1 -2
- package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
- package/dist/views/Version/SelectComparison/index.css +5 -0
- package/dist/views/Version/SelectComparison/index.d.ts +1 -1
- package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
- package/dist/views/Version/SelectComparison/index.js +1 -1
- package/dist/views/Version/SelectComparison/index.js.map +1 -1
- package/dist/views/Versions/index.css +2 -2
- package/dist/views/Versions/index.d.ts +1 -1
- package/dist/views/Versions/index.d.ts.map +1 -1
- package/dist/views/Versions/index.js +3 -26
- package/dist/views/Versions/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/elements/BulkUpload/AddingFilesView/index.scss +0 -25
- package/dist/elements/BulkUpload/EditForm/index.scss +0 -11
- package/dist/elements/BulkUpload/EditMany/index.scss +0 -171
- package/dist/elements/FileDetails/DraggableFileDetails/index.scss +0 -35
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.scss +0 -78
- package/dist/elements/Hierarchy/Field/index.scss +0 -41
- package/dist/elements/Hierarchy/MoveMany/index.scss +0 -7
- package/dist/elements/Hierarchy/Tree/LoadMore/index.scss +0 -26
- package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts +0 -7
- package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Tree/TreeConnector.js +0 -23
- package/dist/elements/Hierarchy/Tree/TreeConnector.js.map +0 -1
- package/dist/elements/LoadMoreRow/index.scss +0 -45
- package/dist/fields/Tabs/Tab/index.css +0 -82
- package/dist/views/Version/SelectComparison/VersionDrawer/index.scss +0 -18
- package/dist/views/Version/SelectComparison/index.scss +0 -9
|
@@ -159,14 +159,13 @@ export function PublishButton({
|
|
|
159
159
|
setHasPublishedDoc(true);
|
|
160
160
|
}
|
|
161
161
|
}, [localeCode, localizeStatusEnabled, api, collectionSlug, globalSlug, id, setHasPublishedDoc, submit, setUnpublishedVersionCount, uploadStatus, setMostRecentVersionIsAutosaved]);
|
|
162
|
-
const
|
|
162
|
+
const publishLocale = useCallback(async locale => {
|
|
163
163
|
if (uploadStatus === 'uploading') {
|
|
164
164
|
return;
|
|
165
165
|
}
|
|
166
166
|
const params_1 = qs.stringify({
|
|
167
167
|
depth: 0,
|
|
168
|
-
locale
|
|
169
|
-
publishSpecificLocale: locale
|
|
168
|
+
locale
|
|
170
169
|
}, {
|
|
171
170
|
addQueryPrefix: true
|
|
172
171
|
});
|
|
@@ -198,7 +197,7 @@ export function PublishButton({
|
|
|
198
197
|
children: /*#__PURE__*/_jsx(FormSubmit, {
|
|
199
198
|
buttonId: "action-save",
|
|
200
199
|
disabled: !canPublish,
|
|
201
|
-
onClick: isDefaultPublishAll ? publish : () =>
|
|
200
|
+
onClick: isDefaultPublishAll ? publish : () => publishLocale(activeLocale.code),
|
|
202
201
|
size: "medium",
|
|
203
202
|
SubMenuPopupContent: isSpecificLocalePublishEnabled ? ({
|
|
204
203
|
close
|
|
@@ -207,7 +206,7 @@ export function PublishButton({
|
|
|
207
206
|
children: isSpecificLocalePublishEnabled && /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
|
|
208
207
|
children: /*#__PURE__*/_jsx(PopupList.Button, {
|
|
209
208
|
id: "publish-locale",
|
|
210
|
-
onClick: isDefaultPublishAll ? () =>
|
|
209
|
+
onClick: isDefaultPublishAll ? () => publishLocale(activeLocale.code) : publish,
|
|
211
210
|
children: isDefaultPublishAll ? t('version:publishIn', {
|
|
212
211
|
locale: activeLocaleLabel
|
|
213
212
|
}) : t('version:publishAllLocales')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","formatAdminURL","hasAutosaveEnabled","hasLocalizeStatusEnabled","qs","React","useCallback","useEffect","useState","useForm","useFormModified","FormSubmit","useHotkey","useConfig","useDocumentInfo","useEditDepth","useLocale","useOperation","useTranslation","traverseForLocalizedFields","PopupList","PublishButton","label","labelProp","id","collectionSlug","globalSlug","hasPublishedDoc","hasPublishPermission","setHasPublishedDoc","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","unpublishedVersionCount","uploadStatus","config","getEntityConfig","submit","modified","editDepth","code","localeCode","localization","routes","api","i18n","t","shortLabel","entityConfig","useMemo","hasNewerVersions","canPublish","hasLocalizedFields","setHasLocalizedFields","hasLocalizedField","fields","isSpecificLocalePublishEnabled","operation","disabled","hasAutosave","saveDraft","params","stringify","depth","draft","locale","addQueryPrefix","action","method","apiRoute","path","overrides","_status","skipValidation","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","localizeStatusEnabled","publish","publishAllLocales","result","publishSpecificLocale","pathSegment","isDefaultPublishAll","defaultLocalePublishOption","activeLocale","locales","find","activeLocaleLabel","_jsx","Fragment","buttonId","onClick","size","SubMenuPopupContent","close","ButtonGroup","Button","undefined","type","_jsxs","className"],"sources":["../../../src/elements/PublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { PublishButtonClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL, hasAutosaveEnabled, hasLocalizeStatusEnabled } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.css'\n\nexport function PublishButton({\n label: labelProp,\n}: { label?: string } & PublishButtonClientProps = {}) {\n const {\n id,\n collectionSlug,\n globalSlug,\n hasPublishedDoc,\n hasPublishPermission,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n uploadStatus,\n } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n const { submit } = useForm()\n const modified = useFormModified()\n const editDepth = useEditDepth()\n const { code: localeCode } = useLocale()\n const {\n localization,\n routes: { api },\n } = config\n\n const { i18n, t } = useTranslation()\n const label = labelProp || t('version:publishChanges')\n const shortLabel = labelProp || t('version:publish')\n\n const entityConfig = React.useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const hasNewerVersions = unpublishedVersionCount > 0\n\n const canPublish =\n hasPublishPermission &&\n (modified || hasNewerVersions || !hasPublishedDoc) &&\n uploadStatus !== 'uploading'\n\n const [hasLocalizedFields, setHasLocalizedFields] = useState(false)\n\n useEffect(() => {\n const hasLocalizedField = traverseForLocalizedFields(entityConfig?.fields)\n setHasLocalizedFields(hasLocalizedField)\n }, [entityConfig?.fields])\n\n const isSpecificLocalePublishEnabled = localization && hasLocalizedFields && hasPublishPermission\n\n const operation = useOperation()\n\n const disabled = operation === 'update' && !modified\n\n // If autosave is enabled the modified will always be true so only conditionally check on modified state\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n draft: true,\n 'fallback-locale': 'null',\n locale: localeCode,\n },\n { addQueryPrefix: true },\n )\n\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${id ? `/${id}` : ''}${params}`,\n })\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/globals/${globalSlug}${params}`,\n })\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [disabled, localeCode, collectionSlug, globalSlug, submit, api, id])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (saveDraft && hasAutosave) {\n void saveDraft()\n }\n })\n\n const localizeStatusEnabled = hasLocalizeStatusEnabled(entityConfig)\n\n const publish = useCallback(async () => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n locale: localeCode,\n ...(localizeStatusEnabled && { publishAllLocales: true }),\n },\n { addQueryPrefix: true },\n )\n\n const action = formatAdminURL({\n apiRoute: api,\n path: `${\n globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}${id ? `/${id}` : ''}`\n }${params}` as `/${string}`,\n })\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n }, [\n localeCode,\n localizeStatusEnabled,\n api,\n collectionSlug,\n globalSlug,\n id,\n setHasPublishedDoc,\n submit,\n setUnpublishedVersionCount,\n uploadStatus,\n setMostRecentVersionIsAutosaved,\n ])\n\n const publishSpecificLocale = useCallback(\n async (locale) => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n locale,\n publishSpecificLocale: locale,\n },\n { addQueryPrefix: true },\n )\n\n const pathSegment = globalSlug\n ? `/globals/${globalSlug}`\n : `/${collectionSlug}${id ? `/${id}` : ''}`\n const action = formatAdminURL({\n apiRoute: api,\n path: `${pathSegment}${params}` as `/${string}`,\n })\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n },\n [\n api,\n collectionSlug,\n globalSlug,\n id,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n submit,\n uploadStatus,\n ],\n )\n\n // Publish to all locales unless there are localized fields AND defaultLocalePublishOption is 'active'\n const isDefaultPublishAll =\n !isSpecificLocalePublishEnabled ||\n (localization && localization?.defaultLocalePublishOption !== 'active')\n\n const activeLocale =\n localization &&\n localization?.locales.find((locale) =>\n typeof locale === 'string' ? locale === localeCode : locale.code === localeCode,\n )\n\n const activeLocaleLabel = activeLocale && getTranslation(activeLocale.label, i18n)\n\n if (!hasPublishPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <FormSubmit\n buttonId=\"action-save\"\n disabled={!canPublish}\n onClick={isDefaultPublishAll ? publish : () => publishSpecificLocale(activeLocale.code)}\n size=\"medium\"\n SubMenuPopupContent={\n isSpecificLocalePublishEnabled\n ? ({ close }) => {\n return (\n <React.Fragment>\n {isSpecificLocalePublishEnabled && (\n <PopupList.ButtonGroup>\n <PopupList.Button\n id=\"publish-locale\"\n onClick={\n isDefaultPublishAll\n ? () => publishSpecificLocale(activeLocale.code)\n : publish\n }\n >\n {isDefaultPublishAll\n ? t('version:publishIn', { locale: activeLocaleLabel })\n : t('version:publishAllLocales')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n </React.Fragment>\n )\n }\n : undefined\n }\n type=\"button\"\n >\n {!isDefaultPublishAll ? (\n t('version:publishIn', { locale: activeLocaleLabel })\n ) : (\n <React.Fragment>\n <span className=\"publish-button__label--full\">{label}</span>\n <span className=\"publish-button__label--short\">{shortLabel}</span>\n </React.Fragment>\n )}\n </FormSubmit>\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","formatAdminURL","hasAutosaveEnabled","hasLocalizeStatusEnabled","qs","React","useCallback","useEffect","useState","useForm","useFormModified","FormSubmit","useHotkey","useConfig","useDocumentInfo","useEditDepth","useLocale","useOperation","useTranslation","traverseForLocalizedFields","PopupList","PublishButton","label","labelProp","id","collectionSlug","globalSlug","hasPublishedDoc","hasPublishPermission","setHasPublishedDoc","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","unpublishedVersionCount","uploadStatus","config","getEntityConfig","submit","modified","editDepth","code","localeCode","localization","routes","api","i18n","t","shortLabel","entityConfig","useMemo","hasNewerVersions","canPublish","hasLocalizedFields","setHasLocalizedFields","hasLocalizedField","fields","isSpecificLocalePublishEnabled","operation","disabled","hasAutosave","saveDraft","params","stringify","depth","draft","locale","addQueryPrefix","action","method","apiRoute","path","overrides","_status","skipValidation","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","localizeStatusEnabled","publish","publishAllLocales","result","publishLocale","pathSegment","isDefaultPublishAll","defaultLocalePublishOption","activeLocale","locales","find","activeLocaleLabel","_jsx","Fragment","buttonId","onClick","size","SubMenuPopupContent","close","ButtonGroup","Button","undefined","type","_jsxs","className"],"sources":["../../../src/elements/PublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { PublishButtonClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL, hasAutosaveEnabled, hasLocalizeStatusEnabled } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.css'\n\nexport function PublishButton({\n label: labelProp,\n}: { label?: string } & PublishButtonClientProps = {}) {\n const {\n id,\n collectionSlug,\n globalSlug,\n hasPublishedDoc,\n hasPublishPermission,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n uploadStatus,\n } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n const { submit } = useForm()\n const modified = useFormModified()\n const editDepth = useEditDepth()\n const { code: localeCode } = useLocale()\n const {\n localization,\n routes: { api },\n } = config\n\n const { i18n, t } = useTranslation()\n const label = labelProp || t('version:publishChanges')\n const shortLabel = labelProp || t('version:publish')\n\n const entityConfig = React.useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const hasNewerVersions = unpublishedVersionCount > 0\n\n const canPublish =\n hasPublishPermission &&\n (modified || hasNewerVersions || !hasPublishedDoc) &&\n uploadStatus !== 'uploading'\n\n const [hasLocalizedFields, setHasLocalizedFields] = useState(false)\n\n useEffect(() => {\n const hasLocalizedField = traverseForLocalizedFields(entityConfig?.fields)\n setHasLocalizedFields(hasLocalizedField)\n }, [entityConfig?.fields])\n\n const isSpecificLocalePublishEnabled = localization && hasLocalizedFields && hasPublishPermission\n\n const operation = useOperation()\n\n const disabled = operation === 'update' && !modified\n\n // If autosave is enabled the modified will always be true so only conditionally check on modified state\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n draft: true,\n 'fallback-locale': 'null',\n locale: localeCode,\n },\n { addQueryPrefix: true },\n )\n\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${id ? `/${id}` : ''}${params}`,\n })\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/globals/${globalSlug}${params}`,\n })\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [disabled, localeCode, collectionSlug, globalSlug, submit, api, id])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (saveDraft && hasAutosave) {\n void saveDraft()\n }\n })\n\n const localizeStatusEnabled = hasLocalizeStatusEnabled(entityConfig)\n\n const publish = useCallback(async () => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n locale: localeCode,\n ...(localizeStatusEnabled && { publishAllLocales: true }),\n },\n { addQueryPrefix: true },\n )\n\n const action = formatAdminURL({\n apiRoute: api,\n path: `${\n globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}${id ? `/${id}` : ''}`\n }${params}` as `/${string}`,\n })\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n }, [\n localeCode,\n localizeStatusEnabled,\n api,\n collectionSlug,\n globalSlug,\n id,\n setHasPublishedDoc,\n submit,\n setUnpublishedVersionCount,\n uploadStatus,\n setMostRecentVersionIsAutosaved,\n ])\n\n const publishLocale = useCallback(\n async (locale) => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n locale,\n },\n { addQueryPrefix: true },\n )\n\n const pathSegment = globalSlug\n ? `/globals/${globalSlug}`\n : `/${collectionSlug}${id ? `/${id}` : ''}`\n const action = formatAdminURL({\n apiRoute: api,\n path: `${pathSegment}${params}` as `/${string}`,\n })\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n },\n [\n api,\n collectionSlug,\n globalSlug,\n id,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n submit,\n uploadStatus,\n ],\n )\n\n // Publish to all locales unless there are localized fields AND defaultLocalePublishOption is 'active'\n const isDefaultPublishAll =\n !isSpecificLocalePublishEnabled ||\n (localization && localization?.defaultLocalePublishOption !== 'active')\n\n const activeLocale =\n localization &&\n localization?.locales.find((locale) =>\n typeof locale === 'string' ? locale === localeCode : locale.code === localeCode,\n )\n\n const activeLocaleLabel = activeLocale && getTranslation(activeLocale.label, i18n)\n\n if (!hasPublishPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <FormSubmit\n buttonId=\"action-save\"\n disabled={!canPublish}\n onClick={isDefaultPublishAll ? publish : () => publishLocale(activeLocale.code)}\n size=\"medium\"\n SubMenuPopupContent={\n isSpecificLocalePublishEnabled\n ? ({ close }) => {\n return (\n <React.Fragment>\n {isSpecificLocalePublishEnabled && (\n <PopupList.ButtonGroup>\n <PopupList.Button\n id=\"publish-locale\"\n onClick={\n isDefaultPublishAll ? () => publishLocale(activeLocale.code) : publish\n }\n >\n {isDefaultPublishAll\n ? t('version:publishIn', { locale: activeLocaleLabel })\n : t('version:publishAllLocales')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n </React.Fragment>\n )\n }\n : undefined\n }\n type=\"button\"\n >\n {!isDefaultPublishAll ? (\n t('version:publishIn', { locale: activeLocaleLabel })\n ) : (\n <React.Fragment>\n <span className=\"publish-button__label--full\">{label}</span>\n <span className=\"publish-button__label--short\">{shortLabel}</span>\n </React.Fragment>\n )}\n </FormSubmit>\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ReactSelect/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA2B,MAAM,OAAO,CAAA;AAI/C,OAAO,KAAK,EAAU,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACjE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAgBxC,OAAO,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ReactSelect/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA2B,MAAM,OAAO,CAAA;AAI/C,OAAO,KAAK,EAAU,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACjE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAgBxC,OAAO,aAAa,CAAA;AAgTpB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAQzD,CAAA"}
|
|
@@ -150,6 +150,10 @@ const SelectAdapter = props => {
|
|
|
150
150
|
const placement = state_3.placement ? `rs__menu--placement-${state_3.placement}` : '';
|
|
151
151
|
const external = externalClassNames?.menu?.(state_3) ?? '';
|
|
152
152
|
return [placement, external].filter(Boolean).join(' ');
|
|
153
|
+
},
|
|
154
|
+
menuList: state_4 => {
|
|
155
|
+
const external_0 = externalClassNames?.menuList?.(state_4) ?? '';
|
|
156
|
+
return ['scrollbar-thin', external_0].filter(Boolean).join(' ');
|
|
153
157
|
}
|
|
154
158
|
},
|
|
155
159
|
components: {
|
|
@@ -224,10 +228,14 @@ const SelectAdapter = props => {
|
|
|
224
228
|
classNamePrefix: "rs",
|
|
225
229
|
classNames: {
|
|
226
230
|
...externalClassNames,
|
|
227
|
-
menu:
|
|
228
|
-
const placement_0 =
|
|
229
|
-
const
|
|
230
|
-
return [placement_0,
|
|
231
|
+
menu: state_5 => {
|
|
232
|
+
const placement_0 = state_5.placement ? `rs__menu--placement-${state_5.placement}` : '';
|
|
233
|
+
const external_1 = externalClassNames?.menu?.(state_5) ?? '';
|
|
234
|
+
return [placement_0, external_1].filter(Boolean).join(' ');
|
|
235
|
+
},
|
|
236
|
+
menuList: state_6 => {
|
|
237
|
+
const external_2 = externalClassNames?.menuList?.(state_6) ?? '';
|
|
238
|
+
return ['scrollbar-thin', external_2].filter(Boolean).join(' ');
|
|
231
239
|
}
|
|
232
240
|
},
|
|
233
241
|
components: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","arrayMove","getTranslation","React","useEffect","useId","Select","components","rsComponents","CreatableSelect","useDebouncedEffect","useTheme","useTranslation","DraggableSortable","ShimmerEffect","ClearIndicator","Control","DropdownIndicator","Input","generateMultiValueDraggableID","MultiValue","MultiValueLabel","MultiValueRemove","SingleValue","ValueContainer","createOption","label","value","ThemedMenuPortal","props","$","theme","menuPortalTheme","selectProps","customProps","t0","t1","_jsx","MenuPortal","innerProps","SelectAdapter","i18n","t","inputValue","setInputValue","useState","uuid","hasMounted","setHasMounted","className","classNames","externalClassNames","disabled","filterOption","undefined","getOptionValue","isClearable","isCreatable","isLoading","isSearchable","menuPortalTarget","menuPortalTargetProp","menuPosition","menuPositionProp","noOptionsMessage","numberOnly","onChange","onMenuClose","onMenuOpen","options","placeholder","showError","styles","externalStyles","document","body","isLoadingDebounced","setIsLoadingDebounced","loadingMessage","classes","filter","Boolean","join","menu","rsStyles","state","zIndex","menuPortal","control","minHeight","option","height","captureMenuScroll","classNamePrefix","placement","external","instanceId","isDisabled","menuPlacement","unstyled","handleKeyDown","event","acceptableKeys","isNumber","test","key","isActionKey","includes","preventDefault","trim","nativeEvent","isComposing","onInputChange","newValue","onKeyDown","SortableSelect","draggableIDs","Array","isArray","map","optionValue","ids","onDragEnd","moveFromIndex","moveToIndex","sorted","ReactSelect","isMulti","isSortable"],"sources":["../../../src/elements/ReactSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { JSX, KeyboardEventHandler } from 'react'\nimport type { GroupBase, MenuProps, StylesConfig } from 'react-select'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useId } from 'react'\nimport Select, { components as rsComponents } from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option, ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useTheme } from '../../providers/Theme/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport { Input } from './Input/index.js'\nimport { generateMultiValueDraggableID, MultiValue } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\nimport './index.css'\n\nconst createOption = (label: string) => ({\n label,\n value: label,\n})\n\n// Propagates the nearest scoped theme (via ThemeProvider) into the portal div,\n// falling back to the global theme. Ensures dropdown menus portaled to\n// document.body inherit the correct theme (e.g. dark Popup).\nfunction ThemedMenuPortal<Opt, IsMulti extends boolean, Group extends GroupBase<Opt>>(\n props: React.ComponentProps<typeof rsComponents.MenuPortal<Opt, IsMulti, Group>>,\n) {\n const { theme } = useTheme()\n const menuPortalTheme = (props.selectProps as any)?.customProps?.menuPortalTheme\n return (\n <rsComponents.MenuPortal\n {...props}\n innerProps={{ 'data-theme': menuPortalTheme ?? theme } as JSX.IntrinsicElements['div']}\n />\n )\n}\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = React.useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = React.useState(false)\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n const {\n className,\n classNames: externalClassNames,\n components,\n customProps,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n menuPortalTarget: menuPortalTargetProp,\n menuPosition: menuPositionProp,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n styles: externalStyles,\n value,\n } = props\n\n const menuPortalTarget =\n menuPortalTargetProp === undefined\n ? typeof document !== 'undefined'\n ? document.body\n : null\n : menuPortalTargetProp\n\n const menuPosition = menuPositionProp ?? (menuPortalTarget ? 'fixed' : undefined)\n\n // Debounce the loading state so that fast option fetches (e.g. relationship\n // fields that resolve almost instantly) don't cause the clear indicator to\n // flash to react-select's loading indicator and back. The loading indicator\n // only appears once a load takes longer than the threshold below.\n const [isLoadingDebounced, setIsLoadingDebounced] = React.useState(false)\n\n useDebouncedEffect(\n () => {\n setIsLoadingDebounced(isLoading)\n },\n [isLoading],\n 250,\n )\n\n const loadingMessage = () => t('general:loading') + '...'\n\n const classes = [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' ')\n\n const styles: StylesConfig<Option> = {\n // Remove the default react-select z-index from the menu so that our custom\n // z-index in the \"payload-default\" css layer can take effect, in such a way\n // that end users can easily override it as with other styles.\n menu: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: undefined,\n ...externalStyles?.menu?.(rsStyles, state),\n }),\n // When portaling to document.body, the portal container needs an explicit\n // z-index so the menu appears above drawers and dialogs. unstyled={true}\n // strips react-select's default zIndex:9999 from the portal container.\n ...(menuPortalTarget && {\n menuPortal: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: 9999,\n ...externalStyles?.menuPortal?.(rsStyles, state),\n }),\n }),\n // Remove the default react-select min-height so our CSS can control it\n control: (rsStyles, state) => ({\n ...rsStyles,\n minHeight: undefined,\n ...externalStyles?.control?.(rsStyles, state),\n }),\n // Allow external option styles to override emotion defaults\n option: (rsStyles, state) => ({\n ...rsStyles,\n ...externalStyles?.option?.(rsStyles, state),\n }),\n }\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"var(--field-min-height)\" />\n }\n\n if (!isCreatable) {\n return (\n <Select<Option, boolean, GroupBase<Option>>\n captureMenuScroll\n customProps={customProps}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n classNames={{\n ...externalClassNames,\n menu: (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n }}\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: ThemedMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n getOptionValue={getOptionValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isLoading={isLoadingDebounced}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n menuPortalTarget={menuPortalTarget}\n menuPosition={menuPosition}\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n placeholder={getTranslation(placeholder, i18n)}\n styles={styles}\n unstyled={true}\n value={value}\n />\n )\n }\n const handleKeyDown: KeyboardEventHandler = (event) => {\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n if (!value || !inputValue || inputValue.trim() === '') {\n return\n }\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n if (event.nativeEvent.isComposing) {\n return\n }\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([...(value as Option[]), createOption(inputValue)])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <CreatableSelect<Option, boolean, GroupBase<Option>>\n captureMenuScroll\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n classNames={{\n ...externalClassNames,\n menu: (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n }}\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: ThemedMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n inputValue={inputValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isLoading={isLoadingDebounced}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n menuPortalTarget={menuPortalTarget}\n menuPosition={menuPosition}\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n placeholder={getTranslation(placeholder, i18n)}\n styles={styles}\n unstyled={true}\n value={value}\n />\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","arrayMove","getTranslation","React","useEffect","useId","Select","components","rsComponents","CreatableSelect","useDebouncedEffect","useTheme","useTranslation","DraggableSortable","ShimmerEffect","ClearIndicator","Control","DropdownIndicator","Input","generateMultiValueDraggableID","MultiValue","MultiValueLabel","MultiValueRemove","SingleValue","ValueContainer","createOption","label","value","ThemedMenuPortal","props","$","theme","menuPortalTheme","selectProps","customProps","t0","t1","_jsx","MenuPortal","innerProps","SelectAdapter","i18n","t","inputValue","setInputValue","useState","uuid","hasMounted","setHasMounted","className","classNames","externalClassNames","disabled","filterOption","undefined","getOptionValue","isClearable","isCreatable","isLoading","isSearchable","menuPortalTarget","menuPortalTargetProp","menuPosition","menuPositionProp","noOptionsMessage","numberOnly","onChange","onMenuClose","onMenuOpen","options","placeholder","showError","styles","externalStyles","document","body","isLoadingDebounced","setIsLoadingDebounced","loadingMessage","classes","filter","Boolean","join","menu","rsStyles","state","zIndex","menuPortal","control","minHeight","option","height","captureMenuScroll","classNamePrefix","placement","external","menuList","instanceId","isDisabled","menuPlacement","unstyled","handleKeyDown","event","acceptableKeys","isNumber","test","key","isActionKey","includes","preventDefault","trim","nativeEvent","isComposing","onInputChange","newValue","onKeyDown","SortableSelect","draggableIDs","Array","isArray","map","optionValue","ids","onDragEnd","moveFromIndex","moveToIndex","sorted","ReactSelect","isMulti","isSortable"],"sources":["../../../src/elements/ReactSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { JSX, KeyboardEventHandler } from 'react'\nimport type { GroupBase, MenuListProps, MenuProps, StylesConfig } from 'react-select'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useId } from 'react'\nimport Select, { components as rsComponents } from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option, ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useTheme } from '../../providers/Theme/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport { Input } from './Input/index.js'\nimport { generateMultiValueDraggableID, MultiValue } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\nimport './index.css'\n\nconst createOption = (label: string) => ({\n label,\n value: label,\n})\n\n// Propagates the nearest scoped theme (via ThemeProvider) into the portal div,\n// falling back to the global theme. Ensures dropdown menus portaled to\n// document.body inherit the correct theme (e.g. dark Popup).\nfunction ThemedMenuPortal<Opt, IsMulti extends boolean, Group extends GroupBase<Opt>>(\n props: React.ComponentProps<typeof rsComponents.MenuPortal<Opt, IsMulti, Group>>,\n) {\n const { theme } = useTheme()\n const menuPortalTheme = (props.selectProps as any)?.customProps?.menuPortalTheme\n return (\n <rsComponents.MenuPortal\n {...props}\n innerProps={{ 'data-theme': menuPortalTheme ?? theme } as JSX.IntrinsicElements['div']}\n />\n )\n}\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = React.useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = React.useState(false)\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n const {\n className,\n classNames: externalClassNames,\n components,\n customProps,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n menuPortalTarget: menuPortalTargetProp,\n menuPosition: menuPositionProp,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n styles: externalStyles,\n value,\n } = props\n\n const menuPortalTarget =\n menuPortalTargetProp === undefined\n ? typeof document !== 'undefined'\n ? document.body\n : null\n : menuPortalTargetProp\n\n const menuPosition = menuPositionProp ?? (menuPortalTarget ? 'fixed' : undefined)\n\n // Debounce the loading state so that fast option fetches (e.g. relationship\n // fields that resolve almost instantly) don't cause the clear indicator to\n // flash to react-select's loading indicator and back. The loading indicator\n // only appears once a load takes longer than the threshold below.\n const [isLoadingDebounced, setIsLoadingDebounced] = React.useState(false)\n\n useDebouncedEffect(\n () => {\n setIsLoadingDebounced(isLoading)\n },\n [isLoading],\n 250,\n )\n\n const loadingMessage = () => t('general:loading') + '...'\n\n const classes = [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' ')\n\n const styles: StylesConfig<Option> = {\n // Remove the default react-select z-index from the menu so that our custom\n // z-index in the \"payload-default\" css layer can take effect, in such a way\n // that end users can easily override it as with other styles.\n menu: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: undefined,\n ...externalStyles?.menu?.(rsStyles, state),\n }),\n // When portaling to document.body, the portal container needs an explicit\n // z-index so the menu appears above drawers and dialogs. unstyled={true}\n // strips react-select's default zIndex:9999 from the portal container.\n ...(menuPortalTarget && {\n menuPortal: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: 9999,\n ...externalStyles?.menuPortal?.(rsStyles, state),\n }),\n }),\n // Remove the default react-select min-height so our CSS can control it\n control: (rsStyles, state) => ({\n ...rsStyles,\n minHeight: undefined,\n ...externalStyles?.control?.(rsStyles, state),\n }),\n // Allow external option styles to override emotion defaults\n option: (rsStyles, state) => ({\n ...rsStyles,\n ...externalStyles?.option?.(rsStyles, state),\n }),\n }\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"var(--field-min-height)\" />\n }\n\n if (!isCreatable) {\n return (\n <Select<Option, boolean, GroupBase<Option>>\n captureMenuScroll\n customProps={customProps}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n classNames={{\n ...externalClassNames,\n menu: (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n menuList: (state: MenuListProps<Option, boolean, GroupBase<Option>>) => {\n const external = externalClassNames?.menuList?.(state) ?? ''\n return ['scrollbar-thin', external].filter(Boolean).join(' ')\n },\n }}\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: ThemedMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n getOptionValue={getOptionValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isLoading={isLoadingDebounced}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n menuPortalTarget={menuPortalTarget}\n menuPosition={menuPosition}\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n placeholder={getTranslation(placeholder, i18n)}\n styles={styles}\n unstyled={true}\n value={value}\n />\n )\n }\n const handleKeyDown: KeyboardEventHandler = (event) => {\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n if (!value || !inputValue || inputValue.trim() === '') {\n return\n }\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n if (event.nativeEvent.isComposing) {\n return\n }\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([...(value as Option[]), createOption(inputValue)])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <CreatableSelect<Option, boolean, GroupBase<Option>>\n captureMenuScroll\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n classNames={{\n ...externalClassNames,\n menu: (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n menuList: (state: MenuListProps<Option, boolean, GroupBase<Option>>) => {\n const external = externalClassNames?.menuList?.(state) ?? ''\n return ['scrollbar-thin', external].filter(Boolean).join(' ')\n },\n }}\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: ThemedMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n inputValue={inputValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isLoading={isLoadingDebounced}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n menuPortalTarget={menuPortalTarget}\n menuPosition={menuPosition}\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n placeholder={getTranslation(placeholder, i18n)}\n styles={styles}\n unstyled={true}\n value={value}\n />\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAWhD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAWhD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CA8ElE,CAAA"}
|
|
@@ -20,6 +20,8 @@ export const SchedulePublishButton = ({
|
|
|
20
20
|
collectionSlug,
|
|
21
21
|
globalSlug,
|
|
22
22
|
hasPublishPermission,
|
|
23
|
+
hasScheduledPublish,
|
|
24
|
+
setHasScheduledPublish,
|
|
23
25
|
unpublishedVersionCount
|
|
24
26
|
} = useDocumentInfo();
|
|
25
27
|
const {
|
|
@@ -65,7 +67,9 @@ export const SchedulePublishButton = ({
|
|
|
65
67
|
children: [/*#__PURE__*/_jsx(Button, {
|
|
66
68
|
buttonStyle: "ghost",
|
|
67
69
|
disabled: disabled,
|
|
68
|
-
icon: /*#__PURE__*/_jsx(ScheduleIcon, {
|
|
70
|
+
icon: /*#__PURE__*/_jsx(ScheduleIcon, {
|
|
71
|
+
active: hasScheduledPublish
|
|
72
|
+
}),
|
|
69
73
|
id: "schedule-publish-button",
|
|
70
74
|
onClick: () => toggleModal(drawerSlug)
|
|
71
75
|
}), /*#__PURE__*/_jsx(Tooltip, {
|
|
@@ -75,6 +79,7 @@ export const SchedulePublishButton = ({
|
|
|
75
79
|
})]
|
|
76
80
|
}), isModalOpen(drawerSlug) && /*#__PURE__*/_jsx(ScheduleDrawer, {
|
|
77
81
|
defaultType: !hasNewerVersions ? 'unpublish' : 'publish',
|
|
82
|
+
onUpcomingChange: setHasScheduledPublish,
|
|
78
83
|
schedulePublishConfig: scheduledPublishEnabled && typeof entityConfig.versions.drafts.schedulePublish === 'object' ? entityConfig.versions.drafts.schedulePublish : undefined,
|
|
79
84
|
slug: drawerSlug
|
|
80
85
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","hasAutosaveEnabled","hasScheduledPublishEnabled","React","useMemo","useState","useFormModified","ScheduleIcon","useConfig","useDocumentInfo","useTranslation","Button","ScheduleDrawer","Tooltip","SchedulePublishButton","disabled","id","collectionSlug","globalSlug","hasPublishPermission","unpublishedVersionCount","getEntityConfig","isModalOpen","toggleModal","t","modified","hovered","setHovered","entityConfig","scheduledPublishEnabled","hasAutosave","canSchedulePublish","Boolean","drawerSlug","hasNewerVersions","label","_jsxs","Fragment","onPointerEnter","onPointerLeave","style","position","_jsx","buttonStyle","icon","onClick","delay","show","defaultType","schedulePublishConfig","versions","drafts","schedulePublish","undefined","slug"],"sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { hasAutosaveEnabled, hasScheduledPublishEnabled } from 'payload/shared'\nimport React, { useMemo, useState } from 'react'\n\nimport { useFormModified } from '../../forms/Form/context.js'\nimport { ScheduleIcon } from '../../icons/Schedule/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ScheduleDrawer } from '../PublishButton/ScheduleDrawer/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\n\nexport const SchedulePublishButton: React.FC<{ disabled?: boolean }> = ({ disabled }) => {\n const {
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","hasAutosaveEnabled","hasScheduledPublishEnabled","React","useMemo","useState","useFormModified","ScheduleIcon","useConfig","useDocumentInfo","useTranslation","Button","ScheduleDrawer","Tooltip","SchedulePublishButton","disabled","id","collectionSlug","globalSlug","hasPublishPermission","hasScheduledPublish","setHasScheduledPublish","unpublishedVersionCount","getEntityConfig","isModalOpen","toggleModal","t","modified","hovered","setHovered","entityConfig","scheduledPublishEnabled","hasAutosave","canSchedulePublish","Boolean","drawerSlug","hasNewerVersions","label","_jsxs","Fragment","onPointerEnter","onPointerLeave","style","position","_jsx","buttonStyle","icon","active","onClick","delay","show","defaultType","onUpcomingChange","schedulePublishConfig","versions","drafts","schedulePublish","undefined","slug"],"sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { hasAutosaveEnabled, hasScheduledPublishEnabled } from 'payload/shared'\nimport React, { useMemo, useState } from 'react'\n\nimport { useFormModified } from '../../forms/Form/context.js'\nimport { ScheduleIcon } from '../../icons/Schedule/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ScheduleDrawer } from '../PublishButton/ScheduleDrawer/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\n\nexport const SchedulePublishButton: React.FC<{ disabled?: boolean }> = ({ disabled }) => {\n const {\n id,\n collectionSlug,\n globalSlug,\n hasPublishPermission,\n hasScheduledPublish,\n setHasScheduledPublish,\n unpublishedVersionCount,\n } = useDocumentInfo()\n\n const { getEntityConfig } = useConfig()\n const { isModalOpen, toggleModal } = useModal()\n const { t } = useTranslation()\n const modified = useFormModified()\n const [hovered, setHovered] = useState(false)\n\n const entityConfig = useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const scheduledPublishEnabled = hasScheduledPublishEnabled(entityConfig)\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const canSchedulePublish = Boolean(\n scheduledPublishEnabled &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)) &&\n (hasAutosave || !modified),\n )\n\n const drawerSlug = `schedule-publish-${id}`\n const hasNewerVersions = unpublishedVersionCount > 0\n\n if (!canSchedulePublish) {\n return null\n }\n\n const label = t('version:schedulePublish')\n\n return (\n <React.Fragment>\n <span\n onPointerEnter={() => setHovered(true)}\n onPointerLeave={() => setHovered(false)}\n style={{ position: 'relative' }}\n >\n <Button\n buttonStyle=\"ghost\"\n disabled={disabled}\n icon={<ScheduleIcon active={hasScheduledPublish} />}\n id=\"schedule-publish-button\"\n onClick={() => toggleModal(drawerSlug)}\n />\n <Tooltip delay={0} show={hovered}>\n {label}\n </Tooltip>\n </span>\n {isModalOpen(drawerSlug) && (\n <ScheduleDrawer\n defaultType={!hasNewerVersions ? 'unpublish' : 'publish'}\n onUpcomingChange={setHasScheduledPublish}\n schedulePublishConfig={\n scheduledPublishEnabled &&\n typeof entityConfig.versions.drafts.schedulePublish === 'object'\n ? entityConfig.versions.drafts.schedulePublish\n : undefined\n }\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AAEA,SAASA,QAAQ,QAAQ;AACzB,SAASC,kBAAkB,EAAEC,0BAA0B,QAAQ;AAC/D,OAAOC,KAAA,IAASC,OAAO,EAAEC,QAAQ,QAAQ;AAEzC,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAQ;AAC7B,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,qBAAA,GAA0DA,CAAC;EAAEC;AAAQ,CAAE;EAClF,MAAM;IACJC,EAAE;IACFC,cAAc;IACdC,UAAU;IACVC,oBAAoB;IACpBC,mBAAmB;IACnBC,sBAAsB;IACtBC;EAAuB,CACxB,GAAGb,eAAA;EAEJ,MAAM;IAAEc;EAAe,CAAE,GAAGf,SAAA;EAC5B,MAAM;IAAEgB,WAAW;IAAEC;EAAW,CAAE,GAAGzB,QAAA;EACrC,MAAM;IAAE0B;EAAC,CAAE,GAAGhB,cAAA;EACd,MAAMiB,QAAA,GAAWrB,eAAA;EACjB,MAAM,CAACsB,OAAA,EAASC,UAAA,CAAW,GAAGxB,QAAA,CAAS;EAEvC,MAAMyB,YAAA,GAAe1B,OAAA,CAAQ;IAC3B,IAAIa,cAAA,EAAgB;MAClB,OAAOM,eAAA,CAAgB;QAAEN;MAAe;IAC1C;IACA,IAAIC,UAAA,EAAY;MACd,OAAOK,eAAA,CAAgB;QAAEL;MAAW;IACtC;EACF,GAAG,CAACD,cAAA,EAAgBC,UAAA,EAAYK,eAAA,CAAgB;EAEhD,MAAMQ,uBAAA,GAA0B7B,0BAAA,CAA2B4B,YAAA;EAC3D,MAAME,WAAA,GAAc/B,kBAAA,CAAmB6B,YAAA;EAEvC,MAAMG,kBAAA,GAAqBC,OAAA,CACzBH,uBAAA,IACEZ,oBAAA,KACCD,UAAA,IAAeD,cAAA,IAAkBD,EAAE,MACnCgB,WAAA,IAAe,CAACL,QAAO;EAG5B,MAAMQ,UAAA,GAAa,oBAAoBnB,EAAA,EAAI;EAC3C,MAAMoB,gBAAA,GAAmBd,uBAAA,GAA0B;EAEnD,IAAI,CAACW,kBAAA,EAAoB;IACvB,OAAO;EACT;EAEA,MAAMI,KAAA,GAAQX,CAAA,CAAE;EAEhB,oBACEY,KAAA,CAACnC,KAAA,CAAMoC,QAAQ;4BACbD,KAAA,CAAC;MACCE,cAAA,EAAgBA,CAAA,KAAMX,UAAA,CAAW;MACjCY,cAAA,EAAgBA,CAAA,KAAMZ,UAAA,CAAW;MACjCa,KAAA,EAAO;QAAEC,QAAA,EAAU;MAAW;8BAE9BC,IAAA,CAACjC,MAAA;QACCkC,WAAA,EAAY;QACZ9B,QAAA,EAAUA,QAAA;QACV+B,IAAA,eAAMF,IAAA,CAACrC,YAAA;UAAawC,MAAA,EAAQ3B;;QAC5BJ,EAAA,EAAG;QACHgC,OAAA,EAASA,CAAA,KAAMvB,WAAA,CAAYU,UAAA;uBAE7BS,IAAA,CAAC/B,OAAA;QAAQoC,KAAA,EAAO;QAAGC,IAAA,EAAMtB,OAAA;kBACtBS;;QAGJb,WAAA,CAAYW,UAAA,kBACXS,IAAA,CAAChC,cAAA;MACCuC,WAAA,EAAa,CAACf,gBAAA,GAAmB,cAAc;MAC/CgB,gBAAA,EAAkB/B,sBAAA;MAClBgC,qBAAA,EACEtB,uBAAA,IACA,OAAOD,YAAA,CAAawB,QAAQ,CAACC,MAAM,CAACC,eAAe,KAAK,WACpD1B,YAAA,CAAawB,QAAQ,CAACC,MAAM,CAACC,eAAe,GAC5CC,SAAA;MAENC,IAAA,EAAMvB;;;AAKhB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useSelection","useTranslation","Button","SelectMany","props","onClick","count","selected","t","_jsxs","buttonStyle","size"],"sources":["../../../src/elements/SelectMany/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport { useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\n\nexport const SelectMany: React.FC<{\n onClick?: (ids: ReturnType<typeof useSelection>['selected']) => void\n}> = (props) => {\n const { onClick } = props\n\n const { count, selected } = useSelection()\n const { t } = useTranslation()\n\n if (!selected || !count) {\n return null\n }\n\n return (\n <Button\n buttonStyle=\"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useSelection","useTranslation","Button","SelectMany","props","onClick","count","selected","t","_jsxs","buttonStyle","size"],"sources":["../../../src/elements/SelectMany/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport { useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\n\nexport const SelectMany: React.FC<{\n onClick?: (ids: ReturnType<typeof useSelection>['selected']) => void\n}> = (props) => {\n const { onClick } = props\n\n const { count, selected } = useSelection()\n const { t } = useTranslation()\n\n if (!selected || !count) {\n return null\n }\n\n return (\n <Button\n buttonStyle=\"primary\"\n onClick={() => {\n if (typeof onClick === 'function') {\n onClick(selected)\n }\n }}\n size=\"medium\"\n >\n {t('general:select')} {count}\n </Button>\n )\n}\n"],"mappings":";AAAA,OAAOA,KAAA,MAAW;AAElB,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AAEvB,OAAO,MAAMC,UAAA,GAEPC,KAAA;EACJ,MAAM;IAAEC;EAAO,CAAE,GAAGD,KAAA;EAEpB,MAAM;IAAEE,KAAK;IAAEC;EAAQ,CAAE,GAAGP,YAAA;EAC5B,MAAM;IAAEQ;EAAC,CAAE,GAAGP,cAAA;EAEd,IAAI,CAACM,QAAA,IAAY,CAACD,KAAA,EAAO;IACvB,OAAO;EACT;EAEA,oBACEG,KAAA,CAACP,MAAA;IACCQ,WAAA,EAAY;IACZL,OAAA,EAASA,CAAA;MACP,IAAI,OAAOA,OAAA,KAAY,YAAY;QACjCA,OAAA,CAAQE,QAAA;MACV;IACF;IACAI,IAAA,EAAK;eAEJH,CAAA,CAAE,mBAAkB,KAAEF,KAAA;;AAG7B","ignoreList":[]}
|
|
@@ -48,15 +48,16 @@
|
|
|
48
48
|
padding-inline-end: var(--spacer-3);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
/* Linked cells: move padding to the anchor for full-cell clickability */
|
|
51
|
+
/* Linked cells: move padding to the anchor/button for full-cell clickability */
|
|
52
52
|
.cell--linked {
|
|
53
53
|
padding: 0;
|
|
54
54
|
|
|
55
|
-
> a {
|
|
55
|
+
> :is(a, button) {
|
|
56
56
|
display: flex;
|
|
57
57
|
align-items: center;
|
|
58
58
|
padding: var(--spacer-2) var(--spacer-2-5);
|
|
59
59
|
min-height: calc(var(--spacer-4) * 2);
|
|
60
|
+
cursor: pointer;
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
|
|
@@ -176,16 +177,17 @@
|
|
|
176
177
|
}
|
|
177
178
|
}
|
|
178
179
|
|
|
179
|
-
/* Linked cells: move padding to the anchor for full-cell clickability */
|
|
180
|
+
/* Linked cells: move padding to the anchor/button for full-cell clickability */
|
|
180
181
|
.cell--linked {
|
|
181
182
|
padding: 0;
|
|
182
183
|
|
|
183
|
-
> a {
|
|
184
|
+
> :is(a, button) {
|
|
184
185
|
padding: 0 var(--spacer-2-5);
|
|
185
186
|
min-height: var(--spacer-5);
|
|
187
|
+
cursor: pointer;
|
|
186
188
|
}
|
|
187
189
|
|
|
188
|
-
&:first-child > a {
|
|
190
|
+
&:first-child > :is(a, button) {
|
|
189
191
|
padding-inline-start: var(--spacer-2-5);
|
|
190
192
|
}
|
|
191
193
|
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
@layer payload-default {
|
|
2
|
+
.tabs__tabs-wrap {
|
|
3
|
+
overflow-x: auto;
|
|
4
|
+
overflow-y: hidden;
|
|
5
|
+
margin-bottom: var(--spacer-2);
|
|
6
|
+
position: relative;
|
|
7
|
+
padding-bottom: 2px;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.tabs__tabs {
|
|
11
|
+
display: inline-flex;
|
|
12
|
+
min-width: 100%;
|
|
13
|
+
vertical-align: bottom;
|
|
14
|
+
position: relative;
|
|
15
|
+
z-index: 1;
|
|
16
|
+
box-shadow: inset 0px -1px var(--color-border);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.tabs__tab-button {
|
|
20
|
+
appearance: none;
|
|
21
|
+
background: none;
|
|
22
|
+
border: none;
|
|
23
|
+
display: flex;
|
|
24
|
+
align-items: center;
|
|
25
|
+
justify-content: center;
|
|
26
|
+
gap: var(--spacer-1);
|
|
27
|
+
padding: var(--spacer-1) var(--spacer-2);
|
|
28
|
+
margin: 0;
|
|
29
|
+
margin-bottom: var(--spacer-2);
|
|
30
|
+
cursor: pointer;
|
|
31
|
+
position: relative;
|
|
32
|
+
white-space: nowrap;
|
|
33
|
+
flex-shrink: 0;
|
|
34
|
+
font-family: var(--text-body-medium-font-family);
|
|
35
|
+
font-size: var(--text-body-medium-font-size);
|
|
36
|
+
font-weight: var(--text-body-medium-font-weight);
|
|
37
|
+
line-height: var(--text-body-medium-line-height);
|
|
38
|
+
letter-spacing: var(--text-letter-spacing);
|
|
39
|
+
color: var(--color-text-secondary);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.tabs__tab-button:after {
|
|
43
|
+
content: '';
|
|
44
|
+
position: absolute;
|
|
45
|
+
left: var(--spacer-2);
|
|
46
|
+
right: var(--spacer-2);
|
|
47
|
+
bottom: calc(-1 * var(--spacer-2) - 1px);
|
|
48
|
+
height: 3px;
|
|
49
|
+
background: var(--color-icon-brand);
|
|
50
|
+
border-radius: var(--radius-full);
|
|
51
|
+
opacity: 0;
|
|
52
|
+
z-index: 1;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.tabs__tab-button:hover:after {
|
|
56
|
+
background: var(--color-bg-tertiary);
|
|
57
|
+
opacity: 1;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.tabs__tab-button:focus-visible {
|
|
61
|
+
outline-offset: -1px;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.tabs__tab-button--hidden {
|
|
65
|
+
display: none;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.tabs__tab-button--active {
|
|
69
|
+
font-weight: var(--text-body-medium-strong-font-weight);
|
|
70
|
+
color: var(--color-text);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.tabs__tab-button--active:after {
|
|
74
|
+
background: var(--color-icon-brand);
|
|
75
|
+
opacity: 1;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.tabs__tab-button--active:hover:after {
|
|
79
|
+
background: var(--color-icon-brand);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.tabs__tab-button--has-error {
|
|
83
|
+
color: var(--color-text-danger);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.tabs__tab-button--has-error:after {
|
|
87
|
+
background: var(--field-color-border-error);
|
|
88
|
+
opacity: 1;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.tabs__tab-button--has-error:hover:after {
|
|
92
|
+
background: var(--field-color-border-error);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@media (max-width: 768px) {
|
|
96
|
+
.tabs__tab-button {
|
|
97
|
+
padding-bottom: var(--spacer-2);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './index.css';
|
|
3
|
+
export type TabsTab<TValue extends string = string> = {
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
hidden?: boolean;
|
|
6
|
+
label: React.ReactNode;
|
|
7
|
+
value: TValue;
|
|
8
|
+
};
|
|
9
|
+
export type TabsProps<TValue extends string = string> = {
|
|
10
|
+
className?: string;
|
|
11
|
+
onChange: (value: TValue) => void;
|
|
12
|
+
tabs: TabsTab<TValue>[];
|
|
13
|
+
value: TValue;
|
|
14
|
+
};
|
|
15
|
+
export declare const Tabs: <TValue extends string = string>({ className, onChange, tabs, value, }: TabsProps<TValue>) => React.JSX.Element;
|
|
16
|
+
export declare const TabsList: React.FC<{
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
className?: string;
|
|
19
|
+
tabsClassName?: string;
|
|
20
|
+
tabsWrapClassName?: string;
|
|
21
|
+
}>;
|
|
22
|
+
export declare const TabButton: React.FC<{
|
|
23
|
+
children: React.ReactNode;
|
|
24
|
+
className?: string;
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
hasError?: boolean;
|
|
27
|
+
hidden?: boolean;
|
|
28
|
+
isActive?: boolean;
|
|
29
|
+
modifierClassName?: string;
|
|
30
|
+
onClick: () => void;
|
|
31
|
+
}>;
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Tabs/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,OAAO,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,SAAS,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,MAAM,SAAS,MAAM,GAAG,MAAM,EAAE,uCAKlD,SAAS,CAAC,MAAM,CAAC,sBAgBnB,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAaA,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAiCA,CAAA"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import './index.css';
|
|
6
|
+
const baseClass = 'tabs';
|
|
7
|
+
export const Tabs = ({
|
|
8
|
+
className,
|
|
9
|
+
onChange,
|
|
10
|
+
tabs,
|
|
11
|
+
value
|
|
12
|
+
}) => {
|
|
13
|
+
return /*#__PURE__*/_jsx(TabsList, {
|
|
14
|
+
className: className,
|
|
15
|
+
children: tabs.map(tab => /*#__PURE__*/_jsx(TabButton, {
|
|
16
|
+
disabled: tab.disabled,
|
|
17
|
+
hidden: tab.hidden,
|
|
18
|
+
isActive: tab.value === value,
|
|
19
|
+
onClick: () => onChange(tab.value),
|
|
20
|
+
children: tab.label
|
|
21
|
+
}, tab.value))
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
export const TabsList = ({
|
|
25
|
+
children,
|
|
26
|
+
className,
|
|
27
|
+
tabsClassName,
|
|
28
|
+
tabsWrapClassName
|
|
29
|
+
}) => {
|
|
30
|
+
return /*#__PURE__*/_jsx("div", {
|
|
31
|
+
className: [baseClass, className].filter(Boolean).join(' '),
|
|
32
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
33
|
+
className: [`${baseClass}__tabs-wrap`, tabsWrapClassName].filter(Boolean).join(' '),
|
|
34
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
35
|
+
className: [`${baseClass}__tabs`, tabsClassName].filter(Boolean).join(' '),
|
|
36
|
+
role: "tablist",
|
|
37
|
+
children: children
|
|
38
|
+
})
|
|
39
|
+
})
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
export const TabButton = ({
|
|
43
|
+
children,
|
|
44
|
+
className,
|
|
45
|
+
disabled,
|
|
46
|
+
hasError,
|
|
47
|
+
hidden,
|
|
48
|
+
isActive,
|
|
49
|
+
modifierClassName,
|
|
50
|
+
onClick
|
|
51
|
+
}) => {
|
|
52
|
+
return /*#__PURE__*/_jsx("button", {
|
|
53
|
+
"aria-selected": isActive,
|
|
54
|
+
className: [`${baseClass}__tab-button`, className, hasError && `${baseClass}__tab-button--has-error`, hasError && modifierClassName && `${modifierClassName}--has-error`, isActive && `${baseClass}__tab-button--active`, isActive && modifierClassName && `${modifierClassName}--active`, hidden && `${baseClass}__tab-button--hidden`, hidden && modifierClassName && `${modifierClassName}--hidden`].filter(Boolean).join(' '),
|
|
55
|
+
disabled: disabled,
|
|
56
|
+
onClick: onClick,
|
|
57
|
+
role: "tab",
|
|
58
|
+
type: "button",
|
|
59
|
+
children: children
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","baseClass","Tabs","className","onChange","tabs","value","_jsx","TabsList","map","tab","TabButton","disabled","hidden","isActive","onClick","label","children","tabsClassName","tabsWrapClassName","filter","Boolean","join","role","hasError","modifierClassName","type"],"sources":["../../../src/elements/Tabs/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport './index.css'\n\nconst baseClass = 'tabs'\n\nexport type TabsTab<TValue extends string = string> = {\n disabled?: boolean\n hidden?: boolean\n label: React.ReactNode\n value: TValue\n}\n\nexport type TabsProps<TValue extends string = string> = {\n className?: string\n onChange: (value: TValue) => void\n tabs: TabsTab<TValue>[]\n value: TValue\n}\n\nexport const Tabs = <TValue extends string = string>({\n className,\n onChange,\n tabs,\n value,\n}: TabsProps<TValue>) => {\n return (\n <TabsList className={className}>\n {tabs.map((tab) => (\n <TabButton\n disabled={tab.disabled}\n hidden={tab.hidden}\n isActive={tab.value === value}\n key={tab.value}\n onClick={() => onChange(tab.value)}\n >\n {tab.label}\n </TabButton>\n ))}\n </TabsList>\n )\n}\n\nexport const TabsList: React.FC<{\n children: React.ReactNode\n className?: string\n tabsClassName?: string\n tabsWrapClassName?: string\n}> = ({ children, className, tabsClassName, tabsWrapClassName }) => {\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <div className={[`${baseClass}__tabs-wrap`, tabsWrapClassName].filter(Boolean).join(' ')}>\n <div\n className={[`${baseClass}__tabs`, tabsClassName].filter(Boolean).join(' ')}\n role=\"tablist\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nexport const TabButton: React.FC<{\n children: React.ReactNode\n className?: string\n disabled?: boolean\n hasError?: boolean\n hidden?: boolean\n isActive?: boolean\n modifierClassName?: string\n onClick: () => void\n}> = ({\n children,\n className,\n disabled,\n hasError,\n hidden,\n isActive,\n modifierClassName,\n onClick,\n}) => {\n return (\n <button\n aria-selected={isActive}\n className={[\n `${baseClass}__tab-button`,\n className,\n hasError && `${baseClass}__tab-button--has-error`,\n hasError && modifierClassName && `${modifierClassName}--has-error`,\n isActive && `${baseClass}__tab-button--active`,\n isActive && modifierClassName && `${modifierClassName}--active`,\n hidden && `${baseClass}__tab-button--hidden`,\n hidden && modifierClassName && `${modifierClassName}--hidden`,\n ]\n .filter(Boolean)\n .join(' ')}\n disabled={disabled}\n onClick={onClick}\n role=\"tab\"\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,MAAW;AAElB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAgBlB,OAAO,MAAMC,IAAA,GAAOA,CAAiC;EACnDC,SAAS;EACTC,QAAQ;EACRC,IAAI;EACJC;AAAK,CACa;EAClB,oBACEC,IAAA,CAACC,QAAA;IAASL,SAAA,EAAWA,SAAA;cAClBE,IAAA,CAAKI,GAAG,CAAEC,GAAA,iBACTH,IAAA,CAACI,SAAA;MACCC,QAAA,EAAUF,GAAA,CAAIE,QAAQ;MACtBC,MAAA,EAAQH,GAAA,CAAIG,MAAM;MAClBC,QAAA,EAAUJ,GAAA,CAAIJ,KAAK,KAAKA,KAAA;MAExBS,OAAA,EAASA,CAAA,KAAMX,QAAA,CAASM,GAAA,CAAIJ,KAAK;gBAEhCI,GAAA,CAAIM;OAHAN,GAAA,CAAIJ,KAAK;;AAQxB;AAEA,OAAO,MAAME,QAAA,GAKRA,CAAC;EAAES,QAAQ;EAAEd,SAAS;EAAEe,aAAa;EAAEC;AAAiB,CAAE;EAC7D,oBACEZ,IAAA,CAAC;IAAIJ,SAAA,EAAW,CAACF,SAAA,EAAWE,SAAA,CAAU,CAACiB,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;cAC1D,aAAAf,IAAA,CAAC;MAAIJ,SAAA,EAAW,CAAC,GAAGF,SAAA,aAAsB,EAAEkB,iBAAA,CAAkB,CAACC,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;gBAClF,aAAAf,IAAA,CAAC;QACCJ,SAAA,EAAW,CAAC,GAAGF,SAAA,QAAiB,EAAEiB,aAAA,CAAc,CAACE,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;QACtEC,IAAA,EAAK;kBAEJN;;;;AAKX;AAEA,OAAO,MAAMN,SAAA,GASRA,CAAC;EACJM,QAAQ;EACRd,SAAS;EACTS,QAAQ;EACRY,QAAQ;EACRX,MAAM;EACNC,QAAQ;EACRW,iBAAiB;EACjBV;AAAO,CACR;EACC,oBACER,IAAA,CAAC;IACC,iBAAeO,QAAA;IACfX,SAAA,EAAW,CACT,GAAGF,SAAA,cAAuB,EAC1BE,SAAA,EACAqB,QAAA,IAAY,GAAGvB,SAAA,yBAAkC,EACjDuB,QAAA,IAAYC,iBAAA,IAAqB,GAAGA,iBAAA,aAA8B,EAClEX,QAAA,IAAY,GAAGb,SAAA,sBAA+B,EAC9Ca,QAAA,IAAYW,iBAAA,IAAqB,GAAGA,iBAAA,UAA2B,EAC/DZ,MAAA,IAAU,GAAGZ,SAAA,sBAA+B,EAC5CY,MAAA,IAAUY,iBAAA,IAAqB,GAAGA,iBAAA,UAA2B,CAC9D,CACEL,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;IACRV,QAAA,EAAUA,QAAA;IACVG,OAAA,EAASA,OAAA;IACTQ,IAAA,EAAK;IACLG,IAAA,EAAK;cAEJT;;AAGP","ignoreList":[]}
|