/** * Copyright since 2007 PrestaShop SA and Contributors * PrestaShop is an International Registered Trademark & Property of PrestaShop SA * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/OSL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to https://devdocs.prestashop.com/ for more information. * * @author PrestaShop SA and Contributors * @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ const combinationListId = '#combination_list'; export default { productForm: 'form[name=product]', productTypeSelector: '#product_header_type', productType: { STANDARD: 'standard', PACK: 'pack', VIRTUAL: 'virtual', COMBINATIONS: 'combinations', }, invalidField: '.is-invalid', productFormSubmitButton: '.product-form-save-button', navigationBar: '#form-nav', dropzoneImagesContainer: '.product-image-dropzone', featureValues: { collectionContainer: '.feature-values-collection', collectionRowsContainer: '.feature-values-collection > .col-sm', collectionRow: 'div.row.product-feature', featureSelect: 'select.feature-selector', featureValueSelect: 'select.feature-value-selector', customValueInput: '.custom-values input', customFeatureIdInput: 'input.custom-value-id', deleteFeatureValue: 'button.delete-feature-value', addFeatureValue: '.feature-value-add-button', }, customizations: { customizationsContainer: '.product-customizations-collection', customizationFieldsList: '.product-customizations-collection ul', addCustomizationBtn: '.add-customization-btn', removeCustomizationBtn: '.remove-customization-btn', customizationFieldRow: '.customization-field-row', }, combinations: { navigationTab: '#combinations-tab-nav', externalCombinationTab: '#external-combination-tab', preloader: '#combinations-preloader', emptyState: '#combinations-empty-state', combinationsPaginatedList: '#combinations-paginated-list', combinationsContainer: `${combinationListId}`, combinationsFiltersContainer: '#combinations_filters', combinationsGeneratorContainer: '#product_combinations_generator', combinationsTable: `${combinationListId} table`, combinationsTableBody: `${combinationListId} table tbody`, combinationIdInputsSelector: '.combination-id-input', isDefaultInputsSelector: '.combination-is-default-input', removeCombinationSelector: '.remove-combination-item', combinationName: 'form .card-header span', paginationContainer: '#combinations-pagination', loadingSpinner: '#productCombinationsLoading', quantityInputWrapper: '.combination-quantity', impactOnPriceInputWrapper: '.combination-impact-on-price', referenceInputWrapper: '.combination-reference', sortableColumns: '.ps-sortable-column', combinationItemForm: { quantityKey: 'combination_item[quantity][value]', impactOnPriceKey: 'combination_item[impact_on_price][value]', referenceKey: 'combination_item[reference][value]', tokenKey: 'combination_item[_token]', }, editionForm: 'form[name="combination_form"]', editionFormInputs: // eslint-disable-next-line 'form[name="combination_form"] input, form[name="combination_form"] textarea, form[name="combination_form"] select', editCombinationButtons: '.edit-combination-item', tableRow: { combinationImg: '.combination-image', combinationCheckbox: (rowIndex) => `${combinationListId}_combinations_${rowIndex}_is_selected`, combinationIdInput: (rowIndex) => `${combinationListId}_combinations_${rowIndex}_combination_id`, combinationNameInput: (rowIndex) => `${combinationListId}_combinations_${rowIndex}_name`, referenceInput: (rowIndex) => `${combinationListId}_combinations_${rowIndex}_reference_value`, impactOnPriceInput: (rowIndex) => `${combinationListId}_combinations_${rowIndex}_impact_on_price_value`, finalPriceTeInput: (rowIndex) => `${combinationListId}_combinations_${rowIndex}_final_price_te`, quantityInput: (rowIndex) => `${combinationListId}_combinations_${rowIndex}_quantity_value`, isDefaultInput: (rowIndex) => `${combinationListId}_combinations_${rowIndex}_is_default`, editButton: (rowIndex) => `${combinationListId}_combinations_${rowIndex}_edit`, deleteButton: (rowIndex) => `${combinationListId}_combinations_${rowIndex}_delete`, }, editModal: '#combination-edit-modal', images: { selectorContainer: '.combination-images-selector', imageChoice: '.combination-image-choice', checkboxContainer: '.form-check', checkbox: 'input[type=checkbox]', }, scrollBar: '.attributes-list-overflow', searchInput: '#product-combinations-generate .attributes-search', generateCombinationsButton: '.generate-combinations-button', }, virtualProduct: { container: '.virtual-product-file-container', fileContentContainer: '.virtual-product-file-content', }, dropzone: { configuration: { fileManager: '.openfilemanager', }, photoswipe: { element: '.pswp', }, dzTemplate: '.dz-template', dzPreview: '.dz-preview', sortableContainer: '#product-images-dropzone', sortableItems: 'div.dz-preview:not(.disabled)', dropzoneContainer: '.dropzone-container', checkbox: '.md-checkbox input', shownTooltips: '.tooltip.show', savedImageContainer: (imageId) => `.dz-preview[data-id="${imageId}"]`, savedImage: (imageId) => `.dz-preview[data-id="${imageId}"] img`, coveredPreview: '.dz-preview.is-cover', windowFileManager: '.dropzone-window-filemanager', }, suppliers: { productSuppliers: '#product_options_suppliers', combinationSuppliers: '#combination_form_suppliers', }, seo: { container: '#product_seo_serp', defaultTitle: '.serp-default-title:input', watchedTitle: '.serp-watched-title:input', defaultDescription: '.serp-default-description', watchedDescription: '.serp-watched-description', watchedMetaUrl: '.serp-watched-url:input', redirectOption: { typeInput: '#product_seo_redirect_option_type', targetInput: '#product_seo_redirect_option_target', }, }, jsTabs: '.js-tabs', jsArrow: '.js-arrow', jsNavTabs: '.js-nav-tabs', toggleTab: '[data-toggle="tab"]', formContentTab: '#form_content > .form-contenttab', leftArrow: '.left-arrow', rightArrow: '.right-arrow', footer: { previewUrlButton: '.preview-url-button', deleteProductButton: '.delete-product-button', }, categories: { categoriesContainer: '.js-categories-container', categoryTree: '.js-categories-tree', treeElement: '.category-tree-element', treeElementInputs: '.category-tree-inputs', checkboxInput: '[type=checkbox]', checkedCheckboxInputs: '[type=checkbox]:checked', checkboxName: (categoryId) => `product[categories][product_categories][${categoryId}][is_associated]`, materialCheckbox: '.md-checkbox', radioInput: '[type=radio]', defaultRadioInput: '[type=radio]:checked', radioName: (categoryId) => `product[categories][product_categories][${categoryId}][is_default]`, tagsContainer: '#categories-tags-container', searchInput: '#ps-select-product-category', fieldset: '.tree-fieldset', loader: '.categories-tree-loader', childrenList: '.children-list', everyItems: '.less, .more', expandAllButton: '#categories-tree-expand', reduceAllButton: '#categories-tree-reduce', }, modules: { previewContainer: '.module-render-container.all-modules', previewButton: '.modules-list-button', selectorContainer: '.module-selection', moduleSelector: '.modules-list-select', selectorPreviews: '.module-selection .module-render-container', selectorPreview: (moduleId) => `.module-selection .module-render-container.${moduleId}`, contentContainer: '.module-contents', moduleContents: '.module-contents .module-render-container', moduleContent: (moduleId) => `.module-contents .module-render-container.${moduleId}`, }, };