Події

Readmore.js генерує дві основні події: readmore:beforeToggle і readmore:afterToggle. Ці події можна слухати та використовувати для додавання кастомної логіки в процесі перемикання стану елемента.

readmore:beforeToggle

Ця подія викликається перед зміною стану елемента. Вона надає можливість налаштувати поведінку до того, як стан елемента буде змінено.


					element.addEventListener('readmore:beforeToggle', function(event) {
						// Приклад: змінюємо стиль кнопки перед перемиканням стану
						event.target.style.backgroundColor = 'gray';
					});
				

readmore:afterToggle

Ця подія викликається після зміни стану елемента. Вона дозволяє виконати дії одразу після зміни стану елемента.


					element.addEventListener('readmore:afterToggle', function(event) {
						// Приклад: змінюємо текст кнопки після перемикання стану
						const button = event.target;
						button.textContent = button.textContent === 'Читати далі' ? 'Сховати' : 'Читати далі';
					});
				

Зворотні виклики (Callbacks)

Readmore.js підтримує використання callback-функцій, які можна передати в параметрах конфігурації. Це дозволяє виконувати певні дії на різних етапах роботи плагіна.

Зворотні виклики beforeToggle та afterToggle отримують наступні аргументи: trigger, element і isExpanded.

  • trigger — елемент, який ініціює дію (наприклад, кнопка «Читати далі» або «Закрити»).
  • element — елемент, що містить контент, який згортається або розгортається.
  • isExpanded — значення, що вказує на стан контенту: (true — розгорнуто, false — згорнуто).

beforeToggle

Cпрацьовує до перемикання стану елемента. Він дозволяє виконати дії перед зміною стану.


					beforeToggle: function(trigger, element, isExpanded) {
						// Приклад: робимо елемент напівпрозорим перед перемиканням стану
						element.style.opacity = 0.5;
					}
				

afterToggle

Cпрацьовує після перемикання стану елемента. Він дозволяє повернути елемент у початковий стан після зміни.


					afterToggle: function(trigger, element, isExpanded) {
						// Приклад: відновлюємо непрозорість елемента після зміни стану
						element.style.opacity = 1;
					}
				

blockProcessed

Викликається після завершення обробки елемента, але до його відображення. Це корисно для виконання початкових налаштувань або аналізу.

Зворотний виклик blockProcessed отримує такі аргументи: element і isExpandable

  • element — поточний елемент, який обробляється.
  • isExpandable — логічне значення, що вказує, чи потрібне згортання.

					blockProcessed: function(element, isExpandable) {
						// Приклад: якщо елемент можна розгорнути, показуємо кнопку «Читати далі»
						if (isExpandable) {
							const button = element.querySelector('.cs_readmore-btn');
							if (button) {
								button.style.display = 'block';
							}
						} else {
							// Якщо елемент не можна розгорнути, ховаємо кнопку
							const button = element.querySelector('.cs_readmore-btn');
							if (button) {
								button.style.display = 'none';
							}
						}
					}
				

Приклад комплексного використання

Цей приклад демонструє використання callback-функцій для зміни зовнішнього вигляду та тексту кнопки залежно від стану елемента. У цьому прикладі показано, як можна змінити стиль кнопки до і після перемикання стану:


					initReadMore('.content', {
						beforeToggle: function(trigger, element, isExpanded) {
							// Приклад: змінюємо колір фону кнопки до перемикання стану
							trigger.style.backgroundColor = isExpanded ? '#90EE90' : '#FF7F7F';
						},
						afterToggle: function(trigger, element, isExpanded) {
							// Приклад: оновлюємо текст кнопки після перемикання стану
							trigger.textContent = isExpanded ? 'Сховати' : 'Читати далі';
						},
						blockProcessed: function(element, isExpandable) {
							// Приклад: додаємо клас, якщо елемент можна розгорнути
							if (isExpandable) {
								element.classList.add('expandable');
							}
						}
					});