diff --git a/assets/js/src/core/modules/element/export-api-slice.gen.ts b/assets/js/src/core/modules/element/export-api-slice.gen.ts index fad517084d..658133abcc 100644 --- a/assets/js/src/core/modules/element/export-api-slice.gen.ts +++ b/assets/js/src/core/modules/element/export-api-slice.gen.ts @@ -192,6 +192,7 @@ export type ExportXlsxApiArg = { | "string" | "bool" | "items_to_restore"; + sheetName?: string; }; elementType?: "data-object" | "object" | "asset" | "document"; classId?: string | null; @@ -234,6 +235,7 @@ export type ExportXlsxFolderApiArg = { | "string" | "bool" | "items_to_restore"; + sheetName?: string; }; elementType?: "data-object" | "object" | "asset" | "document"; classId?: string | null; diff --git a/assets/js/src/core/modules/element/listing/batch-actions/xlsx-modal/create-xlsx-form/create-xlsx-form.tsx b/assets/js/src/core/modules/element/listing/batch-actions/xlsx-modal/create-xlsx-form/create-xlsx-form.tsx index 7d1b888188..a701cbecd2 100644 --- a/assets/js/src/core/modules/element/listing/batch-actions/xlsx-modal/create-xlsx-form/create-xlsx-form.tsx +++ b/assets/js/src/core/modules/element/listing/batch-actions/xlsx-modal/create-xlsx-form/create-xlsx-form.tsx @@ -12,9 +12,11 @@ import React from 'react' import { useTranslation } from 'react-i18next' import { Form, type FormProps } from '@Pimcore/components/form/form' import { Select } from '@Pimcore/components/select/select' +import { Input } from '@Pimcore/components/input/input' export interface XLSXFormValues { header: 'name' | 'title' | 'no_header' + sheetName: string } export interface CreateXLSXFormProps extends FormProps {} @@ -42,6 +44,14 @@ export const CreateXLSXForm = ({ ...props }: CreateXLSXFormProps): React.JSX.Ele } /> + + + + ) } diff --git a/assets/js/src/core/modules/element/listing/batch-actions/xlsx-modal/xlsx-modal.tsx b/assets/js/src/core/modules/element/listing/batch-actions/xlsx-modal/xlsx-modal.tsx index a81034dbb9..d0ce5902da 100644 --- a/assets/js/src/core/modules/element/listing/batch-actions/xlsx-modal/xlsx-modal.tsx +++ b/assets/js/src/core/modules/element/listing/batch-actions/xlsx-modal/xlsx-modal.tsx @@ -49,7 +49,8 @@ export const XlsxModal = (props: XlsxModalProps): React.JSX.Element => { const classDefinitionSelection = useClassDefinitionSelection(true) const selectedClassDefinition = classDefinitionSelection?.selectedClassDefinition const initialFormValues: XLSXFormValues = { - header: 'name' + header: 'name', + sheetName: 'Sheet1' } const { t } = useTranslation() @@ -110,13 +111,13 @@ export const XlsxModal = (props: XlsxModalProps): React.JSX.Element => { function onFinish (values: XLSXFormValues): void { const isFolderExport = numberedSelectedRows.length === 0 - const job = new XlsxDownloadJob({ action: async () => await getDownloadAction(values.header), isFolderExport }) + const job = new XlsxDownloadJob({ action: async () => await getDownloadAction(values.header, values.sheetName), isFolderExport }) void executionEngine.runJob(job) props.setOpen(false) } - async function getDownloadAction (header: XLSXFormValues['header']): Promise { + async function getDownloadAction (header: XLSXFormValues['header'], sheetName: XLSXFormValues['sheetName']): Promise { const extractedColumnsFromColumnArg: GridColumnRequest[] = [] const columns = getArgs()?.body?.columns ?? [] @@ -148,7 +149,8 @@ export const XlsxModal = (props: XlsxModalProps): React.JSX.Element => { elementType, columns: extractedColumnsFromColumnArg, config: { - header + header, + sheetName }, filters: { ...filters @@ -167,7 +169,8 @@ export const XlsxModal = (props: XlsxModalProps): React.JSX.Element => { elementType, columns: extractedColumnsFromColumnArg, config: { - header + header, + sheetName }, ...(!isNil(selectedClassDefinition?.id) && { classId: selectedClassDefinition.id }) } diff --git a/translations/studio.en.yaml b/translations/studio.en.yaml index 0de336f8d2..7946e9ef47 100644 --- a/translations/studio.en.yaml +++ b/translations/studio.en.yaml @@ -991,7 +991,7 @@ lazy-loading: Lazy Loading disallow-add-remove: Disallow Add / Remove disallow-reorder: Disallow Reorder css-style: CSS Style -css-style-tooltip: "Inline CSS applied to the body, e.g. \"float: left; margin: 10px;\". Invalid declarations are ignored." +css-style-tooltip: 'Inline CSS applied to the body, e.g. "float: left; margin: 10px;". Invalid declarations are ignored.' collapsible: Collapsible collapsed: Initially Collapsed border: Border @@ -1099,6 +1099,7 @@ export-xlsx-form.form-field.header: Header export-xlsx-form.form-field.header.option.name: System key export-xlsx-form.form-field.header.option.title: Label export-xlsx-form.form-field.header.option.no-header: No header +export-xlsx-form.form-field.sheet-name: Sheet name form.validation.required: This field is required form.validation.max-length: The maximum length for this field is {{max}} characters form.validation.min: The minimum value is {{min}} @@ -1908,18 +1909,18 @@ classification-store.tabs.groups: Groups classification-store.tabs.keys: Keys classification-store.add-store: Add store classification-store.rename-store: Rename store -classification-store.delete-store: "Delete store \"{{storeName}}\"?" +classification-store.delete-store: 'Delete store "{{storeName}}"?' classification-store.add-group: Add group classification-store.rename-group: Rename group -classification-store.delete-group: "Delete group \"{{groupName}}\"?" +classification-store.delete-group: 'Delete group "{{groupName}}"?' classification-store.add-collection: Add collection classification-store.rename-collection: Rename collection -classification-store.delete-collection: "Delete collection \"{{collectionName}}\"?" +classification-store.delete-collection: 'Delete collection "{{collectionName}}"?' classification-store.add-key: Add key classification-store.rename-key: Rename key -classification-store.delete-key: "Delete key \"{{keyName}}\"?" -classification-store.delete-key-relation: "Remove key \"{{keyName}}\" from this group?" -classification-store.delete-group-relation: "Remove group \"{{groupName}}\" from this collection?" +classification-store.delete-key: 'Delete key "{{keyName}}"?' +classification-store.delete-key-relation: 'Remove key "{{keyName}}" from this group?' +classification-store.delete-group-relation: 'Remove group "{{groupName}}" from this collection?' classification-store.edit-definition: Edit definition classification-store.edit-key-definition: "Edit key definition: {{keyName}}" classification-store.columns.id: ID