PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.9
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.9
4.4.9 4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 4.1.7.3.2 All 140 releases
← All changes | assets/js/dist/admin/admin-orders.js +153 -30 4.4.4 → 4.4.9 View file →
@@ -138,8 +138,9 @@
138 138 __webpack_require__.r(__webpack_exports__);
139 139 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
140 140 /* harmony export */ debounce: () => (/* binding */ debounce),
141 141 /* harmony export */ eventHandlers: () => (/* binding */ eventHandlers),
142 +/* harmony export */ fullScreenView: () => (/* binding */ fullScreenView),
142 143 /* harmony export */ getDataOfForm: () => (/* binding */ getDataOfForm),
143 144 /* harmony export */ getFieldKeysOfForm: () => (/* binding */ getFieldKeysOfForm),
144 145 /* harmony export */ listenElementCreated: () => (/* binding */ listenElementCreated),
145 146 /* harmony export */ listenElementViewed: () => (/* binding */ listenElementViewed),
@@ -151,9 +152,10 @@
151 152 /* harmony export */ lpOnElementReady: () => (/* binding */ lpOnElementReady),
152 153 /* harmony export */ lpSetLoadingEl: () => (/* binding */ lpSetLoadingEl),
153 154 /* harmony export */ lpShowHideEl: () => (/* binding */ lpShowHideEl),
154 155 /* harmony export */ mergeDataWithDatForm: () => (/* binding */ mergeDataWithDatForm),
155 -/* harmony export */ toggleCollapse: () => (/* binding */ toggleCollapse)
156 +/* harmony export */ toggleCollapse: () => (/* binding */ toggleCollapse),
157 +/* harmony export */ toggleEnable: () => (/* binding */ toggleEnable)
156 158 /* harmony export */ });
157 159 /**
158 160 * Utils functions
159 161 *
@@ -160,9 +162,9 @@
160 162 * @param url
161 163 * @param data
162 164 * @param functions
163 165 * @since 4.2.5.1
164 - * @version 1.0.6
166 + * @version 1.0.7
165 167 */
166 168 const lpClassName = {
167 169 hidden: 'lp-hidden',
168 170 loading: 'loading',
@@ -167,9 +169,12 @@
167 169 hidden: 'lp-hidden',
168 170 loading: 'loading',
169 171 elCollapse: 'lp-collapse',
170 172 elSectionToggle: '.lp-section-toggle',
171 - elTriggerToggle: '.lp-trigger-toggle'
173 + elTriggerToggle: '.lp-trigger-toggle',
174 + elBtnFullScreen: '.lp-btn-full-screen-view',
175 + elFullScreen: 'lp-full-screen-view',
176 + elBtnFullScreenClose: 'lp-full-screen-view__close'
172 177 };
173 178 const lpFetchAPI = (url, data = {}, functions = {}) => {
174 179 if ('function' === typeof functions.before) {
175 180 functions.before();
@@ -487,8 +492,141 @@
487 492 timer = setTimeout(() => func(args), wait);
488 493 };
489 494 };
490 495
496 +/**
497 + * Initialize lp-toggle-enable components.
498 + *
499 + * Finds all `.lp-toggle-enable` elements and wires up toggle behavior.
500 + * Reads initial state from `data-enabled` attribute ("true"/"false").
501 + * Calls `data-on-toggle` callback (if provided via options) on state change.
502 + *
503 + * HTML structure:
504 + * <label class="lp-toggle-enable" data-enabled="true">
505 + * <input type="checkbox" class="lp-toggle-enable__input" />
506 + * <span class="lp-toggle-enable__track"></span>
507 + * </label>
508 + *
509 + * @param {string} selector CSS selector for toggle elements (default: '.lp-toggle-enable')
510 + * @param {Function} onToggle Optional callback( el, isEnabled ) called on state change
511 + * @since 4.4.5
512 + * @version 1.0.0
513 + */
514 +window.lpToggleEnableInit = 0;
515 +const toggleEnable = (onToggle = null) => {
516 + if (window.lpToggleEnableInit) {
517 + return;
518 + }
519 + window.lpToggleEnableInit = 1;
520 + const selector = '.lp-toggle-enable';
521 + const updateUI = (toggle, isEnabled) => {
522 + toggle.classList.toggle('is-enabled', isEnabled);
523 + const input = toggle.querySelector('.lp-toggle-enable__input');
524 + if (input) {
525 + input.checked = isEnabled;
526 + input.value = isEnabled ? '1' : '0';
527 + }
528 + };
529 +
530 + // Delegate click handling via eventHandlers.
531 + eventHandlers('click', [{
532 + selector,
533 + callBack: args => {
534 + const {
535 + e,
536 + target
537 + } = args;
538 + const toggle = target.closest(selector);
539 + if (!toggle || toggle.classList.contains('is-disabled')) {
540 + return;
541 + }
542 + e.preventDefault();
543 + const isEnabled = !toggle.classList.contains('is-enabled');
544 + updateUI(toggle, isEnabled);
545 + if ('function' === typeof onToggle) {
546 + onToggle(toggle, isEnabled);
547 + }
548 + }
549 + }]);
550 +};
551 +
552 +/**
553 + * Initialize custom fullscreen view buttons.
554 + *
555 + * Delegates clicks on `.lp-btn-full-screen-view` buttons to
556 + * `lpToggleFullscreenView`. Reads the `data-target` attribute to find the
557 + * target element. Falls back to the button's parent element when
558 + * `data-target` is not provided.
559 + *
560 + * @since 4.4.5
561 + * @version 1.0.0
562 + */
563 +window.lpFullScreenViewInit = 0;
564 +const fullScreenView = () => {
565 + if (window.lpFullScreenViewInit) {
566 + return;
567 + }
568 + window.lpFullScreenViewInit = 1;
569 + let lastScrollY = 0;
570 + const lpToggleFullscreenView = (elTarget, elBtnFullScreen = null) => {
571 + const isFullscreen = elTarget.classList.contains(lpClassName.elFullScreen);
572 + if (isFullscreen) {
573 + elTarget.classList.remove(lpClassName.elFullScreen);
574 + document.documentElement.classList.remove('lp-full-screen-active');
575 + window.scrollTo(0, lastScrollY);
576 + } else {
577 + lastScrollY = window.scrollY;
578 + elTarget.classList.add(lpClassName.elFullScreen);
579 + document.documentElement.classList.add('lp-full-screen-active');
580 + }
581 + if (!isFullscreen) {
582 + if (!elTarget.querySelector(`.${lpClassName.elBtnFullScreenClose}`)) {
583 + const closeButton = document.createElement('button');
584 + closeButton.type = 'button';
585 + closeButton.className = lpClassName.elBtnFullScreenClose;
586 + closeButton.setAttribute('aria-label', 'Close');
587 + closeButton.innerHTML = lpData.i18n.closeButtonFullScreen || 'Close &times;';
588 + closeButton.addEventListener('click', e => {
589 + e.preventDefault();
590 + lpToggleFullscreenView(elTarget);
591 + });
592 + elTarget.appendChild(closeButton);
593 + }
594 + } else {
595 + const closeButton = elTarget.querySelector(`.${lpClassName.elBtnFullScreenClose}`);
596 + if (closeButton) {
597 + closeButton.remove();
598 + }
599 + }
600 + };
601 + eventHandlers('click', [{
602 + selector: lpClassName.elBtnFullScreen,
603 + callBack: args => {
604 + const {
605 + e,
606 + target
607 + } = args;
608 + const elBtnFullScreen = target.closest(lpClassName.elBtnFullScreen);
609 + if (!elBtnFullScreen) {
610 + console.log('No full screen button found');
611 + return;
612 + }
613 + e.preventDefault();
614 + let elTarget = null;
615 + const targetSelector = elBtnFullScreen.dataset.targetFullscreen;
616 + console.log(targetSelector);
617 + if (targetSelector) {
618 + elTarget = document.querySelector(targetSelector);
619 + }
620 + if (!elTarget) {
621 + console.log('No target element found');
622 + return;
623 + }
624 + lpToggleFullscreenView(elTarget, elBtnFullScreen);
625 + }
626 + }]);
627 +};
628 +
491 629 /***/ },
492 630
493 631 /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/toastify-js/src/toastify.css"
494 632 /*!*****************************************************************************************!*\
@@ -1508,19 +1646,19 @@
1508 1646
1509 1647 /******/ });
1510 1648 /************************************************************************/
1511 1649 /******/ // The module cache
1512 -/******/ const __webpack_module_cache__ = {};
1650 +/******/ var __webpack_module_cache__ = {};
1513 1651 /******/
1514 1652 /******/ // The require function
1515 1653 /******/ function __webpack_require__(moduleId) {
1516 1654 /******/ // Check if module is in cache
1517 -/******/ const cachedModule = __webpack_module_cache__[moduleId];
1655 +/******/ var cachedModule = __webpack_module_cache__[moduleId];
1518 1656 /******/ if (cachedModule !== undefined) {
1519 1657 /******/ return cachedModule.exports;
1520 1658 /******/ }
1521 1659 /******/ // Create a new module (and put it into the cache)
1522 -/******/ const module = __webpack_module_cache__[moduleId] = {
1660 +/******/ var module = __webpack_module_cache__[moduleId] = {
1523 1661 /******/ id: moduleId,
1524 1662 /******/ // no module.loaded needed
1525 1663 /******/ exports: {}
1526 1664 /******/ };
@@ -1527,9 +1665,9 @@
1527 1665 /******/
1528 1666 /******/ // Execute the module function
1529 1667 /******/ if (!(moduleId in __webpack_modules__)) {
1530 1668 /******/ delete __webpack_module_cache__[moduleId];
1531 -/******/ const e = new Error("Cannot find module '" + moduleId + "'");
1669 +/******/ var e = new Error("Cannot find module '" + moduleId + "'");
1532 1670 /******/ e.code = 'MODULE_NOT_FOUND';
1533 1671 /******/ throw e;
1534 1672 /******/ }
1535 1673 /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
@@ -1542,9 +1680,9 @@
1542 1680 /******/ /* webpack/runtime/compat get default export */
1543 1681 /******/ (() => {
1544 1682 /******/ // getDefaultExport function for compatibility with non-harmony modules
1545 1683 /******/ __webpack_require__.n = (module) => {
1546 -/******/ const getter = module && module.__esModule ?
1684 +/******/ var getter = module && module.__esModule ?
1547 1685 /******/ () => (module['default']) :
1548 1686 /******/ () => (module);
1549 1687 /******/ __webpack_require__.d(getter, { a: getter });
1550 1688 /******/ return getter;
@@ -1552,29 +1690,14 @@
1552 1690 /******/ })();
1553 1691 /******/
1554 1692 /******/ /* webpack/runtime/define property getters */
1555 1693 /******/ (() => {
1556 -/******/ // define getter/value functions for harmony exports
1694 +/******/ // define getter functions for harmony exports
1557 1695 /******/ __webpack_require__.d = (exports, definition) => {
1558 -/******/ if(Array.isArray(definition)) {
1559 -/******/ var i = 0;
1560 -/******/ while(i < definition.length) {
1561 -/******/ var key = definition[i++];
1562 -/******/ var binding = definition[i++];
1563 -/******/ if(!__webpack_require__.o(exports, key)) {
1564 -/******/ if(binding === 0) {
1565 -/******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
1566 -/******/ } else {
1567 -/******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
1568 -/******/ }
1569 -/******/ } else if(binding === 0) { i++; }
1696 +/******/ for(var key in definition) {
1697 +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1698 +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1570 1699 /******/ }
1571 -/******/ } else {
1572 -/******/ for(var key in definition) {
1573 -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1574 -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1575 -/******/ }
1576 -/******/ }
1577 1700 /******/ }
1578 1701 /******/ };
1579 1702 /******/ })();
1580 1703 /******/
@@ -1579,9 +1702,9 @@
1579 1702 /******/ })();
1580 1703 /******/
1581 1704 /******/ /* webpack/runtime/hasOwnProperty shorthand */
1582 1705 /******/ (() => {
1583 -/******/ __webpack_require__.o = (obj, prop) => (Object.hasOwn(obj, prop))
1706 +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
1584 1707 /******/ })();
1585 1708 /******/
1586 1709 /******/ /* webpack/runtime/make namespace object */
1587 1710 /******/ (() => {
@@ -1586,9 +1709,9 @@
1586 1709 /******/ /* webpack/runtime/make namespace object */
1587 1710 /******/ (() => {
1588 1711 /******/ // define __esModule on exports
1589 1712 /******/ __webpack_require__.r = (exports) => {
1590 -/******/ if(Symbol.toStringTag) {
1713 +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
1591 1714 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1592 1715 /******/ }
1593 1716 /******/ Object.defineProperty(exports, '__esModule', { value: true });
1594 1717 /******/ };
@@ -1599,9 +1722,9 @@
1599 1722 /******/ __webpack_require__.nc = undefined;
1600 1723 /******/ })();
1601 1724 /******/
1602 1725 /************************************************************************/
1603 -let __webpack_exports__ = {};
1726 +var __webpack_exports__ = {};
1604 1727 // This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
1605 1728 (() => {
1606 1729 "use strict";
1607 1730 /*!*********************************************!*\