@keenthemes/ktui 1.2.3 → 1.2.4
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/ktui.js +1681 -957
- package/dist/ktui.min.js +1 -1
- package/dist/ktui.min.js.map +1 -1
- package/dist/styles.css +110 -1
- package/lib/cjs/components/context-menu/context-menu.d.ts +66 -0
- package/lib/cjs/components/context-menu/context-menu.d.ts.map +1 -0
- package/lib/cjs/components/context-menu/context-menu.js +423 -0
- package/lib/cjs/components/context-menu/context-menu.js.map +1 -0
- package/lib/cjs/components/context-menu/index.d.ts +7 -0
- package/lib/cjs/components/context-menu/index.d.ts.map +1 -0
- package/lib/cjs/components/context-menu/index.js +10 -0
- package/lib/cjs/components/context-menu/index.js.map +1 -0
- package/lib/cjs/components/context-menu/types.d.ts +30 -0
- package/lib/cjs/components/context-menu/types.d.ts.map +1 -0
- package/lib/cjs/components/context-menu/types.js +7 -0
- package/lib/cjs/components/context-menu/types.js.map +1 -0
- package/lib/cjs/components/datatable/datatable-contracts.d.ts +66 -0
- package/lib/cjs/components/datatable/datatable-contracts.d.ts.map +1 -0
- package/lib/cjs/components/datatable/datatable-contracts.js +7 -0
- package/lib/cjs/components/datatable/datatable-contracts.js.map +1 -0
- package/lib/cjs/components/datatable/datatable-event-adapter.d.ts +7 -0
- package/lib/cjs/components/datatable/datatable-event-adapter.d.ts.map +1 -0
- package/lib/cjs/components/datatable/datatable-event-adapter.js +16 -0
- package/lib/cjs/components/datatable/datatable-event-adapter.js.map +1 -0
- package/lib/cjs/components/datatable/datatable-local-provider.d.ts +25 -0
- package/lib/cjs/components/datatable/datatable-local-provider.d.ts.map +1 -0
- package/lib/cjs/components/datatable/datatable-local-provider.js +184 -0
- package/lib/cjs/components/datatable/datatable-local-provider.js.map +1 -0
- package/lib/cjs/components/datatable/datatable-pagination-renderer.d.ts +15 -0
- package/lib/cjs/components/datatable/datatable-pagination-renderer.d.ts.map +1 -0
- package/lib/cjs/components/datatable/datatable-pagination-renderer.js +128 -0
- package/lib/cjs/components/datatable/datatable-pagination-renderer.js.map +1 -0
- package/lib/cjs/components/datatable/datatable-remote-provider.d.ts +25 -0
- package/lib/cjs/components/datatable/datatable-remote-provider.d.ts.map +1 -0
- package/lib/cjs/components/datatable/datatable-remote-provider.js +188 -0
- package/lib/cjs/components/datatable/datatable-remote-provider.js.map +1 -0
- package/lib/cjs/components/datatable/datatable-state-store.d.ts +21 -0
- package/lib/cjs/components/datatable/datatable-state-store.d.ts.map +1 -0
- package/lib/cjs/components/datatable/datatable-state-store.js +81 -0
- package/lib/cjs/components/datatable/datatable-state-store.js.map +1 -0
- package/lib/cjs/components/datatable/datatable-table-renderer.d.ts +16 -0
- package/lib/cjs/components/datatable/datatable-table-renderer.d.ts.map +1 -0
- package/lib/cjs/components/datatable/datatable-table-renderer.js +133 -0
- package/lib/cjs/components/datatable/datatable-table-renderer.js.map +1 -0
- package/lib/cjs/components/datatable/datatable.d.ts +9 -87
- package/lib/cjs/components/datatable/datatable.d.ts.map +1 -1
- package/lib/cjs/components/datatable/datatable.js +114 -686
- package/lib/cjs/components/datatable/datatable.js.map +1 -1
- package/lib/cjs/components/select/index.d.ts +1 -1
- package/lib/cjs/components/select/index.d.ts.map +1 -1
- package/lib/cjs/index.d.ts +5 -1
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +7 -7
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/init-all.d.ts +6 -0
- package/lib/cjs/init-all.d.ts.map +1 -0
- package/lib/cjs/init-all.js +17 -0
- package/lib/cjs/init-all.js.map +1 -0
- package/lib/cjs/legacy.d.ts +8 -0
- package/lib/cjs/legacy.d.ts.map +1 -0
- package/lib/cjs/legacy.js +26 -0
- package/lib/cjs/legacy.js.map +1 -0
- package/lib/esm/components/context-menu/context-menu.d.ts +66 -0
- package/lib/esm/components/context-menu/context-menu.d.ts.map +1 -0
- package/lib/esm/components/context-menu/context-menu.js +420 -0
- package/lib/esm/components/context-menu/context-menu.js.map +1 -0
- package/lib/esm/components/context-menu/index.d.ts +7 -0
- package/lib/esm/components/context-menu/index.d.ts.map +1 -0
- package/lib/esm/components/context-menu/index.js +6 -0
- package/lib/esm/components/context-menu/index.js.map +1 -0
- package/lib/esm/components/context-menu/types.d.ts +30 -0
- package/lib/esm/components/context-menu/types.d.ts.map +1 -0
- package/lib/esm/components/context-menu/types.js +6 -0
- package/lib/esm/components/context-menu/types.js.map +1 -0
- package/lib/esm/components/datatable/datatable-contracts.d.ts +66 -0
- package/lib/esm/components/datatable/datatable-contracts.d.ts.map +1 -0
- package/lib/esm/components/datatable/datatable-contracts.js +6 -0
- package/lib/esm/components/datatable/datatable-contracts.js.map +1 -0
- package/lib/esm/components/datatable/datatable-event-adapter.d.ts +7 -0
- package/lib/esm/components/datatable/datatable-event-adapter.d.ts.map +1 -0
- package/lib/esm/components/datatable/datatable-event-adapter.js +13 -0
- package/lib/esm/components/datatable/datatable-event-adapter.js.map +1 -0
- package/lib/esm/components/datatable/datatable-local-provider.d.ts +25 -0
- package/lib/esm/components/datatable/datatable-local-provider.d.ts.map +1 -0
- package/lib/esm/components/datatable/datatable-local-provider.js +181 -0
- package/lib/esm/components/datatable/datatable-local-provider.js.map +1 -0
- package/lib/esm/components/datatable/datatable-pagination-renderer.d.ts +15 -0
- package/lib/esm/components/datatable/datatable-pagination-renderer.d.ts.map +1 -0
- package/lib/esm/components/datatable/datatable-pagination-renderer.js +125 -0
- package/lib/esm/components/datatable/datatable-pagination-renderer.js.map +1 -0
- package/lib/esm/components/datatable/datatable-remote-provider.d.ts +25 -0
- package/lib/esm/components/datatable/datatable-remote-provider.d.ts.map +1 -0
- package/lib/esm/components/datatable/datatable-remote-provider.js +185 -0
- package/lib/esm/components/datatable/datatable-remote-provider.js.map +1 -0
- package/lib/esm/components/datatable/datatable-state-store.d.ts +21 -0
- package/lib/esm/components/datatable/datatable-state-store.d.ts.map +1 -0
- package/lib/esm/components/datatable/datatable-state-store.js +78 -0
- package/lib/esm/components/datatable/datatable-state-store.js.map +1 -0
- package/lib/esm/components/datatable/datatable-table-renderer.d.ts +16 -0
- package/lib/esm/components/datatable/datatable-table-renderer.d.ts.map +1 -0
- package/lib/esm/components/datatable/datatable-table-renderer.js +130 -0
- package/lib/esm/components/datatable/datatable-table-renderer.js.map +1 -0
- package/lib/esm/components/datatable/datatable.d.ts +9 -87
- package/lib/esm/components/datatable/datatable.d.ts.map +1 -1
- package/lib/esm/components/datatable/datatable.js +114 -686
- package/lib/esm/components/datatable/datatable.js.map +1 -1
- package/lib/esm/components/select/index.d.ts +1 -1
- package/lib/esm/components/select/index.d.ts.map +1 -1
- package/lib/esm/index.d.ts +5 -1
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +4 -5
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/init-all.d.ts +6 -0
- package/lib/esm/init-all.d.ts.map +1 -0
- package/lib/esm/init-all.js +13 -0
- package/lib/esm/init-all.js.map +1 -0
- package/lib/esm/legacy.d.ts +8 -0
- package/lib/esm/legacy.d.ts.map +1 -0
- package/lib/esm/legacy.js +8 -0
- package/lib/esm/legacy.js.map +1 -0
- package/package.json +34 -4
- package/src/__tests__/entrypoints.test.ts +71 -0
- package/src/components/context-menu/__tests__/context-menu.test.ts +117 -0
- package/src/components/context-menu/context-menu.css +32 -0
- package/src/components/context-menu/context-menu.ts +529 -0
- package/src/components/context-menu/index.ts +10 -0
- package/src/components/context-menu/types.ts +32 -0
- package/src/components/datatable/__tests__/architecture-boundaries.test.ts +259 -0
- package/src/components/datatable/datatable-contracts.ts +96 -0
- package/src/components/datatable/datatable-event-adapter.ts +21 -0
- package/src/components/datatable/datatable-local-provider.ts +194 -0
- package/src/components/datatable/datatable-pagination-renderer.ts +211 -0
- package/src/components/datatable/datatable-remote-provider.ts +175 -0
- package/src/components/datatable/datatable-state-store.ts +94 -0
- package/src/components/datatable/datatable-table-renderer.ts +206 -0
- package/src/components/datatable/datatable.ts +128 -839
- package/src/components/select/index.ts +1 -1
- package/src/index.ts +9 -5
- package/src/init-all.ts +15 -0
- package/src/legacy.ts +9 -0
- package/styles.css +1 -0
package/dist/ktui.js
CHANGED
|
@@ -4781,10 +4781,10 @@ exports["default"] = KTComponent;
|
|
|
4781
4781
|
|
|
4782
4782
|
/***/ }),
|
|
4783
4783
|
|
|
4784
|
-
/***/ "./src/components/
|
|
4785
|
-
|
|
4786
|
-
!*** ./src/components/
|
|
4787
|
-
|
|
4784
|
+
/***/ "./src/components/context-menu/context-menu.ts":
|
|
4785
|
+
/*!*****************************************************!*\
|
|
4786
|
+
!*** ./src/components/context-menu/context-menu.ts ***!
|
|
4787
|
+
\*****************************************************/
|
|
4788
4788
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
4789
4789
|
|
|
4790
4790
|
|
|
@@ -4792,230 +4792,1233 @@ exports["default"] = KTComponent;
|
|
|
4792
4792
|
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
4793
4793
|
* Copyright 2025 by Keenthemes Inc
|
|
4794
4794
|
*/
|
|
4795
|
-
var
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
|
|
4799
|
-
|
|
4800
|
-
|
|
4801
|
-
}
|
|
4802
|
-
return
|
|
4803
|
-
|
|
4795
|
+
var __extends = (this && this.__extends) || (function () {
|
|
4796
|
+
var extendStatics = function (d, b) {
|
|
4797
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4798
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
4799
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
4800
|
+
return extendStatics(d, b);
|
|
4801
|
+
};
|
|
4802
|
+
return function (d, b) {
|
|
4803
|
+
if (typeof b !== "function" && b !== null)
|
|
4804
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
4805
|
+
extendStatics(d, b);
|
|
4806
|
+
function __() { this.constructor = d; }
|
|
4807
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
4808
|
+
};
|
|
4809
|
+
})();
|
|
4804
4810
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
4805
|
-
exports.
|
|
4811
|
+
exports.KTContextMenu = void 0;
|
|
4812
|
+
var core_1 = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/index.js");
|
|
4813
|
+
var dom_1 = __webpack_require__(/*! ../../helpers/dom */ "./src/helpers/dom.ts");
|
|
4814
|
+
var data_1 = __webpack_require__(/*! ../../helpers/data */ "./src/helpers/data.ts");
|
|
4806
4815
|
var event_handler_1 = __webpack_require__(/*! ../../helpers/event-handler */ "./src/helpers/event-handler.ts");
|
|
4807
|
-
|
|
4808
|
-
function
|
|
4809
|
-
|
|
4810
|
-
|
|
4811
|
-
|
|
4812
|
-
|
|
4813
|
-
|
|
4814
|
-
|
|
4815
|
-
|
|
4816
|
-
|
|
4817
|
-
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
4822
|
-
|
|
4823
|
-
|
|
4824
|
-
|
|
4825
|
-
|
|
4826
|
-
|
|
4827
|
-
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
|
|
4832
|
-
|
|
4833
|
-
|
|
4834
|
-
|
|
4835
|
-
|
|
4836
|
-
|
|
4837
|
-
|
|
4838
|
-
|
|
4839
|
-
|
|
4840
|
-
|
|
4841
|
-
|
|
4842
|
-
|
|
4843
|
-
if (!
|
|
4844
|
-
return;
|
|
4845
|
-
|
|
4846
|
-
|
|
4847
|
-
|
|
4848
|
-
|
|
4849
|
-
updateHeaderCheckboxState();
|
|
4816
|
+
var component_1 = __webpack_require__(/*! ../component */ "./src/components/component.ts");
|
|
4817
|
+
var KTContextMenu = /** @class */ (function (_super) {
|
|
4818
|
+
__extends(KTContextMenu, _super);
|
|
4819
|
+
function KTContextMenu(element, config) {
|
|
4820
|
+
var _this = _super.call(this) || this;
|
|
4821
|
+
_this._name = 'context-menu';
|
|
4822
|
+
_this._defaultConfig = {
|
|
4823
|
+
zindex: 105,
|
|
4824
|
+
placement: 'right-start',
|
|
4825
|
+
placementRtl: 'left-start',
|
|
4826
|
+
permanent: false,
|
|
4827
|
+
dismiss: true,
|
|
4828
|
+
keyboard: true,
|
|
4829
|
+
offset: '0px, 4px',
|
|
4830
|
+
offsetRtl: '0px, 4px',
|
|
4831
|
+
hiddenClass: 'hidden',
|
|
4832
|
+
container: '',
|
|
4833
|
+
preventNativeMenu: true,
|
|
4834
|
+
flip: true,
|
|
4835
|
+
overflow: false,
|
|
4836
|
+
};
|
|
4837
|
+
_this._config = _this._defaultConfig;
|
|
4838
|
+
_this._isTransitioning = false;
|
|
4839
|
+
_this._isOpen = false;
|
|
4840
|
+
_this._shownAt = 0;
|
|
4841
|
+
_this._lastPoint = { x: 0, y: 0 };
|
|
4842
|
+
if (data_1.default.has(element, _this._name))
|
|
4843
|
+
return _this;
|
|
4844
|
+
_this._init(element);
|
|
4845
|
+
_this._buildConfig(config);
|
|
4846
|
+
if (!_this._element)
|
|
4847
|
+
return _this;
|
|
4848
|
+
_this._targetElement = _this._resolveTargetElement(_this._element);
|
|
4849
|
+
if (!_this._targetElement)
|
|
4850
|
+
return _this;
|
|
4851
|
+
_this._menuElement = _this._resolveMenuElement(_this._element);
|
|
4852
|
+
if (!_this._menuElement)
|
|
4853
|
+
return _this;
|
|
4854
|
+
data_1.default.set(_this._menuElement, 'contextMenuElement', _this._element);
|
|
4855
|
+
_this._setupNestedSubmenus();
|
|
4856
|
+
_this._handleContainer();
|
|
4857
|
+
return _this;
|
|
4850
4858
|
}
|
|
4851
|
-
function
|
|
4852
|
-
|
|
4859
|
+
KTContextMenu.prototype._resolveTargetElement = function (root) {
|
|
4860
|
+
var selector = root.getAttribute('data-kt-context-menu-target') || '';
|
|
4861
|
+
if (selector) {
|
|
4862
|
+
var target = document.querySelector(selector);
|
|
4863
|
+
if (target)
|
|
4864
|
+
return target;
|
|
4865
|
+
}
|
|
4866
|
+
var localTarget = root.querySelector('[data-kt-context-menu-trigger]');
|
|
4867
|
+
var localToggle = root.querySelector('[data-kt-context-menu-toggle]');
|
|
4868
|
+
return localTarget || localToggle || root;
|
|
4869
|
+
};
|
|
4870
|
+
KTContextMenu.prototype._resolveMenuElement = function (root) {
|
|
4871
|
+
var menu = root.querySelector('[data-kt-context-menu-menu]');
|
|
4872
|
+
return menu;
|
|
4873
|
+
};
|
|
4874
|
+
KTContextMenu.prototype._handleContainer = function () {
|
|
4875
|
+
var _a;
|
|
4876
|
+
var container = this._getOption('container');
|
|
4877
|
+
if (!container)
|
|
4853
4878
|
return;
|
|
4854
|
-
|
|
4855
|
-
|
|
4856
|
-
|
|
4879
|
+
if (container === 'body') {
|
|
4880
|
+
document.body.appendChild(this._menuElement);
|
|
4881
|
+
}
|
|
4882
|
+
else {
|
|
4883
|
+
(_a = document
|
|
4884
|
+
.querySelector(container)) === null || _a === void 0 ? void 0 : _a.appendChild(this._menuElement);
|
|
4885
|
+
}
|
|
4886
|
+
};
|
|
4887
|
+
KTContextMenu.prototype._setupNestedSubmenus = function () {
|
|
4888
|
+
var submenus = this._menuElement.querySelectorAll('[data-kt-context-menu]');
|
|
4889
|
+
submenus.forEach(function (submenu) {
|
|
4890
|
+
new KTContextMenu(submenu);
|
|
4857
4891
|
});
|
|
4858
|
-
}
|
|
4859
|
-
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
|
|
4892
|
+
};
|
|
4893
|
+
KTContextMenu.prototype._updatePoint = function (x, y) {
|
|
4894
|
+
this._lastPoint = { x: x, y: y };
|
|
4895
|
+
};
|
|
4896
|
+
KTContextMenu.prototype._toggleAtEvent = function (event) {
|
|
4897
|
+
if (this._isOpen) {
|
|
4898
|
+
this._hide();
|
|
4863
4899
|
return;
|
|
4864
|
-
var value = input.value;
|
|
4865
|
-
var selectedRows = getSelectedRows();
|
|
4866
|
-
var wasChecked = selectedRows.includes(value);
|
|
4867
|
-
var isNowChecked = input.checked;
|
|
4868
|
-
// Update state first
|
|
4869
|
-
if (isNowChecked) {
|
|
4870
|
-
if (!wasChecked)
|
|
4871
|
-
selectedRows.push(value);
|
|
4872
4900
|
}
|
|
4873
|
-
|
|
4874
|
-
|
|
4901
|
+
this._showAt(event.clientX, event.clientY);
|
|
4902
|
+
};
|
|
4903
|
+
KTContextMenu.prototype._showAtEvent = function (event) {
|
|
4904
|
+
event.stopPropagation();
|
|
4905
|
+
if (this._getOption('preventNativeMenu') === true) {
|
|
4906
|
+
event.preventDefault();
|
|
4875
4907
|
}
|
|
4876
|
-
|
|
4877
|
-
|
|
4878
|
-
|
|
4879
|
-
|
|
4880
|
-
|
|
4908
|
+
this._toggleAtEvent(event);
|
|
4909
|
+
};
|
|
4910
|
+
KTContextMenu.prototype._showAt = function (x, y) {
|
|
4911
|
+
var _this = this;
|
|
4912
|
+
if (this._isOpen || this._isTransitioning)
|
|
4913
|
+
return;
|
|
4914
|
+
var payload = { cancel: false };
|
|
4915
|
+
this._fireEvent('show', payload);
|
|
4916
|
+
this._dispatchEvent('show', payload);
|
|
4917
|
+
if (payload.cancel)
|
|
4918
|
+
return;
|
|
4919
|
+
KTContextMenu.hide(this._element);
|
|
4920
|
+
this._updatePoint(x, y);
|
|
4921
|
+
var zIndex = parseInt(this._getOption('zindex'), 10);
|
|
4922
|
+
var parentZindex = dom_1.default.getHighestZindex(this._targetElement);
|
|
4923
|
+
if (parentZindex !== null && parentZindex >= zIndex) {
|
|
4924
|
+
zIndex = parentZindex + 1;
|
|
4881
4925
|
}
|
|
4882
|
-
|
|
4883
|
-
|
|
4926
|
+
if (zIndex > 0) {
|
|
4927
|
+
this._menuElement.style.zIndex = zIndex.toString();
|
|
4884
4928
|
}
|
|
4885
|
-
|
|
4886
|
-
|
|
4887
|
-
|
|
4888
|
-
|
|
4889
|
-
|
|
4890
|
-
|
|
4891
|
-
|
|
4892
|
-
|
|
4893
|
-
|
|
4894
|
-
|
|
4895
|
-
|
|
4896
|
-
|
|
4897
|
-
|
|
4898
|
-
|
|
4929
|
+
this._menuElement.style.display = 'block';
|
|
4930
|
+
this._menuElement.style.opacity = '0';
|
|
4931
|
+
dom_1.default.reflow(this._menuElement);
|
|
4932
|
+
this._menuElement.style.opacity = '1';
|
|
4933
|
+
this._menuElement.classList.remove(this._getOption('hiddenClass'));
|
|
4934
|
+
this._menuElement.classList.add('open');
|
|
4935
|
+
this._element.classList.add('open');
|
|
4936
|
+
this._initPopper();
|
|
4937
|
+
dom_1.default.transitionEnd(this._menuElement, function () {
|
|
4938
|
+
_this._isTransitioning = false;
|
|
4939
|
+
_this._isOpen = true;
|
|
4940
|
+
_this._fireEvent('shown');
|
|
4941
|
+
_this._dispatchEvent('shown');
|
|
4942
|
+
});
|
|
4943
|
+
this._shownAt = Date.now();
|
|
4944
|
+
};
|
|
4945
|
+
KTContextMenu.prototype._hide = function () {
|
|
4946
|
+
var _this = this;
|
|
4947
|
+
if (!this._isOpen || this._isTransitioning)
|
|
4948
|
+
return;
|
|
4899
4949
|
var payload = { cancel: false };
|
|
4900
|
-
|
|
4901
|
-
|
|
4950
|
+
this._fireEvent('hide', payload);
|
|
4951
|
+
this._dispatchEvent('hide', payload);
|
|
4952
|
+
if (payload.cancel)
|
|
4902
4953
|
return;
|
|
4903
|
-
|
|
4904
|
-
|
|
4905
|
-
|
|
4906
|
-
|
|
4907
|
-
|
|
4908
|
-
|
|
4909
|
-
|
|
4910
|
-
|
|
4911
|
-
|
|
4912
|
-
|
|
4913
|
-
|
|
4914
|
-
|
|
4915
|
-
|
|
4916
|
-
|
|
4917
|
-
|
|
4918
|
-
|
|
4919
|
-
|
|
4920
|
-
|
|
4921
|
-
|
|
4922
|
-
|
|
4923
|
-
|
|
4924
|
-
|
|
4925
|
-
|
|
4954
|
+
this._menuElement.style.opacity = '1';
|
|
4955
|
+
dom_1.default.reflow(this._menuElement);
|
|
4956
|
+
this._menuElement.style.opacity = '0';
|
|
4957
|
+
this._menuElement.classList.remove('open');
|
|
4958
|
+
this._element.classList.remove('open');
|
|
4959
|
+
dom_1.default.transitionEnd(this._menuElement, function () {
|
|
4960
|
+
_this._isTransitioning = false;
|
|
4961
|
+
_this._isOpen = false;
|
|
4962
|
+
_this._menuElement.classList.add(_this._getOption('hiddenClass'));
|
|
4963
|
+
_this._menuElement.style.display = '';
|
|
4964
|
+
_this._menuElement.style.zIndex = '';
|
|
4965
|
+
_this._destroyPopper();
|
|
4966
|
+
_this._fireEvent('hidden');
|
|
4967
|
+
_this._dispatchEvent('hidden');
|
|
4968
|
+
});
|
|
4969
|
+
};
|
|
4970
|
+
KTContextMenu.prototype._getVirtualReference = function () {
|
|
4971
|
+
var point = this._lastPoint;
|
|
4972
|
+
return {
|
|
4973
|
+
getBoundingClientRect: function () {
|
|
4974
|
+
return ({
|
|
4975
|
+
x: point.x,
|
|
4976
|
+
y: point.y,
|
|
4977
|
+
top: point.y,
|
|
4978
|
+
left: point.x,
|
|
4979
|
+
right: point.x,
|
|
4980
|
+
bottom: point.y,
|
|
4981
|
+
width: 0,
|
|
4982
|
+
height: 0,
|
|
4983
|
+
toJSON: function () { return ({}); },
|
|
4984
|
+
});
|
|
4985
|
+
},
|
|
4986
|
+
};
|
|
4987
|
+
};
|
|
4988
|
+
KTContextMenu.prototype._initPopper = function () {
|
|
4989
|
+
var popper = (0, core_1.createPopper)(this._getVirtualReference(), this._menuElement, this._getPopperConfig());
|
|
4990
|
+
data_1.default.set(this._element, 'popper', popper);
|
|
4991
|
+
};
|
|
4992
|
+
KTContextMenu.prototype._destroyPopper = function () {
|
|
4993
|
+
if (data_1.default.has(this._element, 'popper')) {
|
|
4994
|
+
data_1.default.get(this._element, 'popper').destroy();
|
|
4995
|
+
data_1.default.remove(this._element, 'popper');
|
|
4996
|
+
}
|
|
4997
|
+
};
|
|
4998
|
+
KTContextMenu.prototype._getPopperConfig = function () {
|
|
4999
|
+
var isRtl = dom_1.default.isRTL();
|
|
5000
|
+
var placement = this._getOption('placement');
|
|
5001
|
+
if (isRtl && this._getOption('placementRtl')) {
|
|
5002
|
+
placement = this._getOption('placementRtl');
|
|
5003
|
+
}
|
|
5004
|
+
var offsetValue = this._getOption('offset');
|
|
5005
|
+
if (isRtl && this._getOption('offsetRtl')) {
|
|
5006
|
+
offsetValue = this._getOption('offsetRtl');
|
|
5007
|
+
}
|
|
5008
|
+
var offset = offsetValue
|
|
5009
|
+
? offsetValue
|
|
5010
|
+
.toString()
|
|
5011
|
+
.split(',')
|
|
5012
|
+
.map(function (value) { return parseInt(value.trim(), 10); })
|
|
5013
|
+
: [0, 0];
|
|
5014
|
+
var strategy = this._getOption('overflow') === true ? 'absolute' : 'fixed';
|
|
5015
|
+
var altAxis = this._getOption('flip') !== false;
|
|
5016
|
+
return {
|
|
5017
|
+
placement: placement,
|
|
5018
|
+
strategy: strategy,
|
|
5019
|
+
modifiers: [
|
|
5020
|
+
{ name: 'offset', options: { offset: offset } },
|
|
5021
|
+
{ name: 'preventOverflow', options: { altAxis: altAxis } },
|
|
5022
|
+
{ name: 'flip', options: { flipVariations: false } },
|
|
5023
|
+
],
|
|
5024
|
+
};
|
|
5025
|
+
};
|
|
5026
|
+
KTContextMenu.prototype._isContextMenuOpen = function () {
|
|
5027
|
+
return (this._element.classList.contains('open') &&
|
|
5028
|
+
this._menuElement.classList.contains('open'));
|
|
5029
|
+
};
|
|
5030
|
+
KTContextMenu.prototype.showAt = function (x, y) {
|
|
5031
|
+
this._showAt(x, y);
|
|
5032
|
+
};
|
|
5033
|
+
KTContextMenu.prototype.showAtEvent = function (event) {
|
|
5034
|
+
this._showAtEvent(event);
|
|
5035
|
+
};
|
|
5036
|
+
KTContextMenu.prototype.hide = function () {
|
|
5037
|
+
this._hide();
|
|
5038
|
+
};
|
|
5039
|
+
KTContextMenu.prototype.toggleAtEvent = function (event) {
|
|
5040
|
+
this._toggleAtEvent(event);
|
|
5041
|
+
};
|
|
5042
|
+
KTContextMenu.prototype.isOpen = function () {
|
|
5043
|
+
return this._isContextMenuOpen();
|
|
5044
|
+
};
|
|
5045
|
+
KTContextMenu.prototype.getMenuElement = function () {
|
|
5046
|
+
return this._menuElement;
|
|
5047
|
+
};
|
|
5048
|
+
KTContextMenu.prototype.getTargetElement = function () {
|
|
5049
|
+
return this._targetElement;
|
|
5050
|
+
};
|
|
5051
|
+
KTContextMenu.getElement = function (reference) {
|
|
5052
|
+
if (reference &&
|
|
5053
|
+
reference.hasAttribute('data-kt-context-menu-initialized')) {
|
|
5054
|
+
return reference;
|
|
5055
|
+
}
|
|
5056
|
+
var initializedParent = reference === null || reference === void 0 ? void 0 : reference.closest('[data-kt-context-menu-initialized]');
|
|
5057
|
+
if (initializedParent)
|
|
5058
|
+
return initializedParent;
|
|
5059
|
+
var container = reference === null || reference === void 0 ? void 0 : reference.closest('[data-kt-context-menu]');
|
|
5060
|
+
if (container)
|
|
5061
|
+
return container;
|
|
5062
|
+
if (reference &&
|
|
5063
|
+
reference.hasAttribute('data-kt-context-menu-menu') &&
|
|
5064
|
+
data_1.default.has(reference, 'contextMenuElement')) {
|
|
5065
|
+
return data_1.default.get(reference, 'contextMenuElement');
|
|
5066
|
+
}
|
|
5067
|
+
return null;
|
|
5068
|
+
};
|
|
5069
|
+
KTContextMenu.getInstance = function (element) {
|
|
5070
|
+
element = this.getElement(element);
|
|
5071
|
+
if (!element)
|
|
5072
|
+
return null;
|
|
5073
|
+
if (data_1.default.has(element, 'context-menu')) {
|
|
5074
|
+
return data_1.default.get(element, 'context-menu');
|
|
5075
|
+
}
|
|
5076
|
+
if (element.getAttribute('data-kt-context-menu-initialized') === 'true') {
|
|
5077
|
+
return new KTContextMenu(element);
|
|
5078
|
+
}
|
|
5079
|
+
return null;
|
|
5080
|
+
};
|
|
5081
|
+
KTContextMenu.getOrCreateInstance = function (element, config) {
|
|
5082
|
+
return this.getInstance(element) || new KTContextMenu(element, config);
|
|
5083
|
+
};
|
|
5084
|
+
KTContextMenu.update = function () {
|
|
5085
|
+
document
|
|
5086
|
+
.querySelectorAll('.open[data-kt-context-menu-initialized]')
|
|
5087
|
+
.forEach(function (item) {
|
|
5088
|
+
if (data_1.default.has(item, 'popper')) {
|
|
5089
|
+
data_1.default.get(item, 'popper').forceUpdate();
|
|
5090
|
+
}
|
|
5091
|
+
});
|
|
5092
|
+
};
|
|
5093
|
+
KTContextMenu.hide = function (skipElement) {
|
|
5094
|
+
document
|
|
5095
|
+
.querySelectorAll('.open[data-kt-context-menu-initialized]:not([data-kt-context-menu-permanent="true"])')
|
|
5096
|
+
.forEach(function (item) {
|
|
5097
|
+
if (skipElement && (skipElement === item || item.contains(skipElement)))
|
|
5098
|
+
return;
|
|
5099
|
+
var contextMenu = KTContextMenu.getInstance(item);
|
|
5100
|
+
if (contextMenu)
|
|
5101
|
+
contextMenu.hide();
|
|
5102
|
+
});
|
|
5103
|
+
};
|
|
5104
|
+
KTContextMenu.handleOpen = function () {
|
|
5105
|
+
event_handler_1.default.on(document.body, '[data-kt-context-menu-trigger], [data-kt-context-menu-target], [data-kt-context-menu]', 'contextmenu', function (event, target) {
|
|
5106
|
+
var contextMenu = KTContextMenu.getInstance(target);
|
|
5107
|
+
if (contextMenu) {
|
|
5108
|
+
contextMenu.showAtEvent(event);
|
|
5109
|
+
}
|
|
5110
|
+
});
|
|
5111
|
+
};
|
|
5112
|
+
KTContextMenu.handleToggle = function () {
|
|
5113
|
+
event_handler_1.default.on(document.body, '[data-kt-context-menu-toggle]', 'click', function (event, target) {
|
|
5114
|
+
event.preventDefault();
|
|
5115
|
+
event.stopPropagation();
|
|
5116
|
+
var contextMenu = KTContextMenu.getInstance(target);
|
|
5117
|
+
if (contextMenu) {
|
|
5118
|
+
var rect = target.getBoundingClientRect();
|
|
5119
|
+
contextMenu.showAt(rect.right, rect.top);
|
|
5120
|
+
}
|
|
5121
|
+
});
|
|
5122
|
+
};
|
|
5123
|
+
KTContextMenu.handleClickAway = function () {
|
|
5124
|
+
document.addEventListener('click', function (event) {
|
|
5125
|
+
document
|
|
5126
|
+
.querySelectorAll('.open[data-kt-context-menu-initialized]:not([data-kt-context-menu-permanent="true"])')
|
|
5127
|
+
.forEach(function (element) {
|
|
5128
|
+
var contextMenu = KTContextMenu.getInstance(element);
|
|
5129
|
+
if (!contextMenu)
|
|
5130
|
+
return;
|
|
5131
|
+
var menuElement = contextMenu.getMenuElement();
|
|
5132
|
+
var targetElement = contextMenu.getTargetElement();
|
|
5133
|
+
if (targetElement === event.target ||
|
|
5134
|
+
targetElement.contains(event.target) ||
|
|
5135
|
+
menuElement === event.target ||
|
|
5136
|
+
menuElement.contains(event.target)) {
|
|
5137
|
+
return;
|
|
5138
|
+
}
|
|
5139
|
+
contextMenu.hide();
|
|
5140
|
+
});
|
|
5141
|
+
});
|
|
5142
|
+
};
|
|
5143
|
+
KTContextMenu.handleKeyboard = function () {
|
|
5144
|
+
document.addEventListener('keydown', function (event) {
|
|
5145
|
+
var contextMenuEl = document.querySelector('.open[data-kt-context-menu-initialized]');
|
|
5146
|
+
var contextMenu = KTContextMenu.getInstance(contextMenuEl);
|
|
5147
|
+
if (!contextMenu || !contextMenu._getOption('keyboard'))
|
|
5148
|
+
return;
|
|
5149
|
+
if (event.key === 'Escape' &&
|
|
5150
|
+
!(event.ctrlKey || event.altKey || event.shiftKey)) {
|
|
5151
|
+
contextMenu.hide();
|
|
5152
|
+
}
|
|
5153
|
+
});
|
|
5154
|
+
};
|
|
5155
|
+
KTContextMenu.handleDismiss = function () {
|
|
5156
|
+
event_handler_1.default.on(document.body, '[data-kt-context-menu-dismiss], [data-kt-dropdown-dismiss]', 'click', function (_event, target) {
|
|
5157
|
+
var contextMenu = KTContextMenu.getInstance(target);
|
|
5158
|
+
if (contextMenu) {
|
|
5159
|
+
contextMenu.hide();
|
|
5160
|
+
}
|
|
5161
|
+
});
|
|
5162
|
+
};
|
|
5163
|
+
KTContextMenu.initHandlers = function () {
|
|
5164
|
+
this.handleOpen();
|
|
5165
|
+
this.handleToggle();
|
|
5166
|
+
this.handleClickAway();
|
|
5167
|
+
this.handleKeyboard();
|
|
5168
|
+
this.handleDismiss();
|
|
5169
|
+
};
|
|
5170
|
+
KTContextMenu.createInstances = function () {
|
|
5171
|
+
var elements = document.querySelectorAll('[data-kt-context-menu]');
|
|
5172
|
+
elements.forEach(function (element) {
|
|
5173
|
+
new KTContextMenu(element);
|
|
5174
|
+
});
|
|
5175
|
+
};
|
|
5176
|
+
KTContextMenu.init = function () {
|
|
5177
|
+
KTContextMenu.createInstances();
|
|
5178
|
+
if (window.KT_CONTEXT_MENU_INITIALIZED !== true) {
|
|
5179
|
+
KTContextMenu.initHandlers();
|
|
5180
|
+
window.KT_CONTEXT_MENU_INITIALIZED = true;
|
|
5181
|
+
}
|
|
5182
|
+
};
|
|
5183
|
+
KTContextMenu.reinit = function () {
|
|
5184
|
+
var elements = document.querySelectorAll('[data-kt-context-menu]');
|
|
5185
|
+
elements.forEach(function (element) {
|
|
5186
|
+
try {
|
|
5187
|
+
var instance = KTContextMenu.getInstance(element);
|
|
5188
|
+
if (instance && typeof instance.hide === 'function') {
|
|
5189
|
+
instance.hide();
|
|
5190
|
+
}
|
|
5191
|
+
data_1.default.remove(element, 'context-menu');
|
|
5192
|
+
data_1.default.remove(element, 'popper');
|
|
5193
|
+
element.removeAttribute('data-kt-context-menu-initialized');
|
|
5194
|
+
var menu = element.querySelector('[data-kt-context-menu-menu]');
|
|
5195
|
+
if (menu) {
|
|
5196
|
+
data_1.default.remove(menu, 'contextMenuElement');
|
|
5197
|
+
}
|
|
5198
|
+
}
|
|
5199
|
+
catch (_a) {
|
|
5200
|
+
// ignore per-element cleanup errors
|
|
5201
|
+
}
|
|
5202
|
+
});
|
|
5203
|
+
KTContextMenu.createInstances();
|
|
5204
|
+
KTContextMenu.initHandlers();
|
|
5205
|
+
};
|
|
5206
|
+
return KTContextMenu;
|
|
5207
|
+
}(component_1.default));
|
|
5208
|
+
exports.KTContextMenu = KTContextMenu;
|
|
5209
|
+
if (typeof window !== 'undefined') {
|
|
5210
|
+
window.KTContextMenu = KTContextMenu;
|
|
5211
|
+
}
|
|
5212
|
+
|
|
5213
|
+
|
|
5214
|
+
/***/ }),
|
|
5215
|
+
|
|
5216
|
+
/***/ "./src/components/context-menu/index.ts":
|
|
5217
|
+
/*!**********************************************!*\
|
|
5218
|
+
!*** ./src/components/context-menu/index.ts ***!
|
|
5219
|
+
\**********************************************/
|
|
5220
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
5221
|
+
|
|
5222
|
+
|
|
5223
|
+
/**
|
|
5224
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
5225
|
+
* Copyright 2025 by Keenthemes Inc
|
|
5226
|
+
*/
|
|
5227
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
5228
|
+
exports.KTContextMenu = void 0;
|
|
5229
|
+
var context_menu_1 = __webpack_require__(/*! ./context-menu */ "./src/components/context-menu/context-menu.ts");
|
|
5230
|
+
Object.defineProperty(exports, "KTContextMenu", ({ enumerable: true, get: function () { return context_menu_1.KTContextMenu; } }));
|
|
5231
|
+
|
|
5232
|
+
|
|
5233
|
+
/***/ }),
|
|
5234
|
+
|
|
5235
|
+
/***/ "./src/components/datatable/datatable-checkbox.ts":
|
|
5236
|
+
/*!********************************************************!*\
|
|
5237
|
+
!*** ./src/components/datatable/datatable-checkbox.ts ***!
|
|
5238
|
+
\********************************************************/
|
|
5239
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
5240
|
+
|
|
5241
|
+
|
|
5242
|
+
/**
|
|
5243
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
5244
|
+
* Copyright 2025 by Keenthemes Inc
|
|
5245
|
+
*/
|
|
5246
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
5247
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
5248
|
+
if (ar || !(i in from)) {
|
|
5249
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5250
|
+
ar[i] = from[i];
|
|
5251
|
+
}
|
|
5252
|
+
}
|
|
5253
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
5254
|
+
};
|
|
5255
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
5256
|
+
exports.createCheckboxHandler = createCheckboxHandler;
|
|
5257
|
+
var event_handler_1 = __webpack_require__(/*! ../../helpers/event-handler */ "./src/helpers/event-handler.ts");
|
|
5258
|
+
// Main function to create checkbox logic for a datatable instance
|
|
5259
|
+
function createCheckboxHandler(element, config, fireEvent) {
|
|
5260
|
+
var _a;
|
|
5261
|
+
var headerChecked = false;
|
|
5262
|
+
var headerCheckElement = null;
|
|
5263
|
+
var targetElements = null;
|
|
5264
|
+
// Default: preserve selection across all pages
|
|
5265
|
+
var preserveSelection = ((_a = config.checkbox) === null || _a === void 0 ? void 0 : _a.preserveSelection) !== false;
|
|
5266
|
+
// Helper: get selectedRows from state, always as string[]
|
|
5267
|
+
function getSelectedRows() {
|
|
5268
|
+
if (!config._state)
|
|
5269
|
+
config._state = {};
|
|
5270
|
+
if (!Array.isArray(config._state.selectedRows))
|
|
5271
|
+
config._state.selectedRows = [];
|
|
5272
|
+
return config._state.selectedRows.map(String);
|
|
5273
|
+
}
|
|
5274
|
+
// Helper: set selectedRows in state
|
|
5275
|
+
function setSelectedRows(rows) {
|
|
5276
|
+
if (!config._state)
|
|
5277
|
+
config._state = {};
|
|
5278
|
+
config._state.selectedRows = Array.from(new Set(rows.map(String)));
|
|
5279
|
+
}
|
|
5280
|
+
// Helper: get all visible row IDs (values)
|
|
5281
|
+
function getVisibleRowIds() {
|
|
5282
|
+
if (!targetElements)
|
|
5283
|
+
return [];
|
|
5284
|
+
return Array.from(targetElements)
|
|
5285
|
+
.map(function (el) { return el.value; })
|
|
5286
|
+
.filter(function (v) { return v != null && v !== ''; });
|
|
5287
|
+
}
|
|
5288
|
+
// Listener for header checkbox
|
|
5289
|
+
var checkboxListener = function (event) {
|
|
5290
|
+
checkboxToggle(event);
|
|
5291
|
+
};
|
|
5292
|
+
function init() {
|
|
5293
|
+
headerCheckElement = element.querySelector(config.attributes.check);
|
|
5294
|
+
if (!headerCheckElement)
|
|
5295
|
+
return;
|
|
5296
|
+
headerChecked = headerCheckElement.checked;
|
|
5297
|
+
targetElements = element.querySelectorAll(config.attributes.checkbox);
|
|
5298
|
+
checkboxHandler();
|
|
5299
|
+
reapplyCheckedStates();
|
|
5300
|
+
updateHeaderCheckboxState();
|
|
5301
|
+
}
|
|
5302
|
+
function checkboxHandler() {
|
|
5303
|
+
if (!headerCheckElement)
|
|
5304
|
+
return;
|
|
5305
|
+
headerCheckElement.addEventListener('click', checkboxListener);
|
|
5306
|
+
event_handler_1.default.on(document.body, config.attributes.checkbox, 'input', function (event) {
|
|
5307
|
+
handleRowCheckboxChange(event);
|
|
5308
|
+
});
|
|
5309
|
+
}
|
|
5310
|
+
// When a row checkbox is changed
|
|
5311
|
+
function handleRowCheckboxChange(event) {
|
|
5312
|
+
var input = event.target;
|
|
5313
|
+
if (!input)
|
|
5314
|
+
return;
|
|
5315
|
+
var value = input.value;
|
|
5316
|
+
var selectedRows = getSelectedRows();
|
|
5317
|
+
var wasChecked = selectedRows.includes(value);
|
|
5318
|
+
var isNowChecked = input.checked;
|
|
5319
|
+
// Update state first
|
|
5320
|
+
if (isNowChecked) {
|
|
5321
|
+
if (!wasChecked)
|
|
5322
|
+
selectedRows.push(value);
|
|
5323
|
+
}
|
|
5324
|
+
else {
|
|
5325
|
+
selectedRows = selectedRows.filter(function (v) { return v !== value; });
|
|
5326
|
+
}
|
|
5327
|
+
setSelectedRows(selectedRows);
|
|
5328
|
+
updateHeaderCheckboxState();
|
|
5329
|
+
// Fire specific checked/unchecked events after state is updated
|
|
5330
|
+
if (isNowChecked && !wasChecked) {
|
|
5331
|
+
fireEvent('checked');
|
|
5332
|
+
}
|
|
5333
|
+
else if (!isNowChecked && wasChecked) {
|
|
5334
|
+
fireEvent('unchecked');
|
|
5335
|
+
}
|
|
5336
|
+
// Always fire changed event for backward compatibility
|
|
5337
|
+
fireEvent('changed');
|
|
5338
|
+
}
|
|
5339
|
+
// When the header checkbox is toggled
|
|
5340
|
+
function checkboxToggle(_event) {
|
|
5341
|
+
var checked = !isChecked();
|
|
5342
|
+
// Update state first, then fire events
|
|
5343
|
+
change(checked);
|
|
5344
|
+
// Fire checked/unchecked events after state is updated
|
|
5345
|
+
var eventType = checked ? 'checked' : 'unchecked';
|
|
5346
|
+
fireEvent(eventType);
|
|
5347
|
+
}
|
|
5348
|
+
// Change all visible checkboxes and update selectedRows
|
|
5349
|
+
function change(checked) {
|
|
5350
|
+
var payload = { cancel: false };
|
|
5351
|
+
fireEvent('change', payload);
|
|
5352
|
+
if (payload.cancel === true)
|
|
5353
|
+
return;
|
|
5354
|
+
headerChecked = checked;
|
|
5355
|
+
if (headerCheckElement)
|
|
5356
|
+
headerCheckElement.checked = checked;
|
|
5357
|
+
if (targetElements) {
|
|
5358
|
+
var visibleIds_1 = getVisibleRowIds();
|
|
5359
|
+
var selectedRows = getSelectedRows();
|
|
5360
|
+
if (checked) {
|
|
5361
|
+
// Add all visible IDs to selectedRows
|
|
5362
|
+
selectedRows = preserveSelection
|
|
5363
|
+
? Array.from(new Set(__spreadArray(__spreadArray([], selectedRows, true), visibleIds_1, true)))
|
|
5364
|
+
: visibleIds_1;
|
|
5365
|
+
}
|
|
5366
|
+
else {
|
|
5367
|
+
// Remove all visible IDs from selectedRows
|
|
5368
|
+
selectedRows = preserveSelection
|
|
5369
|
+
? selectedRows.filter(function (v) { return !visibleIds_1.includes(v); })
|
|
5370
|
+
: [];
|
|
5371
|
+
}
|
|
5372
|
+
setSelectedRows(selectedRows);
|
|
5373
|
+
// Update visible checkboxes
|
|
5374
|
+
targetElements.forEach(function (element) {
|
|
5375
|
+
if (element) {
|
|
5376
|
+
element.checked = checked;
|
|
5377
|
+
}
|
|
5378
|
+
});
|
|
5379
|
+
}
|
|
5380
|
+
updateHeaderCheckboxState();
|
|
5381
|
+
fireEvent('changed');
|
|
5382
|
+
}
|
|
5383
|
+
// Reapply checked state to visible checkboxes based on selectedRows
|
|
5384
|
+
function reapplyCheckedStates() {
|
|
5385
|
+
var selectedRows = getSelectedRows();
|
|
5386
|
+
if (!targetElements)
|
|
5387
|
+
return;
|
|
5388
|
+
targetElements.forEach(function (element) {
|
|
5389
|
+
var _a;
|
|
5390
|
+
if (!element)
|
|
5391
|
+
return;
|
|
5392
|
+
var value = element.value;
|
|
5393
|
+
element.checked = selectedRows.includes(value);
|
|
5394
|
+
// Update row class
|
|
5395
|
+
var row = element.closest('tr');
|
|
5396
|
+
if (row && ((_a = config.checkbox) === null || _a === void 0 ? void 0 : _a.checkedClass)) {
|
|
5397
|
+
if (element.checked) {
|
|
5398
|
+
row.classList.add(config.checkbox.checkedClass);
|
|
5399
|
+
}
|
|
5400
|
+
else {
|
|
5401
|
+
row.classList.remove(config.checkbox.checkedClass);
|
|
5402
|
+
}
|
|
5403
|
+
}
|
|
5404
|
+
});
|
|
5405
|
+
}
|
|
5406
|
+
// Update header checkbox state (checked/indeterminate/unchecked)
|
|
5407
|
+
function updateHeaderCheckboxState() {
|
|
5408
|
+
if (!headerCheckElement || !targetElements)
|
|
5409
|
+
return;
|
|
5410
|
+
var total = targetElements.length;
|
|
5411
|
+
var checked = 0;
|
|
5412
|
+
for (var i = 0; i < total; i++) {
|
|
5413
|
+
if (targetElements[i].checked)
|
|
5414
|
+
checked++;
|
|
5415
|
+
}
|
|
5416
|
+
if (checked === 0) {
|
|
5417
|
+
headerCheckElement.indeterminate = false;
|
|
5418
|
+
headerCheckElement.checked = false;
|
|
5419
|
+
headerChecked = false;
|
|
5420
|
+
}
|
|
5421
|
+
else if (checked > 0 && checked < total) {
|
|
5422
|
+
headerCheckElement.indeterminate = true;
|
|
5423
|
+
headerCheckElement.checked = false;
|
|
5424
|
+
headerChecked = false;
|
|
5425
|
+
}
|
|
5426
|
+
else if (checked === total) {
|
|
5427
|
+
headerCheckElement.indeterminate = false;
|
|
5428
|
+
headerCheckElement.checked = true;
|
|
5429
|
+
headerChecked = true;
|
|
5430
|
+
}
|
|
5431
|
+
}
|
|
5432
|
+
// Fix: isChecked() implementation
|
|
5433
|
+
function isChecked() {
|
|
5434
|
+
return headerChecked;
|
|
5435
|
+
}
|
|
5436
|
+
function getChecked() {
|
|
5437
|
+
return getSelectedRows();
|
|
5438
|
+
}
|
|
5439
|
+
function check() {
|
|
5440
|
+
change(true);
|
|
5441
|
+
reapplyCheckedStates();
|
|
5442
|
+
updateHeaderCheckboxState();
|
|
5443
|
+
}
|
|
5444
|
+
function uncheck() {
|
|
5445
|
+
change(false);
|
|
5446
|
+
reapplyCheckedStates();
|
|
5447
|
+
updateHeaderCheckboxState();
|
|
5448
|
+
}
|
|
5449
|
+
function toggle() {
|
|
5450
|
+
checkboxToggle();
|
|
5451
|
+
reapplyCheckedStates();
|
|
5452
|
+
updateHeaderCheckboxState();
|
|
5453
|
+
}
|
|
5454
|
+
function updateState() {
|
|
5455
|
+
// Called after redraw/pagination
|
|
5456
|
+
targetElements = element.querySelectorAll(config.attributes.checkbox);
|
|
5457
|
+
reapplyCheckedStates();
|
|
5458
|
+
updateHeaderCheckboxState();
|
|
5459
|
+
}
|
|
5460
|
+
return {
|
|
5461
|
+
init: init,
|
|
5462
|
+
check: check,
|
|
5463
|
+
uncheck: uncheck,
|
|
5464
|
+
toggle: toggle,
|
|
5465
|
+
isChecked: isChecked,
|
|
5466
|
+
getChecked: getChecked,
|
|
5467
|
+
updateState: updateState,
|
|
5468
|
+
};
|
|
5469
|
+
}
|
|
5470
|
+
|
|
5471
|
+
|
|
5472
|
+
/***/ }),
|
|
5473
|
+
|
|
5474
|
+
/***/ "./src/components/datatable/datatable-event-adapter.ts":
|
|
5475
|
+
/*!*************************************************************!*\
|
|
5476
|
+
!*** ./src/components/datatable/datatable-event-adapter.ts ***!
|
|
5477
|
+
\*************************************************************/
|
|
5478
|
+
/***/ (function(__unused_webpack_module, exports) {
|
|
5479
|
+
|
|
5480
|
+
|
|
5481
|
+
/**
|
|
5482
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
5483
|
+
* Copyright 2025 by Keenthemes Inc
|
|
5484
|
+
*/
|
|
5485
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
5486
|
+
exports.createDataTableEventAdapter = createDataTableEventAdapter;
|
|
5487
|
+
function createDataTableEventAdapter(fireEvent, dispatchEvent) {
|
|
5488
|
+
return {
|
|
5489
|
+
emit: function (eventName, eventData) {
|
|
5490
|
+
fireEvent(eventName, eventData);
|
|
5491
|
+
dispatchEvent(eventName, eventData);
|
|
5492
|
+
},
|
|
5493
|
+
};
|
|
5494
|
+
}
|
|
5495
|
+
|
|
5496
|
+
|
|
5497
|
+
/***/ }),
|
|
5498
|
+
|
|
5499
|
+
/***/ "./src/components/datatable/datatable-local-provider.ts":
|
|
5500
|
+
/*!**************************************************************!*\
|
|
5501
|
+
!*** ./src/components/datatable/datatable-local-provider.ts ***!
|
|
5502
|
+
\**************************************************************/
|
|
5503
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
5504
|
+
|
|
5505
|
+
|
|
5506
|
+
/**
|
|
5507
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
5508
|
+
* Copyright 2025 by Keenthemes Inc
|
|
5509
|
+
*/
|
|
5510
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5511
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5512
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5513
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5514
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
5515
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
5516
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
5517
|
+
});
|
|
5518
|
+
};
|
|
5519
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
5520
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
5521
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
5522
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
5523
|
+
function step(op) {
|
|
5524
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
5525
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
5526
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
5527
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
5528
|
+
switch (op[0]) {
|
|
5529
|
+
case 0: case 1: t = op; break;
|
|
5530
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
5531
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
5532
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
5533
|
+
default:
|
|
5534
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
5535
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
5536
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
5537
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
5538
|
+
if (t[2]) _.ops.pop();
|
|
5539
|
+
_.trys.pop(); continue;
|
|
5540
|
+
}
|
|
5541
|
+
op = body.call(thisArg, _);
|
|
5542
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
5543
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
5544
|
+
}
|
|
5545
|
+
};
|
|
5546
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
5547
|
+
var t = {};
|
|
5548
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5549
|
+
t[p] = s[p];
|
|
5550
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
5551
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
5552
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
5553
|
+
t[p[i]] = s[p[i]];
|
|
5554
|
+
}
|
|
5555
|
+
return t;
|
|
5556
|
+
};
|
|
5557
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
5558
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
5559
|
+
if (ar || !(i in from)) {
|
|
5560
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5561
|
+
ar[i] = from[i];
|
|
5562
|
+
}
|
|
5563
|
+
}
|
|
5564
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
5565
|
+
};
|
|
5566
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
5567
|
+
exports.KTDataTableLocalDataProvider = void 0;
|
|
5568
|
+
var utils_1 = __webpack_require__(/*! ../../helpers/utils */ "./src/helpers/utils.ts");
|
|
5569
|
+
var KTDataTableLocalDataProvider = /** @class */ (function () {
|
|
5570
|
+
function KTDataTableLocalDataProvider(options) {
|
|
5571
|
+
this.options = options;
|
|
5572
|
+
}
|
|
5573
|
+
KTDataTableLocalDataProvider.prototype.fetch = function () {
|
|
5574
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
5575
|
+
return __generator(this, function (_a) {
|
|
5576
|
+
return [2 /*return*/, this.fetchSync()];
|
|
5577
|
+
});
|
|
5578
|
+
});
|
|
5579
|
+
};
|
|
5580
|
+
KTDataTableLocalDataProvider.prototype.fetchSync = function () {
|
|
5581
|
+
var state = this.options.stateStore.getState();
|
|
5582
|
+
var originalData = state.originalData;
|
|
5583
|
+
if (!this.options.elements().tableElement ||
|
|
5584
|
+
originalData === undefined ||
|
|
5585
|
+
this.tableConfigInvalidate() ||
|
|
5586
|
+
this.localTableHeaderInvalidate() ||
|
|
5587
|
+
this.localTableContentInvalidate()) {
|
|
5588
|
+
var _a = this.localExtractTableContent(), originalData_1 = _a.originalData, originalDataAttributes = _a.originalDataAttributes;
|
|
5589
|
+
this.options.stateStore.setOriginalData(originalData_1, originalDataAttributes);
|
|
5590
|
+
}
|
|
5591
|
+
originalData = this.options.stateStore.getState().originalData;
|
|
5592
|
+
var data = __spreadArray([], originalData, true);
|
|
5593
|
+
var filteredData = data;
|
|
5594
|
+
var _b = this.options.stateStore.getState(), sortField = _b.sortField, sortOrder = _b.sortOrder, page = _b.page, pageSize = _b.pageSize, search = _b.search;
|
|
5595
|
+
if (search) {
|
|
5596
|
+
var searchTerm = typeof search === 'string' ? search : '';
|
|
5597
|
+
filteredData = data = this.options.config.search.callback.call(this, data, searchTerm);
|
|
5598
|
+
}
|
|
5599
|
+
if (sortField !== undefined &&
|
|
5600
|
+
sortOrder !== undefined &&
|
|
5601
|
+
sortOrder !== '' &&
|
|
5602
|
+
typeof this.options.config.sort.callback === 'function') {
|
|
5603
|
+
data = this.options.config.sort.callback.call(this, data, sortField, sortOrder);
|
|
5604
|
+
}
|
|
5605
|
+
if ((data === null || data === void 0 ? void 0 : data.length) > 0) {
|
|
5606
|
+
var startIndex = (page - 1) * pageSize;
|
|
5607
|
+
var endIndex = startIndex + pageSize;
|
|
5608
|
+
data = data.slice(startIndex, endIndex);
|
|
5609
|
+
}
|
|
5610
|
+
return {
|
|
5611
|
+
data: data,
|
|
5612
|
+
totalItems: filteredData.length,
|
|
5613
|
+
};
|
|
5614
|
+
};
|
|
5615
|
+
KTDataTableLocalDataProvider.prototype.localTableContentInvalidate = function () {
|
|
5616
|
+
var tbodyElement = this.options.elements().tbodyElement;
|
|
5617
|
+
var checksum = utils_1.default.checksum(JSON.stringify(tbodyElement.innerHTML));
|
|
5618
|
+
if (this.options.stateStore.getState()._contentChecksum !== checksum) {
|
|
5619
|
+
this.options.stateStore.patchState({ _contentChecksum: checksum });
|
|
5620
|
+
return true;
|
|
5621
|
+
}
|
|
5622
|
+
return false;
|
|
5623
|
+
};
|
|
5624
|
+
KTDataTableLocalDataProvider.prototype.tableConfigInvalidate = function () {
|
|
5625
|
+
var _a = this.options.config, _state = _a._state, restConfig = __rest(_a, ["_state"]);
|
|
5626
|
+
var checksum = utils_1.default.checksum(JSON.stringify(restConfig));
|
|
5627
|
+
if (_state._configChecksum !== checksum) {
|
|
5628
|
+
this.options.stateStore.patchState({ _configChecksum: checksum });
|
|
5629
|
+
return true;
|
|
5630
|
+
}
|
|
5631
|
+
return false;
|
|
5632
|
+
};
|
|
5633
|
+
KTDataTableLocalDataProvider.prototype.localExtractTableContent = function () {
|
|
5634
|
+
var originalData = [];
|
|
5635
|
+
var originalDataAttributes = [];
|
|
5636
|
+
var _a = this.options.elements(), tbodyElement = _a.tbodyElement, theadElement = _a.theadElement;
|
|
5637
|
+
this.options.storeOriginalClasses();
|
|
5638
|
+
var rows = tbodyElement.querySelectorAll('tr');
|
|
5639
|
+
var allThs = theadElement
|
|
5640
|
+
? theadElement.querySelectorAll('th')
|
|
5641
|
+
: [];
|
|
5642
|
+
var ths = Array.from(allThs).filter(function (th) {
|
|
5643
|
+
return th.hasAttribute('data-kt-datatable-column');
|
|
5644
|
+
});
|
|
5645
|
+
var columnsByIndex = ths.length > 0 && ths.length !== allThs.length ? Array.from(allThs) : ths;
|
|
5646
|
+
rows.forEach(function (row) {
|
|
5647
|
+
var dataRow = {};
|
|
5648
|
+
var dataRowAttribute = {};
|
|
5649
|
+
row.querySelectorAll('td').forEach(function (td, index) {
|
|
5650
|
+
var _a, _b, _c;
|
|
5651
|
+
var colName = (_a = columnsByIndex[index]) === null || _a === void 0 ? void 0 : _a.getAttribute('data-kt-datatable-column');
|
|
5652
|
+
if (colName) {
|
|
5653
|
+
dataRow[colName] = (_b = td.innerHTML) === null || _b === void 0 ? void 0 : _b.trim();
|
|
5654
|
+
}
|
|
5655
|
+
else {
|
|
5656
|
+
dataRow[index] = (_c = td.innerHTML) === null || _c === void 0 ? void 0 : _c.trim();
|
|
5657
|
+
}
|
|
5658
|
+
});
|
|
5659
|
+
if (Object.keys(dataRow).length > 0) {
|
|
5660
|
+
originalData.push(dataRow);
|
|
5661
|
+
originalDataAttributes.push(dataRowAttribute);
|
|
5662
|
+
}
|
|
5663
|
+
});
|
|
5664
|
+
return { originalData: originalData, originalDataAttributes: originalDataAttributes };
|
|
5665
|
+
};
|
|
5666
|
+
KTDataTableLocalDataProvider.prototype.localTableHeaderInvalidate = function () {
|
|
5667
|
+
var originalData = this.options.stateStore.getState().originalData;
|
|
5668
|
+
var theadElement = this.options.elements().theadElement;
|
|
5669
|
+
var totalColumns = originalData.length
|
|
5670
|
+
? Object.keys(originalData[0]).length
|
|
5671
|
+
: 0;
|
|
5672
|
+
var allThs = theadElement
|
|
5673
|
+
? theadElement.querySelectorAll('th')
|
|
5674
|
+
: [];
|
|
5675
|
+
var thsWithColumn = Array.from(allThs).filter(function (th) {
|
|
5676
|
+
return th.hasAttribute('data-kt-datatable-column');
|
|
5677
|
+
});
|
|
5678
|
+
var currentTableHeaders = thsWithColumn.length > 0
|
|
5679
|
+
? thsWithColumn.length !== allThs.length
|
|
5680
|
+
? allThs.length
|
|
5681
|
+
: thsWithColumn.length
|
|
5682
|
+
: this.options.getLogicalColumnCount();
|
|
5683
|
+
return currentTableHeaders !== totalColumns;
|
|
5684
|
+
};
|
|
5685
|
+
return KTDataTableLocalDataProvider;
|
|
5686
|
+
}());
|
|
5687
|
+
exports.KTDataTableLocalDataProvider = KTDataTableLocalDataProvider;
|
|
5688
|
+
|
|
5689
|
+
|
|
5690
|
+
/***/ }),
|
|
5691
|
+
|
|
5692
|
+
/***/ "./src/components/datatable/datatable-pagination-renderer.ts":
|
|
5693
|
+
/*!*******************************************************************!*\
|
|
5694
|
+
!*** ./src/components/datatable/datatable-pagination-renderer.ts ***!
|
|
5695
|
+
\*******************************************************************/
|
|
5696
|
+
/***/ (function(__unused_webpack_module, exports) {
|
|
5697
|
+
|
|
5698
|
+
|
|
5699
|
+
/**
|
|
5700
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
5701
|
+
* Copyright 2025 by Keenthemes Inc
|
|
5702
|
+
*/
|
|
5703
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
5704
|
+
exports.KTDataTableDomPaginationRenderer = void 0;
|
|
5705
|
+
var KTDataTableDomPaginationRenderer = /** @class */ (function () {
|
|
5706
|
+
function KTDataTableDomPaginationRenderer() {
|
|
5707
|
+
}
|
|
5708
|
+
KTDataTableDomPaginationRenderer.prototype.render = function (input) {
|
|
5709
|
+
var _this = this;
|
|
5710
|
+
this.removeChildElements(input.sizeElement);
|
|
5711
|
+
this.createPageSizeControls(input);
|
|
5712
|
+
this.removeChildElements(input.paginationElement);
|
|
5713
|
+
this.createPaginationControls(input);
|
|
5714
|
+
return function () {
|
|
5715
|
+
if (input.sizeElement) {
|
|
5716
|
+
input.sizeElement.onchange = null;
|
|
5717
|
+
}
|
|
5718
|
+
_this.removeChildElements(input.paginationElement);
|
|
5719
|
+
};
|
|
5720
|
+
};
|
|
5721
|
+
KTDataTableDomPaginationRenderer.prototype.removeChildElements = function (container) {
|
|
5722
|
+
if (!container) {
|
|
5723
|
+
return;
|
|
5724
|
+
}
|
|
5725
|
+
while (container.firstChild) {
|
|
5726
|
+
container.removeChild(container.firstChild);
|
|
5727
|
+
}
|
|
5728
|
+
};
|
|
5729
|
+
KTDataTableDomPaginationRenderer.prototype.createPageSizeControls = function (input) {
|
|
5730
|
+
if (!input.sizeElement) {
|
|
5731
|
+
return input.sizeElement;
|
|
5732
|
+
}
|
|
5733
|
+
setTimeout(function () {
|
|
5734
|
+
var _a;
|
|
5735
|
+
var options = input.config.pageSizes.map(function (size) {
|
|
5736
|
+
var option = document.createElement('option');
|
|
5737
|
+
option.value = String(size);
|
|
5738
|
+
option.text = String(size);
|
|
5739
|
+
option.selected = input.state.pageSize === size;
|
|
5740
|
+
return option;
|
|
5741
|
+
});
|
|
5742
|
+
(_a = input.sizeElement).append.apply(_a, options);
|
|
5743
|
+
}, 100);
|
|
5744
|
+
input.sizeElement.onchange = function (event) {
|
|
5745
|
+
input.reloadPageSize(Number(event.target.value), 1);
|
|
5746
|
+
};
|
|
5747
|
+
return input.sizeElement;
|
|
5748
|
+
};
|
|
5749
|
+
KTDataTableDomPaginationRenderer.prototype.createPaginationControls = function (input) {
|
|
5750
|
+
if (!input.infoElement ||
|
|
5751
|
+
!input.paginationElement ||
|
|
5752
|
+
input.dataLength === 0) {
|
|
5753
|
+
return null;
|
|
5754
|
+
}
|
|
5755
|
+
this.setPaginationInfoText(input);
|
|
5756
|
+
this.createPaginationButtons(input.paginationElement, input);
|
|
5757
|
+
return input.paginationElement;
|
|
5758
|
+
};
|
|
5759
|
+
KTDataTableDomPaginationRenderer.prototype.setPaginationInfoText = function (input) {
|
|
5760
|
+
input.infoElement.textContent = input.config.info
|
|
5761
|
+
.replace('{start}', (input.state.page - 1) * input.state.pageSize + 1 + '')
|
|
5762
|
+
.replace('{end}', Math.min(input.state.page * input.state.pageSize, input.state.totalItems) + '')
|
|
5763
|
+
.replace('{total}', input.state.totalItems + '');
|
|
5764
|
+
};
|
|
5765
|
+
KTDataTableDomPaginationRenderer.prototype.createPaginationButtons = function (paginationContainer, input) {
|
|
5766
|
+
var _a = input.state, currentPage = _a.page, totalPages = _a.totalPages;
|
|
5767
|
+
var _b = input.config.pagination, previous = _b.previous, next = _b.next, number = _b.number, more = _b.more;
|
|
5768
|
+
var createButton = function (text, className, disabled, handleClick) {
|
|
5769
|
+
var button = document.createElement('button');
|
|
5770
|
+
button.className = className;
|
|
5771
|
+
button.innerHTML = text;
|
|
5772
|
+
button.disabled = disabled;
|
|
5773
|
+
button.onclick = handleClick;
|
|
5774
|
+
return button;
|
|
5775
|
+
};
|
|
5776
|
+
paginationContainer.appendChild(createButton(previous.text, "".concat(previous.class).concat(currentPage === 1 ? ' disabled' : ''), currentPage === 1, function () { return input.paginateData(currentPage - 1); }));
|
|
5777
|
+
if (input.config.pageMore) {
|
|
5778
|
+
var range_1 = this.calculatePageRange(currentPage, totalPages, input.config.pageMoreLimit);
|
|
5779
|
+
if (range_1.start > 1) {
|
|
5780
|
+
paginationContainer.appendChild(createButton(more.text, more.class, false, function () {
|
|
5781
|
+
return input.paginateData(Math.max(1, range_1.start - 1));
|
|
5782
|
+
}));
|
|
5783
|
+
}
|
|
5784
|
+
var _loop_1 = function (i) {
|
|
5785
|
+
paginationContainer.appendChild(createButton(number.text.replace('{page}', i.toString()), "".concat(number.class).concat(currentPage === i ? ' active disabled' : ''), currentPage === i, function () { return input.paginateData(i); }));
|
|
5786
|
+
};
|
|
5787
|
+
for (var i = range_1.start; i <= range_1.end; i++) {
|
|
5788
|
+
_loop_1(i);
|
|
5789
|
+
}
|
|
5790
|
+
if (range_1.end < totalPages) {
|
|
5791
|
+
paginationContainer.appendChild(createButton(more.text, more.class, false, function () {
|
|
5792
|
+
return input.paginateData(Math.min(totalPages, range_1.end + 1));
|
|
5793
|
+
}));
|
|
5794
|
+
}
|
|
5795
|
+
}
|
|
5796
|
+
else {
|
|
5797
|
+
var _loop_2 = function (i) {
|
|
5798
|
+
paginationContainer.appendChild(createButton(number.text.replace('{page}', i.toString()), "".concat(number.class).concat(currentPage === i ? ' active disabled' : ''), currentPage === i, function () { return input.paginateData(i); }));
|
|
5799
|
+
};
|
|
5800
|
+
for (var i = 1; i <= totalPages; i++) {
|
|
5801
|
+
_loop_2(i);
|
|
5802
|
+
}
|
|
5803
|
+
}
|
|
5804
|
+
paginationContainer.appendChild(createButton(next.text, "".concat(next.class).concat(currentPage === totalPages ? ' disabled' : ''), currentPage === totalPages, function () { return input.paginateData(currentPage + 1); }));
|
|
5805
|
+
};
|
|
5806
|
+
KTDataTableDomPaginationRenderer.prototype.calculatePageRange = function (currentPage, totalPages, maxButtons) {
|
|
5807
|
+
var startPage, endPage;
|
|
5808
|
+
var halfMaxButtons = Math.floor(maxButtons / 2);
|
|
5809
|
+
if (totalPages <= maxButtons) {
|
|
5810
|
+
startPage = 1;
|
|
5811
|
+
endPage = totalPages;
|
|
5812
|
+
}
|
|
5813
|
+
else {
|
|
5814
|
+
startPage = Math.max(currentPage - halfMaxButtons, 1);
|
|
5815
|
+
endPage = Math.min(startPage + maxButtons - 1, totalPages);
|
|
5816
|
+
if (endPage - startPage < maxButtons - 1) {
|
|
5817
|
+
startPage = Math.max(endPage - maxButtons + 1, 1);
|
|
5818
|
+
}
|
|
5819
|
+
}
|
|
5820
|
+
return { start: startPage, end: endPage };
|
|
5821
|
+
};
|
|
5822
|
+
return KTDataTableDomPaginationRenderer;
|
|
5823
|
+
}());
|
|
5824
|
+
exports.KTDataTableDomPaginationRenderer = KTDataTableDomPaginationRenderer;
|
|
5825
|
+
|
|
5826
|
+
|
|
5827
|
+
/***/ }),
|
|
5828
|
+
|
|
5829
|
+
/***/ "./src/components/datatable/datatable-remote-provider.ts":
|
|
5830
|
+
/*!***************************************************************!*\
|
|
5831
|
+
!*** ./src/components/datatable/datatable-remote-provider.ts ***!
|
|
5832
|
+
\***************************************************************/
|
|
5833
|
+
/***/ (function(__unused_webpack_module, exports) {
|
|
5834
|
+
|
|
5835
|
+
|
|
5836
|
+
/**
|
|
5837
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
5838
|
+
* Copyright 2025 by Keenthemes Inc
|
|
5839
|
+
*/
|
|
5840
|
+
var __assign = (this && this.__assign) || function () {
|
|
5841
|
+
__assign = Object.assign || function(t) {
|
|
5842
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5843
|
+
s = arguments[i];
|
|
5844
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
5845
|
+
t[p] = s[p];
|
|
5846
|
+
}
|
|
5847
|
+
return t;
|
|
5848
|
+
};
|
|
5849
|
+
return __assign.apply(this, arguments);
|
|
5850
|
+
};
|
|
5851
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5852
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5853
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5854
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5855
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
5856
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
5857
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
5858
|
+
});
|
|
5859
|
+
};
|
|
5860
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
5861
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
5862
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
5863
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
5864
|
+
function step(op) {
|
|
5865
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
5866
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
5867
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
5868
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
5869
|
+
switch (op[0]) {
|
|
5870
|
+
case 0: case 1: t = op; break;
|
|
5871
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
5872
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
5873
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
5874
|
+
default:
|
|
5875
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
5876
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
5877
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
5878
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
5879
|
+
if (t[2]) _.ops.pop();
|
|
5880
|
+
_.trys.pop(); continue;
|
|
5881
|
+
}
|
|
5882
|
+
op = body.call(thisArg, _);
|
|
5883
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
5884
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
5885
|
+
}
|
|
5886
|
+
};
|
|
5887
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
5888
|
+
exports.KTDataTableRemoteDataProvider = void 0;
|
|
5889
|
+
var KTDataTableRemoteDataProvider = /** @class */ (function () {
|
|
5890
|
+
function KTDataTableRemoteDataProvider(options) {
|
|
5891
|
+
this.options = options;
|
|
5892
|
+
this.abortController = null;
|
|
5893
|
+
this.requestId = 0;
|
|
5894
|
+
}
|
|
5895
|
+
KTDataTableRemoteDataProvider.prototype.dispose = function () {
|
|
5896
|
+
if (this.abortController) {
|
|
5897
|
+
this.abortController.abort();
|
|
5898
|
+
this.abortController = null;
|
|
5899
|
+
}
|
|
5900
|
+
};
|
|
5901
|
+
KTDataTableRemoteDataProvider.prototype.fetch = function () {
|
|
5902
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
5903
|
+
var currentRequestId, queryParams, response, error_1, responseData, error_2;
|
|
5904
|
+
return __generator(this, function (_a) {
|
|
5905
|
+
switch (_a.label) {
|
|
5906
|
+
case 0:
|
|
5907
|
+
currentRequestId = ++this.requestId;
|
|
5908
|
+
queryParams = this.getQueryParamsForFetchRequest();
|
|
5909
|
+
_a.label = 1;
|
|
5910
|
+
case 1:
|
|
5911
|
+
_a.trys.push([1, 3, , 4]);
|
|
5912
|
+
return [4 /*yield*/, this.performFetchRequest(queryParams)];
|
|
5913
|
+
case 2:
|
|
5914
|
+
response = _a.sent();
|
|
5915
|
+
return [3 /*break*/, 4];
|
|
5916
|
+
case 3:
|
|
5917
|
+
error_1 = _a.sent();
|
|
5918
|
+
if (error_1.name === 'AbortError') {
|
|
5919
|
+
return [2 /*return*/, { data: [], totalItems: 0, skipped: true }];
|
|
5920
|
+
}
|
|
5921
|
+
throw error_1;
|
|
5922
|
+
case 4:
|
|
5923
|
+
if (currentRequestId !== this.requestId) {
|
|
5924
|
+
return [2 /*return*/, { data: [], totalItems: 0, skipped: true }];
|
|
5925
|
+
}
|
|
5926
|
+
responseData = null;
|
|
5927
|
+
_a.label = 5;
|
|
5928
|
+
case 5:
|
|
5929
|
+
_a.trys.push([5, 7, , 8]);
|
|
5930
|
+
return [4 /*yield*/, response.json()];
|
|
5931
|
+
case 6:
|
|
5932
|
+
responseData = _a.sent();
|
|
5933
|
+
return [3 /*break*/, 8];
|
|
5934
|
+
case 7:
|
|
5935
|
+
error_2 = _a.sent();
|
|
5936
|
+
this.options.eventAdapter.emit('parseError', {
|
|
5937
|
+
response: response,
|
|
5938
|
+
error: String(error_2),
|
|
5939
|
+
status: response.status,
|
|
5940
|
+
statusText: response.statusText,
|
|
5941
|
+
});
|
|
5942
|
+
return [2 /*return*/, { data: [], totalItems: 0, skipped: true }];
|
|
5943
|
+
case 8:
|
|
5944
|
+
if (currentRequestId !== this.requestId) {
|
|
5945
|
+
return [2 /*return*/, { data: [], totalItems: 0, skipped: true }];
|
|
5946
|
+
}
|
|
5947
|
+
this.options.eventAdapter.emit('fetched', { response: responseData });
|
|
5948
|
+
if (typeof this.options.config.mapResponse === 'function') {
|
|
5949
|
+
responseData = this.options.config.mapResponse.call(this, responseData);
|
|
5950
|
+
}
|
|
5951
|
+
return [2 /*return*/, {
|
|
5952
|
+
data: responseData.data,
|
|
5953
|
+
totalItems: responseData.totalCount,
|
|
5954
|
+
response: responseData,
|
|
5955
|
+
}];
|
|
4926
5956
|
}
|
|
4927
5957
|
});
|
|
4928
|
-
}
|
|
4929
|
-
updateHeaderCheckboxState();
|
|
4930
|
-
fireEvent('changed');
|
|
4931
|
-
}
|
|
4932
|
-
// Reapply checked state to visible checkboxes based on selectedRows
|
|
4933
|
-
function reapplyCheckedStates() {
|
|
4934
|
-
var selectedRows = getSelectedRows();
|
|
4935
|
-
if (!targetElements)
|
|
4936
|
-
return;
|
|
4937
|
-
targetElements.forEach(function (element) {
|
|
4938
|
-
var _a;
|
|
4939
|
-
if (!element)
|
|
4940
|
-
return;
|
|
4941
|
-
var value = element.value;
|
|
4942
|
-
element.checked = selectedRows.includes(value);
|
|
4943
|
-
// Update row class
|
|
4944
|
-
var row = element.closest('tr');
|
|
4945
|
-
if (row && ((_a = config.checkbox) === null || _a === void 0 ? void 0 : _a.checkedClass)) {
|
|
4946
|
-
if (element.checked) {
|
|
4947
|
-
row.classList.add(config.checkbox.checkedClass);
|
|
4948
|
-
}
|
|
4949
|
-
else {
|
|
4950
|
-
row.classList.remove(config.checkbox.checkedClass);
|
|
4951
|
-
}
|
|
4952
|
-
}
|
|
4953
5958
|
});
|
|
4954
|
-
}
|
|
4955
|
-
|
|
4956
|
-
|
|
4957
|
-
|
|
4958
|
-
|
|
4959
|
-
|
|
4960
|
-
|
|
4961
|
-
|
|
4962
|
-
if (targetElements[i].checked)
|
|
4963
|
-
checked++;
|
|
5959
|
+
};
|
|
5960
|
+
KTDataTableRemoteDataProvider.prototype.getQueryParamsForFetchRequest = function () {
|
|
5961
|
+
var _a = this.options.stateStore.getState(), page = _a.page, pageSize = _a.pageSize, sortField = _a.sortField, sortOrder = _a.sortOrder, filters = _a.filters, search = _a.search;
|
|
5962
|
+
var queryParams = new URLSearchParams();
|
|
5963
|
+
queryParams.set('page', String(page));
|
|
5964
|
+
queryParams.set('size', String(pageSize));
|
|
5965
|
+
if (sortOrder !== undefined) {
|
|
5966
|
+
queryParams.set('sortOrder', String(sortOrder));
|
|
4964
5967
|
}
|
|
4965
|
-
if (
|
|
4966
|
-
|
|
4967
|
-
headerCheckElement.checked = false;
|
|
4968
|
-
headerChecked = false;
|
|
5968
|
+
if (sortField !== undefined) {
|
|
5969
|
+
queryParams.set('sortField', String(sortField));
|
|
4969
5970
|
}
|
|
4970
|
-
|
|
4971
|
-
|
|
4972
|
-
|
|
4973
|
-
|
|
5971
|
+
if (Array.isArray(filters) && filters.length) {
|
|
5972
|
+
queryParams.set('filters', JSON.stringify(filters.map(function (filter) { return ({
|
|
5973
|
+
column: filter.column,
|
|
5974
|
+
type: filter.type,
|
|
5975
|
+
value: filter.value,
|
|
5976
|
+
}); })));
|
|
4974
5977
|
}
|
|
4975
|
-
|
|
4976
|
-
|
|
4977
|
-
headerCheckElement.checked = true;
|
|
4978
|
-
headerChecked = true;
|
|
5978
|
+
if (search) {
|
|
5979
|
+
queryParams.set('search', typeof search === 'object' ? JSON.stringify(search) : search);
|
|
4979
5980
|
}
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
|
|
4983
|
-
return
|
|
4984
|
-
}
|
|
4985
|
-
function getChecked() {
|
|
4986
|
-
return getSelectedRows();
|
|
4987
|
-
}
|
|
4988
|
-
function check() {
|
|
4989
|
-
change(true);
|
|
4990
|
-
reapplyCheckedStates();
|
|
4991
|
-
updateHeaderCheckboxState();
|
|
4992
|
-
}
|
|
4993
|
-
function uncheck() {
|
|
4994
|
-
change(false);
|
|
4995
|
-
reapplyCheckedStates();
|
|
4996
|
-
updateHeaderCheckboxState();
|
|
4997
|
-
}
|
|
4998
|
-
function toggle() {
|
|
4999
|
-
checkboxToggle();
|
|
5000
|
-
reapplyCheckedStates();
|
|
5001
|
-
updateHeaderCheckboxState();
|
|
5002
|
-
}
|
|
5003
|
-
function updateState() {
|
|
5004
|
-
// Called after redraw/pagination
|
|
5005
|
-
targetElements = element.querySelectorAll(config.attributes.checkbox);
|
|
5006
|
-
reapplyCheckedStates();
|
|
5007
|
-
updateHeaderCheckboxState();
|
|
5008
|
-
}
|
|
5009
|
-
return {
|
|
5010
|
-
init: init,
|
|
5011
|
-
check: check,
|
|
5012
|
-
uncheck: uncheck,
|
|
5013
|
-
toggle: toggle,
|
|
5014
|
-
isChecked: isChecked,
|
|
5015
|
-
getChecked: getChecked,
|
|
5016
|
-
updateState: updateState,
|
|
5981
|
+
if (typeof this.options.config.mapRequest === 'function') {
|
|
5982
|
+
queryParams = this.options.config.mapRequest.call(this, queryParams);
|
|
5983
|
+
}
|
|
5984
|
+
return queryParams;
|
|
5017
5985
|
};
|
|
5018
|
-
|
|
5986
|
+
KTDataTableRemoteDataProvider.prototype.performFetchRequest = function (queryParams) {
|
|
5987
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
5988
|
+
var requestMethod, requestBody, apiEndpoint, apiEndpointWithQueryParams;
|
|
5989
|
+
var _this = this;
|
|
5990
|
+
return __generator(this, function (_a) {
|
|
5991
|
+
requestMethod = this.options.config.requestMethod;
|
|
5992
|
+
requestBody = undefined;
|
|
5993
|
+
apiEndpoint = this.options.config.apiEndpoint;
|
|
5994
|
+
if (this.abortController) {
|
|
5995
|
+
this.abortController.abort();
|
|
5996
|
+
}
|
|
5997
|
+
this.abortController = new AbortController();
|
|
5998
|
+
if (requestMethod === 'POST') {
|
|
5999
|
+
requestBody = queryParams;
|
|
6000
|
+
}
|
|
6001
|
+
else if (requestMethod === 'GET') {
|
|
6002
|
+
apiEndpointWithQueryParams = this.options.createUrl(apiEndpoint);
|
|
6003
|
+
apiEndpointWithQueryParams.search = queryParams.toString();
|
|
6004
|
+
apiEndpoint = apiEndpointWithQueryParams.toString();
|
|
6005
|
+
}
|
|
6006
|
+
return [2 /*return*/, fetch(apiEndpoint, __assign(__assign({ method: requestMethod, body: requestBody, headers: this.options.config.requestHeaders }, (this.options.config.requestCredentials && {
|
|
6007
|
+
credentials: this.options.config.requestCredentials,
|
|
6008
|
+
})), (this.abortController && { signal: this.abortController.signal }))).catch(function (error) {
|
|
6009
|
+
if (error.name === 'AbortError') {
|
|
6010
|
+
return Promise.reject(error);
|
|
6011
|
+
}
|
|
6012
|
+
_this.options.eventAdapter.emit('error', { error: error });
|
|
6013
|
+
_this.options.noticeOnTable('Error performing fetch request: ' + String(error));
|
|
6014
|
+
throw error;
|
|
6015
|
+
})];
|
|
6016
|
+
});
|
|
6017
|
+
});
|
|
6018
|
+
};
|
|
6019
|
+
return KTDataTableRemoteDataProvider;
|
|
6020
|
+
}());
|
|
6021
|
+
exports.KTDataTableRemoteDataProvider = KTDataTableRemoteDataProvider;
|
|
5019
6022
|
|
|
5020
6023
|
|
|
5021
6024
|
/***/ }),
|
|
@@ -5186,9 +6189,241 @@ function createSortHandler(config, theadElement, getState, setState, fireEvent,
|
|
|
5186
6189
|
updateData();
|
|
5187
6190
|
});
|
|
5188
6191
|
});
|
|
5189
|
-
}
|
|
5190
|
-
return { initSort: initSort, sortData: sortData, toggleSortOrder: toggleSortOrder, setSortIcon: setSortIcon };
|
|
5191
|
-
}
|
|
6192
|
+
}
|
|
6193
|
+
return { initSort: initSort, sortData: sortData, toggleSortOrder: toggleSortOrder, setSortIcon: setSortIcon };
|
|
6194
|
+
}
|
|
6195
|
+
|
|
6196
|
+
|
|
6197
|
+
/***/ }),
|
|
6198
|
+
|
|
6199
|
+
/***/ "./src/components/datatable/datatable-state-store.ts":
|
|
6200
|
+
/*!***********************************************************!*\
|
|
6201
|
+
!*** ./src/components/datatable/datatable-state-store.ts ***!
|
|
6202
|
+
\***********************************************************/
|
|
6203
|
+
/***/ (function(__unused_webpack_module, exports) {
|
|
6204
|
+
|
|
6205
|
+
|
|
6206
|
+
/**
|
|
6207
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
6208
|
+
* Copyright 2025 by Keenthemes Inc
|
|
6209
|
+
*/
|
|
6210
|
+
var __assign = (this && this.__assign) || function () {
|
|
6211
|
+
__assign = Object.assign || function(t) {
|
|
6212
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6213
|
+
s = arguments[i];
|
|
6214
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6215
|
+
t[p] = s[p];
|
|
6216
|
+
}
|
|
6217
|
+
return t;
|
|
6218
|
+
};
|
|
6219
|
+
return __assign.apply(this, arguments);
|
|
6220
|
+
};
|
|
6221
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
6222
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
6223
|
+
if (ar || !(i in from)) {
|
|
6224
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6225
|
+
ar[i] = from[i];
|
|
6226
|
+
}
|
|
6227
|
+
}
|
|
6228
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
6229
|
+
};
|
|
6230
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
6231
|
+
exports.KTDataTableConfigStateStore = void 0;
|
|
6232
|
+
var KTDataTableConfigStateStore = /** @class */ (function () {
|
|
6233
|
+
function KTDataTableConfigStateStore(config) {
|
|
6234
|
+
this.config = config;
|
|
6235
|
+
this.ensureState();
|
|
6236
|
+
}
|
|
6237
|
+
KTDataTableConfigStateStore.prototype.getState = function () {
|
|
6238
|
+
this.ensureState();
|
|
6239
|
+
return __assign({ page: 1, sortField: null, sortOrder: '', pageSize: this.config.pageSize, filters: [] }, this.config._state);
|
|
6240
|
+
};
|
|
6241
|
+
KTDataTableConfigStateStore.prototype.replaceState = function (state) {
|
|
6242
|
+
this.config._state = state;
|
|
6243
|
+
this.ensureState();
|
|
6244
|
+
};
|
|
6245
|
+
KTDataTableConfigStateStore.prototype.patchState = function (state) {
|
|
6246
|
+
this.ensureState();
|
|
6247
|
+
this.config._state = __assign(__assign({}, this.config._state), state);
|
|
6248
|
+
};
|
|
6249
|
+
KTDataTableConfigStateStore.prototype.setPage = function (page) {
|
|
6250
|
+
this.patchState({ page: page });
|
|
6251
|
+
};
|
|
6252
|
+
KTDataTableConfigStateStore.prototype.setPageSize = function (pageSize, page) {
|
|
6253
|
+
if (page === void 0) { page = 1; }
|
|
6254
|
+
this.patchState({ pageSize: pageSize, page: page });
|
|
6255
|
+
};
|
|
6256
|
+
KTDataTableConfigStateStore.prototype.setSort = function (field, order) {
|
|
6257
|
+
this.patchState({
|
|
6258
|
+
sortField: field,
|
|
6259
|
+
sortOrder: order,
|
|
6260
|
+
});
|
|
6261
|
+
};
|
|
6262
|
+
KTDataTableConfigStateStore.prototype.setSearch = function (search) {
|
|
6263
|
+
this.patchState({ search: search, page: 1 });
|
|
6264
|
+
};
|
|
6265
|
+
KTDataTableConfigStateStore.prototype.setFilter = function (filter) {
|
|
6266
|
+
var filters = __spreadArray(__spreadArray([], (this.getState().filters || []).filter(function (currentFilter) { return currentFilter.column !== filter.column; }), true), [
|
|
6267
|
+
filter,
|
|
6268
|
+
], false);
|
|
6269
|
+
this.patchState({ filters: filters, page: 1 });
|
|
6270
|
+
};
|
|
6271
|
+
KTDataTableConfigStateStore.prototype.setOriginalData = function (originalData, originalDataAttributes) {
|
|
6272
|
+
this.patchState({
|
|
6273
|
+
originalData: originalData,
|
|
6274
|
+
originalDataAttributes: originalDataAttributes,
|
|
6275
|
+
});
|
|
6276
|
+
};
|
|
6277
|
+
KTDataTableConfigStateStore.prototype.ensureState = function () {
|
|
6278
|
+
if (!this.config._state) {
|
|
6279
|
+
this.config._state = {};
|
|
6280
|
+
}
|
|
6281
|
+
};
|
|
6282
|
+
return KTDataTableConfigStateStore;
|
|
6283
|
+
}());
|
|
6284
|
+
exports.KTDataTableConfigStateStore = KTDataTableConfigStateStore;
|
|
6285
|
+
|
|
6286
|
+
|
|
6287
|
+
/***/ }),
|
|
6288
|
+
|
|
6289
|
+
/***/ "./src/components/datatable/datatable-table-renderer.ts":
|
|
6290
|
+
/*!**************************************************************!*\
|
|
6291
|
+
!*** ./src/components/datatable/datatable-table-renderer.ts ***!
|
|
6292
|
+
\**************************************************************/
|
|
6293
|
+
/***/ (function(__unused_webpack_module, exports) {
|
|
6294
|
+
|
|
6295
|
+
|
|
6296
|
+
/**
|
|
6297
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
6298
|
+
* Copyright 2025 by Keenthemes Inc
|
|
6299
|
+
*/
|
|
6300
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
6301
|
+
exports.KTDataTableDomTableRenderer = void 0;
|
|
6302
|
+
var KTDataTableDomTableRenderer = /** @class */ (function () {
|
|
6303
|
+
function KTDataTableDomTableRenderer() {
|
|
6304
|
+
}
|
|
6305
|
+
KTDataTableDomTableRenderer.prototype.render = function (input) {
|
|
6306
|
+
while (input.tableElement.tBodies.length) {
|
|
6307
|
+
input.tableElement.removeChild(input.tableElement.tBodies[0]);
|
|
6308
|
+
}
|
|
6309
|
+
var tbodyElement = input.tableElement.createTBody();
|
|
6310
|
+
if (input.originalTbodyClass) {
|
|
6311
|
+
tbodyElement.className = input.originalTbodyClass;
|
|
6312
|
+
}
|
|
6313
|
+
this.renderContent(input, tbodyElement);
|
|
6314
|
+
return tbodyElement;
|
|
6315
|
+
};
|
|
6316
|
+
KTDataTableDomTableRenderer.prototype.notice = function (tableElement, getLogicalColumnCount, message) {
|
|
6317
|
+
if (message === void 0) { message = ''; }
|
|
6318
|
+
var row = tableElement.tBodies[0].insertRow();
|
|
6319
|
+
var cell = row.insertCell();
|
|
6320
|
+
var logicalCount = getLogicalColumnCount();
|
|
6321
|
+
cell.colSpan = logicalCount > 0 ? logicalCount : 1;
|
|
6322
|
+
cell.innerHTML = message;
|
|
6323
|
+
};
|
|
6324
|
+
KTDataTableDomTableRenderer.prototype.renderContent = function (input, tbodyElement) {
|
|
6325
|
+
var _this = this;
|
|
6326
|
+
var fragment = document.createDocumentFragment();
|
|
6327
|
+
tbodyElement.textContent = '';
|
|
6328
|
+
if (input.data.length === 0) {
|
|
6329
|
+
this.notice(input.tableElement, input.getLogicalColumnCount, input.config.infoEmpty || '');
|
|
6330
|
+
return tbodyElement;
|
|
6331
|
+
}
|
|
6332
|
+
var allThs = input.theadElement
|
|
6333
|
+
? input.theadElement.querySelectorAll('th')
|
|
6334
|
+
: [];
|
|
6335
|
+
var ths = Array.from(allThs).filter(function (th) {
|
|
6336
|
+
return th.hasAttribute('data-kt-datatable-column');
|
|
6337
|
+
});
|
|
6338
|
+
var columnsToRender = ths.length > 0 && ths.length !== allThs.length ? Array.from(allThs) : ths;
|
|
6339
|
+
var logicalColumnCount = columnsToRender.length > 0
|
|
6340
|
+
? columnsToRender.length
|
|
6341
|
+
: input.getLogicalColumnCount();
|
|
6342
|
+
input.data.forEach(function (item, rowIndex) {
|
|
6343
|
+
var row = document.createElement('tr');
|
|
6344
|
+
if (input.originalTrClasses && input.originalTrClasses[rowIndex]) {
|
|
6345
|
+
row.className = input.originalTrClasses[rowIndex];
|
|
6346
|
+
}
|
|
6347
|
+
if (!input.config.columns) {
|
|
6348
|
+
_this.renderImplicitColumns(input, row, item, rowIndex, {
|
|
6349
|
+
columnsToRender: columnsToRender,
|
|
6350
|
+
logicalColumnCount: logicalColumnCount,
|
|
6351
|
+
});
|
|
6352
|
+
}
|
|
6353
|
+
else {
|
|
6354
|
+
_this.renderConfiguredColumns(input, row, item, rowIndex);
|
|
6355
|
+
}
|
|
6356
|
+
fragment.appendChild(row);
|
|
6357
|
+
});
|
|
6358
|
+
tbodyElement.appendChild(fragment);
|
|
6359
|
+
return tbodyElement;
|
|
6360
|
+
};
|
|
6361
|
+
KTDataTableDomTableRenderer.prototype.renderImplicitColumns = function (input, row, item, rowIndex, options) {
|
|
6362
|
+
var dataRowAttributes = input.getState().originalDataAttributes
|
|
6363
|
+
? input.getState().originalDataAttributes[rowIndex]
|
|
6364
|
+
: null;
|
|
6365
|
+
for (var colIndex = 0; colIndex < options.logicalColumnCount; colIndex++) {
|
|
6366
|
+
var th = options.columnsToRender[colIndex];
|
|
6367
|
+
var colName = th === null || th === void 0 ? void 0 : th.getAttribute('data-kt-datatable-column');
|
|
6368
|
+
var td = document.createElement('td');
|
|
6369
|
+
var value = void 0;
|
|
6370
|
+
if (colName && Object.prototype.hasOwnProperty.call(item, colName)) {
|
|
6371
|
+
value = item[colName];
|
|
6372
|
+
}
|
|
6373
|
+
else if (Object.prototype.hasOwnProperty.call(item, colIndex)) {
|
|
6374
|
+
value = item[colIndex];
|
|
6375
|
+
}
|
|
6376
|
+
else {
|
|
6377
|
+
value = '';
|
|
6378
|
+
}
|
|
6379
|
+
td.innerHTML = value;
|
|
6380
|
+
this.applyOriginalTdClass(input, td, rowIndex, colIndex);
|
|
6381
|
+
this.applyDataRowAttributes(td, dataRowAttributes, colIndex);
|
|
6382
|
+
row.appendChild(td);
|
|
6383
|
+
}
|
|
6384
|
+
};
|
|
6385
|
+
KTDataTableDomTableRenderer.prototype.renderConfiguredColumns = function (input, row, item, rowIndex) {
|
|
6386
|
+
var _this = this;
|
|
6387
|
+
Object.keys(input.config.columns).forEach(function (key, colIndex) {
|
|
6388
|
+
var td = document.createElement('td');
|
|
6389
|
+
var columnDef = input.config.columns[key];
|
|
6390
|
+
_this.applyOriginalTdClass(input, td, rowIndex, colIndex);
|
|
6391
|
+
if (typeof columnDef.render === 'function') {
|
|
6392
|
+
var result = columnDef.render.call(input.context, item[key], item, input.context);
|
|
6393
|
+
if (result instanceof HTMLElement ||
|
|
6394
|
+
result instanceof DocumentFragment) {
|
|
6395
|
+
td.appendChild(result);
|
|
6396
|
+
}
|
|
6397
|
+
else if (typeof result === 'string') {
|
|
6398
|
+
td.innerHTML = result;
|
|
6399
|
+
}
|
|
6400
|
+
}
|
|
6401
|
+
else {
|
|
6402
|
+
td.textContent = item[key];
|
|
6403
|
+
}
|
|
6404
|
+
if (typeof columnDef.createdCell === 'function') {
|
|
6405
|
+
columnDef.createdCell.call(input.context, td, item[key], item, row);
|
|
6406
|
+
}
|
|
6407
|
+
row.appendChild(td);
|
|
6408
|
+
});
|
|
6409
|
+
};
|
|
6410
|
+
KTDataTableDomTableRenderer.prototype.applyOriginalTdClass = function (input, td, rowIndex, colIndex) {
|
|
6411
|
+
if (input.originalTdClasses &&
|
|
6412
|
+
input.originalTdClasses[rowIndex] &&
|
|
6413
|
+
input.originalTdClasses[rowIndex][colIndex]) {
|
|
6414
|
+
td.className = input.originalTdClasses[rowIndex][colIndex];
|
|
6415
|
+
}
|
|
6416
|
+
};
|
|
6417
|
+
KTDataTableDomTableRenderer.prototype.applyDataRowAttributes = function (td, dataRowAttributes, colIndex) {
|
|
6418
|
+
if (dataRowAttributes && dataRowAttributes[colIndex]) {
|
|
6419
|
+
for (var attr in dataRowAttributes[colIndex]) {
|
|
6420
|
+
td.setAttribute(attr, dataRowAttributes[colIndex][attr]);
|
|
6421
|
+
}
|
|
6422
|
+
}
|
|
6423
|
+
};
|
|
6424
|
+
return KTDataTableDomTableRenderer;
|
|
6425
|
+
}());
|
|
6426
|
+
exports.KTDataTableDomTableRenderer = KTDataTableDomTableRenderer;
|
|
5192
6427
|
|
|
5193
6428
|
|
|
5194
6429
|
/***/ }),
|
|
@@ -5266,35 +6501,20 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
5266
6501
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
5267
6502
|
}
|
|
5268
6503
|
};
|
|
5269
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
5270
|
-
var t = {};
|
|
5271
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5272
|
-
t[p] = s[p];
|
|
5273
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
5274
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
5275
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
5276
|
-
t[p[i]] = s[p[i]];
|
|
5277
|
-
}
|
|
5278
|
-
return t;
|
|
5279
|
-
};
|
|
5280
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
5281
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
5282
|
-
if (ar || !(i in from)) {
|
|
5283
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5284
|
-
ar[i] = from[i];
|
|
5285
|
-
}
|
|
5286
|
-
}
|
|
5287
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
5288
|
-
};
|
|
5289
6504
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
5290
6505
|
exports.KTDataTable = void 0;
|
|
5291
6506
|
exports.initAllDataTables = initAllDataTables;
|
|
5292
6507
|
var component_1 = __webpack_require__(/*! ../component */ "./src/components/component.ts");
|
|
5293
|
-
var utils_1 = __webpack_require__(/*! ../../helpers/utils */ "./src/helpers/utils.ts");
|
|
5294
6508
|
var index_1 = __webpack_require__(/*! ../../index */ "./src/index.ts");
|
|
5295
6509
|
var data_1 = __webpack_require__(/*! ../../helpers/data */ "./src/helpers/data.ts");
|
|
5296
6510
|
var datatable_checkbox_1 = __webpack_require__(/*! ./datatable-checkbox */ "./src/components/datatable/datatable-checkbox.ts");
|
|
5297
6511
|
var datatable_sort_1 = __webpack_require__(/*! ./datatable-sort */ "./src/components/datatable/datatable-sort.ts");
|
|
6512
|
+
var datatable_event_adapter_1 = __webpack_require__(/*! ./datatable-event-adapter */ "./src/components/datatable/datatable-event-adapter.ts");
|
|
6513
|
+
var datatable_local_provider_1 = __webpack_require__(/*! ./datatable-local-provider */ "./src/components/datatable/datatable-local-provider.ts");
|
|
6514
|
+
var datatable_remote_provider_1 = __webpack_require__(/*! ./datatable-remote-provider */ "./src/components/datatable/datatable-remote-provider.ts");
|
|
6515
|
+
var datatable_state_store_1 = __webpack_require__(/*! ./datatable-state-store */ "./src/components/datatable/datatable-state-store.ts");
|
|
6516
|
+
var datatable_pagination_renderer_1 = __webpack_require__(/*! ./datatable-pagination-renderer */ "./src/components/datatable/datatable-pagination-renderer.ts");
|
|
6517
|
+
var datatable_table_renderer_1 = __webpack_require__(/*! ./datatable-table-renderer */ "./src/components/datatable/datatable-table-renderer.ts");
|
|
5298
6518
|
/**
|
|
5299
6519
|
* Custom DataTable plugin class with server-side API, pagination, and sorting
|
|
5300
6520
|
* @classdesc A custom KTComponent class that integrates server-side API, pagination, and sorting functionality into a table.
|
|
@@ -5314,18 +6534,9 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
5314
6534
|
_this._originalTheadClass = ''; // Store original thead class
|
|
5315
6535
|
_this._originalTdClasses = []; // Store original td classes as a 2D array [row][col]
|
|
5316
6536
|
_this._originalThClasses = []; // Store original th classes
|
|
6537
|
+
_this._cleanupCallbacks = [];
|
|
5317
6538
|
_this._data = [];
|
|
5318
6539
|
_this._isFetching = false;
|
|
5319
|
-
/**
|
|
5320
|
-
* AbortController for cancelling previous fetch requests
|
|
5321
|
-
* Used to prevent race conditions when multiple requests are triggered rapidly
|
|
5322
|
-
*/
|
|
5323
|
-
_this._abortController = null;
|
|
5324
|
-
/**
|
|
5325
|
-
* Request ID counter for tracking request sequence
|
|
5326
|
-
* Used to detect and ignore stale responses from older requests
|
|
5327
|
-
*/
|
|
5328
|
-
_this._requestId = 0;
|
|
5329
6540
|
if (data_1.default.has(element, _this._name)) {
|
|
5330
6541
|
// Already initialized (e.g. by createInstances). Merge user config so columns/sortType etc. apply.
|
|
5331
6542
|
var existing = KTDataTable.getInstance(element);
|
|
@@ -5337,21 +6548,22 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
5337
6548
|
_this._defaultConfig = _this._initDefaultConfig(config);
|
|
5338
6549
|
_this._init(element);
|
|
5339
6550
|
_this._buildConfig();
|
|
6551
|
+
_this._stateStore = new datatable_state_store_1.KTDataTableConfigStateStore(_this._config);
|
|
6552
|
+
_this._eventAdapter = (0, datatable_event_adapter_1.createDataTableEventAdapter)(_this._fireEvent.bind(_this), _this._dispatchEvent.bind(_this));
|
|
5340
6553
|
// Store the instance directly on the element
|
|
5341
6554
|
KTDataTable.asElementWithInstance(element).instance = _this;
|
|
5342
6555
|
_this._initElements();
|
|
6556
|
+
_this._tableRenderer = new datatable_table_renderer_1.KTDataTableDomTableRenderer();
|
|
6557
|
+
_this._paginationRenderer = new datatable_pagination_renderer_1.KTDataTableDomPaginationRenderer();
|
|
6558
|
+
_this._initDataProviders();
|
|
5343
6559
|
// Initialize checkbox handler
|
|
5344
|
-
_this._checkbox = (0, datatable_checkbox_1.createCheckboxHandler)(_this._element, _this._config,
|
|
5345
|
-
_this._fireEvent(eventName, eventData);
|
|
5346
|
-
_this._dispatchEvent(eventName, eventData);
|
|
5347
|
-
});
|
|
6560
|
+
_this._checkbox = (0, datatable_checkbox_1.createCheckboxHandler)(_this._element, _this._config, _this._emit.bind(_this));
|
|
5348
6561
|
// Initialize sort handler
|
|
5349
6562
|
_this._sortHandler = (0, datatable_sort_1.createSortHandler)(_this._config, _this._theadElement, function () { return ({
|
|
5350
6563
|
sortField: _this.getState().sortField,
|
|
5351
6564
|
sortOrder: _this.getState().sortOrder,
|
|
5352
6565
|
}); }, function (field, order) {
|
|
5353
|
-
_this.
|
|
5354
|
-
_this._config._state.sortOrder = order;
|
|
6566
|
+
_this._stateStore.setSort(field, order);
|
|
5355
6567
|
}, _this._fireEvent.bind(_this), _this._dispatchEvent.bind(_this), _this._updateData.bind(_this));
|
|
5356
6568
|
_this._sortHandler.initSort();
|
|
5357
6569
|
if (_this._config.stateSave === false) {
|
|
@@ -5361,8 +6573,7 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
5361
6573
|
_this._loadState();
|
|
5362
6574
|
}
|
|
5363
6575
|
_this._updateData();
|
|
5364
|
-
_this.
|
|
5365
|
-
_this._dispatchEvent('init');
|
|
6576
|
+
_this._emit('init');
|
|
5366
6577
|
return _this;
|
|
5367
6578
|
}
|
|
5368
6579
|
KTDataTable.asElementWithInstance = function (element) {
|
|
@@ -5371,6 +6582,30 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
5371
6582
|
KTDataTable.asSearchElementWithDebounce = function (element) {
|
|
5372
6583
|
return element;
|
|
5373
6584
|
};
|
|
6585
|
+
KTDataTable.prototype._emit = function (eventName, eventData) {
|
|
6586
|
+
this._eventAdapter.emit(eventName, eventData);
|
|
6587
|
+
};
|
|
6588
|
+
KTDataTable.prototype._initDataProviders = function () {
|
|
6589
|
+
var _this = this;
|
|
6590
|
+
this._localProvider = new datatable_local_provider_1.KTDataTableLocalDataProvider({
|
|
6591
|
+
config: this._config,
|
|
6592
|
+
elements: function () { return ({
|
|
6593
|
+
tableElement: _this._tableElement,
|
|
6594
|
+
tbodyElement: _this._tbodyElement,
|
|
6595
|
+
theadElement: _this._theadElement,
|
|
6596
|
+
}); },
|
|
6597
|
+
getLogicalColumnCount: this._getLogicalColumnCount.bind(this),
|
|
6598
|
+
storeOriginalClasses: this._storeOriginalClasses.bind(this),
|
|
6599
|
+
stateStore: this._stateStore,
|
|
6600
|
+
});
|
|
6601
|
+
this._remoteProvider = new datatable_remote_provider_1.KTDataTableRemoteDataProvider({
|
|
6602
|
+
config: this._config,
|
|
6603
|
+
createUrl: this._createUrl.bind(this),
|
|
6604
|
+
eventAdapter: this._eventAdapter,
|
|
6605
|
+
noticeOnTable: this._noticeOnTable.bind(this),
|
|
6606
|
+
stateStore: this._stateStore,
|
|
6607
|
+
});
|
|
6608
|
+
};
|
|
5374
6609
|
/**
|
|
5375
6610
|
* Initialize default configuration for the datatable
|
|
5376
6611
|
* @param config User-provided configuration options
|
|
@@ -5640,32 +6875,39 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
5640
6875
|
*/
|
|
5641
6876
|
KTDataTable.prototype._updateData = function () {
|
|
5642
6877
|
return __awaiter(this, void 0, void 0, function () {
|
|
5643
|
-
|
|
5644
|
-
|
|
6878
|
+
var result, _a;
|
|
6879
|
+
return __generator(this, function (_b) {
|
|
6880
|
+
switch (_b.label) {
|
|
5645
6881
|
case 0:
|
|
5646
6882
|
if (this._isFetching)
|
|
5647
6883
|
return [2 /*return*/]; // Prevent duplicate fetches
|
|
5648
6884
|
this._isFetching = true;
|
|
5649
|
-
|
|
6885
|
+
_b.label = 1;
|
|
5650
6886
|
case 1:
|
|
5651
|
-
|
|
6887
|
+
_b.trys.push([1, , 8, 9]);
|
|
5652
6888
|
this._showSpinner(); // Show spinner before fetching data
|
|
5653
|
-
|
|
5654
|
-
return [
|
|
5655
|
-
|
|
5656
|
-
|
|
5657
|
-
|
|
6889
|
+
this._emit('fetch');
|
|
6890
|
+
if (!(typeof this._config.apiEndpoint === 'undefined')) return [3 /*break*/, 2];
|
|
6891
|
+
_a = this._localProvider.fetchSync();
|
|
6892
|
+
return [3 /*break*/, 4];
|
|
6893
|
+
case 2: return [4 /*yield*/, this._remoteProvider.fetch()];
|
|
5658
6894
|
case 3:
|
|
5659
|
-
_a.sent();
|
|
5660
|
-
|
|
5661
|
-
case 4:
|
|
6895
|
+
_a = _b.sent();
|
|
6896
|
+
_b.label = 4;
|
|
6897
|
+
case 4:
|
|
6898
|
+
result = _a;
|
|
6899
|
+
if (!!result.skipped) return [3 /*break*/, 6];
|
|
6900
|
+
this._data = result.data;
|
|
6901
|
+
this._stateStore.patchState({ totalItems: result.totalItems });
|
|
6902
|
+
return [4 /*yield*/, this._draw()];
|
|
5662
6903
|
case 5:
|
|
5663
|
-
|
|
5664
|
-
|
|
5665
|
-
|
|
5666
|
-
|
|
5667
|
-
|
|
5668
|
-
|
|
6904
|
+
_b.sent();
|
|
6905
|
+
this._emit('fetched');
|
|
6906
|
+
_b.label = 6;
|
|
6907
|
+
case 6: return [4 /*yield*/, this._finalize()];
|
|
6908
|
+
case 7:
|
|
6909
|
+
_b.sent();
|
|
6910
|
+
return [3 /*break*/, 9];
|
|
5669
6911
|
case 8:
|
|
5670
6912
|
// Finally block now correctly executes after promises resolve, not immediately
|
|
5671
6913
|
this._isFetching = false;
|
|
@@ -5690,367 +6932,65 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
5690
6932
|
this._attachSearchEvent();
|
|
5691
6933
|
if (typeof index_1.default !== 'undefined') {
|
|
5692
6934
|
index_1.default.init();
|
|
5693
|
-
}
|
|
5694
|
-
/**
|
|
5695
|
-
* Hide spinner
|
|
5696
|
-
*/
|
|
5697
|
-
this._hideSpinner();
|
|
5698
|
-
};
|
|
5699
|
-
/**
|
|
5700
|
-
* Attach search event to the search input element
|
|
5701
|
-
* @returns {void}
|
|
5702
|
-
*/
|
|
5703
|
-
KTDataTable.prototype._attachSearchEvent = function () {
|
|
5704
|
-
var _this = this;
|
|
5705
|
-
var tableId = this._tableId();
|
|
5706
|
-
var searchElement = document.querySelector("[data-kt-datatable-search=\"#".concat(tableId, "\"]"));
|
|
5707
|
-
// Get search state
|
|
5708
|
-
var search = this.getState().search;
|
|
5709
|
-
// Set search value
|
|
5710
|
-
if (searchElement) {
|
|
5711
|
-
searchElement.value =
|
|
5712
|
-
search === undefined || search === null
|
|
5713
|
-
? ''
|
|
5714
|
-
: typeof search === 'string'
|
|
5715
|
-
? search
|
|
5716
|
-
: String(search);
|
|
5717
|
-
}
|
|
5718
|
-
if (searchElement) {
|
|
5719
|
-
// Check if a debounced search function already exists
|
|
5720
|
-
var searchWithDebounce = KTDataTable.asSearchElementWithDebounce(searchElement);
|
|
5721
|
-
if (searchWithDebounce._debouncedSearch) {
|
|
5722
|
-
// Remove the existing debounced event listener
|
|
5723
|
-
searchElement.removeEventListener('keyup', searchWithDebounce._debouncedSearch);
|
|
5724
|
-
}
|
|
5725
|
-
// Create a new debounced search function
|
|
5726
|
-
var debouncedSearch = this._debounce(function () {
|
|
5727
|
-
_this.search(searchElement.value);
|
|
5728
|
-
}, this._config.search.delay);
|
|
5729
|
-
// Store the new debounced function as a property of the element
|
|
5730
|
-
searchWithDebounce._debouncedSearch = debouncedSearch;
|
|
5731
|
-
// Add the new debounced event listener
|
|
5732
|
-
searchElement.addEventListener('keyup', debouncedSearch);
|
|
5733
|
-
}
|
|
5734
|
-
};
|
|
5735
|
-
/**
|
|
5736
|
-
* Fetch data from the DOM
|
|
5737
|
-
* Fetch data from the table element and save it to the `originalData` state property.
|
|
5738
|
-
* This method is used when the data is not fetched from the server via an API endpoint.
|
|
5739
|
-
*/
|
|
5740
|
-
KTDataTable.prototype._fetchDataFromLocal = function () {
|
|
5741
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
5742
|
-
var _a, sortField, sortOrder, page, pageSize, search, originalData, _b, originalData_1, originalDataAttributes, _temp, searchTerm, startIndex, endIndex;
|
|
5743
|
-
var _c;
|
|
5744
|
-
return __generator(this, function (_d) {
|
|
5745
|
-
switch (_d.label) {
|
|
5746
|
-
case 0:
|
|
5747
|
-
this._fireEvent('fetch');
|
|
5748
|
-
this._dispatchEvent('fetch');
|
|
5749
|
-
_a = this.getState(), sortField = _a.sortField, sortOrder = _a.sortOrder, page = _a.page, pageSize = _a.pageSize, search = _a.search;
|
|
5750
|
-
originalData = this.getState().originalData;
|
|
5751
|
-
// If the table element or the original data is not defined, bail
|
|
5752
|
-
if (!this._tableElement ||
|
|
5753
|
-
originalData === undefined ||
|
|
5754
|
-
this._tableConfigInvalidate() ||
|
|
5755
|
-
this._localTableHeaderInvalidate() ||
|
|
5756
|
-
this._localTableContentInvalidate()) {
|
|
5757
|
-
this._deleteState();
|
|
5758
|
-
_b = this._localExtractTableContent(), originalData_1 = _b.originalData, originalDataAttributes = _b.originalDataAttributes;
|
|
5759
|
-
this._config._state.originalData = originalData_1;
|
|
5760
|
-
this._config._state.originalDataAttributes = originalDataAttributes;
|
|
5761
|
-
}
|
|
5762
|
-
// Update the original data variable
|
|
5763
|
-
originalData = this.getState().originalData;
|
|
5764
|
-
_temp = (this._data = __spreadArray([], originalData, true));
|
|
5765
|
-
if (search) {
|
|
5766
|
-
searchTerm = typeof search === 'string' ? search : '';
|
|
5767
|
-
_temp = this._data = this._config.search.callback.call(this, this._data, searchTerm);
|
|
5768
|
-
}
|
|
5769
|
-
// If sorting is defined, sort the data
|
|
5770
|
-
if (sortField !== undefined &&
|
|
5771
|
-
sortOrder !== undefined &&
|
|
5772
|
-
sortOrder !== '') {
|
|
5773
|
-
if (typeof this._config.sort.callback === 'function') {
|
|
5774
|
-
this._data = this._config.sort.callback.call(this, this._data, sortField, sortOrder);
|
|
5775
|
-
}
|
|
5776
|
-
}
|
|
5777
|
-
// If there is data, slice it to the current page size
|
|
5778
|
-
if (((_c = this._data) === null || _c === void 0 ? void 0 : _c.length) > 0) {
|
|
5779
|
-
startIndex = (page - 1) * pageSize;
|
|
5780
|
-
endIndex = startIndex + pageSize;
|
|
5781
|
-
this._data = this._data.slice(startIndex, endIndex);
|
|
5782
|
-
}
|
|
5783
|
-
// Determine number of total rows
|
|
5784
|
-
this._config._state.totalItems = _temp.length;
|
|
5785
|
-
// Draw the data
|
|
5786
|
-
return [4 /*yield*/, this._draw()];
|
|
5787
|
-
case 1:
|
|
5788
|
-
// Draw the data
|
|
5789
|
-
_d.sent();
|
|
5790
|
-
this._fireEvent('fetched');
|
|
5791
|
-
this._dispatchEvent('fetched');
|
|
5792
|
-
return [2 /*return*/];
|
|
5793
|
-
}
|
|
5794
|
-
});
|
|
5795
|
-
});
|
|
5796
|
-
};
|
|
5797
|
-
/**
|
|
5798
|
-
* Checks if the table content has been invalidated by comparing the current checksum of the table body
|
|
5799
|
-
* with the stored checksum in the state. If the checksums are different, the state is updated with the
|
|
5800
|
-
* new checksum and `true` is returned. Otherwise, `false` is returned.
|
|
5801
|
-
*
|
|
5802
|
-
* @returns {boolean} `true` if the table content has been invalidated, `false` otherwise.
|
|
5803
|
-
*/
|
|
5804
|
-
KTDataTable.prototype._localTableContentInvalidate = function () {
|
|
5805
|
-
var checksum = utils_1.default.checksum(JSON.stringify(this._tbodyElement.innerHTML));
|
|
5806
|
-
if (this.getState()._contentChecksum !== checksum) {
|
|
5807
|
-
this._config._state._contentChecksum = checksum;
|
|
5808
|
-
return true;
|
|
5809
|
-
}
|
|
5810
|
-
return false;
|
|
5811
|
-
};
|
|
5812
|
-
KTDataTable.prototype._tableConfigInvalidate = function () {
|
|
5813
|
-
// Remove _data and _state from config
|
|
5814
|
-
var _a = this._config, _state = _a._state, restConfig = __rest(_a, ["_state"]);
|
|
5815
|
-
var checksum = utils_1.default.checksum(JSON.stringify(restConfig));
|
|
5816
|
-
if (_state._configChecksum !== checksum) {
|
|
5817
|
-
this._config._state._configChecksum = checksum;
|
|
5818
|
-
return true;
|
|
5819
|
-
}
|
|
5820
|
-
return false;
|
|
5821
|
-
};
|
|
5822
|
-
/**
|
|
5823
|
-
* Extract the table content and returns it as an object containing an array of original data and an array of original data attributes.
|
|
5824
|
-
*
|
|
5825
|
-
* @returns {{originalData: T[], originalDataAttributes: KTDataTableAttributeInterface[]}} - An object containing an array of original data and an array of original data attributes.
|
|
5826
|
-
*/
|
|
5827
|
-
KTDataTable.prototype._localExtractTableContent = function () {
|
|
5828
|
-
var originalData = [];
|
|
5829
|
-
var originalDataAttributes = [];
|
|
5830
|
-
this._storeOriginalClasses();
|
|
5831
|
-
var rows = this._tbodyElement.querySelectorAll('tr');
|
|
5832
|
-
// Filter th elements to only include those with data-kt-datatable-column attribute
|
|
5833
|
-
var allThs = this._theadElement
|
|
5834
|
-
? this._theadElement.querySelectorAll('th')
|
|
5835
|
-
: [];
|
|
5836
|
-
var ths = Array.from(allThs).filter(function (th) {
|
|
5837
|
-
return th.hasAttribute('data-kt-datatable-column');
|
|
5838
|
-
});
|
|
5839
|
-
rows.forEach(function (row) {
|
|
5840
|
-
var dataRow = {};
|
|
5841
|
-
var dataRowAttribute = {};
|
|
5842
|
-
row.querySelectorAll('td').forEach(function (td, index) {
|
|
5843
|
-
var _a, _b, _c;
|
|
5844
|
-
var colName = (_a = ths[index]) === null || _a === void 0 ? void 0 : _a.getAttribute('data-kt-datatable-column');
|
|
5845
|
-
if (colName) {
|
|
5846
|
-
dataRow[colName] = (_b = td.innerHTML) === null || _b === void 0 ? void 0 : _b.trim();
|
|
5847
|
-
}
|
|
5848
|
-
else {
|
|
5849
|
-
// Store the original HTML for fallback
|
|
5850
|
-
dataRow[index] = (_c = td.innerHTML) === null || _c === void 0 ? void 0 : _c.trim();
|
|
5851
|
-
}
|
|
5852
|
-
});
|
|
5853
|
-
if (Object.keys(dataRow).length > 0) {
|
|
5854
|
-
originalData.push(dataRow);
|
|
5855
|
-
originalDataAttributes.push(dataRowAttribute);
|
|
5856
|
-
}
|
|
5857
|
-
});
|
|
5858
|
-
return { originalData: originalData, originalDataAttributes: originalDataAttributes };
|
|
5859
|
-
};
|
|
5860
|
-
/**
|
|
5861
|
-
* Check if the table header is invalidated
|
|
5862
|
-
* @returns {boolean} - Returns true if the table header is invalidated, false otherwise
|
|
5863
|
-
*/
|
|
5864
|
-
KTDataTable.prototype._localTableHeaderInvalidate = function () {
|
|
5865
|
-
var originalData = this.getState().originalData;
|
|
5866
|
-
var totalColumns = originalData.length
|
|
5867
|
-
? Object.keys(originalData[0]).length
|
|
5868
|
-
: 0;
|
|
5869
|
-
// Count th elements with data-kt-datatable-column; when none (e.g. multi-row headers), use logical column count so we don't falsely invalidate
|
|
5870
|
-
var allThs = this._theadElement
|
|
5871
|
-
? this._theadElement.querySelectorAll('th')
|
|
5872
|
-
: [];
|
|
5873
|
-
var thsWithColumn = Array.from(allThs).filter(function (th) {
|
|
5874
|
-
return th.hasAttribute('data-kt-datatable-column');
|
|
5875
|
-
});
|
|
5876
|
-
var currentTableHeaders = thsWithColumn.length > 0
|
|
5877
|
-
? thsWithColumn.length
|
|
5878
|
-
: this._getLogicalColumnCount();
|
|
5879
|
-
return currentTableHeaders !== totalColumns;
|
|
5880
|
-
};
|
|
5881
|
-
/**
|
|
5882
|
-
* Returns the logical data column count (number of data columns), used for multi-row headers
|
|
5883
|
-
* where querySelectorAll('th') would overcount. Prefers state.originalData, then first tbody row td count.
|
|
5884
|
-
* @returns {number} Number of data columns, or 0 if unknown
|
|
5885
|
-
*/
|
|
5886
|
-
KTDataTable.prototype._getLogicalColumnCount = function () {
|
|
5887
|
-
var originalData = this.getState().originalData;
|
|
5888
|
-
if (originalData && originalData.length > 0) {
|
|
5889
|
-
return Object.keys(originalData[0]).length;
|
|
5890
|
-
}
|
|
5891
|
-
if (this._tbodyElement) {
|
|
5892
|
-
var firstRow = this._tbodyElement.querySelector('tr');
|
|
5893
|
-
if (firstRow) {
|
|
5894
|
-
return firstRow.querySelectorAll('td').length;
|
|
5895
|
-
}
|
|
5896
|
-
}
|
|
5897
|
-
return 0;
|
|
5898
|
-
};
|
|
5899
|
-
/**
|
|
5900
|
-
* Fetch data from the server
|
|
5901
|
-
*/
|
|
5902
|
-
KTDataTable.prototype._fetchDataFromServer = function () {
|
|
5903
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
5904
|
-
var currentRequestId, queryParams, response, error_1, responseData, error_2;
|
|
5905
|
-
return __generator(this, function (_a) {
|
|
5906
|
-
switch (_a.label) {
|
|
5907
|
-
case 0:
|
|
5908
|
-
currentRequestId = ++this._requestId;
|
|
5909
|
-
this._fireEvent('fetch');
|
|
5910
|
-
this._dispatchEvent('fetch');
|
|
5911
|
-
queryParams = this._getQueryParamsForFetchRequest();
|
|
5912
|
-
_a.label = 1;
|
|
5913
|
-
case 1:
|
|
5914
|
-
_a.trys.push([1, 3, , 4]);
|
|
5915
|
-
return [4 /*yield*/, this._performFetchRequest(queryParams)];
|
|
5916
|
-
case 2:
|
|
5917
|
-
response = _a.sent();
|
|
5918
|
-
return [3 /*break*/, 4];
|
|
5919
|
-
case 3:
|
|
5920
|
-
error_1 = _a.sent();
|
|
5921
|
-
// Silently ignore AbortError - request was cancelled
|
|
5922
|
-
if (error_1.name === 'AbortError') {
|
|
5923
|
-
return [2 /*return*/];
|
|
5924
|
-
}
|
|
5925
|
-
throw error_1;
|
|
5926
|
-
case 4:
|
|
5927
|
-
// Check if this response is stale (a newer request has been initiated)
|
|
5928
|
-
if (currentRequestId !== this._requestId) {
|
|
5929
|
-
// Ignore stale response - a more recent request is in progress or has completed
|
|
5930
|
-
return [2 /*return*/];
|
|
5931
|
-
}
|
|
5932
|
-
responseData = null;
|
|
5933
|
-
_a.label = 5;
|
|
5934
|
-
case 5:
|
|
5935
|
-
_a.trys.push([5, 7, , 8]);
|
|
5936
|
-
return [4 /*yield*/, response.json()];
|
|
5937
|
-
case 6:
|
|
5938
|
-
responseData = _a.sent();
|
|
5939
|
-
return [3 /*break*/, 8];
|
|
5940
|
-
case 7:
|
|
5941
|
-
error_2 = _a.sent();
|
|
5942
|
-
// Fire event with complete error context for application handling
|
|
5943
|
-
this._fireEvent('parseError', {
|
|
5944
|
-
response: response,
|
|
5945
|
-
error: String(error_2),
|
|
5946
|
-
status: response.status,
|
|
5947
|
-
statusText: response.statusText,
|
|
5948
|
-
});
|
|
5949
|
-
this._dispatchEvent('parseError', {
|
|
5950
|
-
response: response,
|
|
5951
|
-
error: String(error_2),
|
|
5952
|
-
status: response.status,
|
|
5953
|
-
statusText: response.statusText,
|
|
5954
|
-
});
|
|
5955
|
-
return [2 /*return*/];
|
|
5956
|
-
case 8:
|
|
5957
|
-
// Double-check request ID after JSON parsing (additional safety)
|
|
5958
|
-
if (currentRequestId !== this._requestId) {
|
|
5959
|
-
return [2 /*return*/];
|
|
5960
|
-
}
|
|
5961
|
-
this._fireEvent('fetched', { response: responseData });
|
|
5962
|
-
this._dispatchEvent('fetched', { response: responseData });
|
|
5963
|
-
// Use the mapResponse function to transform the data if provided
|
|
5964
|
-
if (typeof this._config.mapResponse === 'function') {
|
|
5965
|
-
responseData = this._config.mapResponse.call(this, responseData);
|
|
5966
|
-
}
|
|
5967
|
-
this._data = responseData.data;
|
|
5968
|
-
this._config._state.totalItems = responseData.totalCount;
|
|
5969
|
-
return [4 /*yield*/, this._draw()];
|
|
5970
|
-
case 9:
|
|
5971
|
-
_a.sent();
|
|
5972
|
-
this._fireEvent('fetched');
|
|
5973
|
-
this._dispatchEvent('fetched');
|
|
5974
|
-
return [2 /*return*/];
|
|
5975
|
-
}
|
|
5976
|
-
});
|
|
5977
|
-
});
|
|
6935
|
+
}
|
|
6936
|
+
/**
|
|
6937
|
+
* Hide spinner
|
|
6938
|
+
*/
|
|
6939
|
+
this._hideSpinner();
|
|
5978
6940
|
};
|
|
5979
6941
|
/**
|
|
5980
|
-
*
|
|
5981
|
-
* @returns
|
|
6942
|
+
* Attach search event to the search input element
|
|
6943
|
+
* @returns {void}
|
|
5982
6944
|
*/
|
|
5983
|
-
KTDataTable.prototype.
|
|
5984
|
-
|
|
5985
|
-
var
|
|
5986
|
-
|
|
5987
|
-
|
|
5988
|
-
|
|
5989
|
-
|
|
5990
|
-
|
|
5991
|
-
|
|
5992
|
-
|
|
5993
|
-
|
|
5994
|
-
|
|
5995
|
-
|
|
5996
|
-
|
|
6945
|
+
KTDataTable.prototype._attachSearchEvent = function () {
|
|
6946
|
+
var _this = this;
|
|
6947
|
+
var tableId = this._tableId();
|
|
6948
|
+
var searchElement = document.querySelector("[data-kt-datatable-search=\"#".concat(tableId, "\"]"));
|
|
6949
|
+
// Get search state
|
|
6950
|
+
var search = this.getState().search;
|
|
6951
|
+
// Set search value
|
|
6952
|
+
if (searchElement) {
|
|
6953
|
+
searchElement.value =
|
|
6954
|
+
search === undefined || search === null
|
|
6955
|
+
? ''
|
|
6956
|
+
: typeof search === 'string'
|
|
6957
|
+
? search
|
|
6958
|
+
: String(search);
|
|
5997
6959
|
}
|
|
5998
|
-
|
|
5999
|
-
|
|
6000
|
-
|
|
6001
|
-
|
|
6002
|
-
|
|
6003
|
-
|
|
6004
|
-
|
|
6005
|
-
|
|
6960
|
+
if (searchElement) {
|
|
6961
|
+
// Check if a debounced search function already exists
|
|
6962
|
+
var searchWithDebounce = KTDataTable.asSearchElementWithDebounce(searchElement);
|
|
6963
|
+
if (searchWithDebounce._debouncedSearch) {
|
|
6964
|
+
// Remove the existing debounced event listener
|
|
6965
|
+
searchElement.removeEventListener('keyup', searchWithDebounce._debouncedSearch);
|
|
6966
|
+
}
|
|
6967
|
+
// Create a new debounced search function
|
|
6968
|
+
var debouncedSearch = this._debounce(function () {
|
|
6969
|
+
_this.search(searchElement.value);
|
|
6970
|
+
}, this._config.search.delay);
|
|
6971
|
+
// Store the new debounced function as a property of the element
|
|
6972
|
+
searchWithDebounce._debouncedSearch = debouncedSearch;
|
|
6973
|
+
// Add the new debounced event listener
|
|
6974
|
+
searchElement.addEventListener('keyup', debouncedSearch);
|
|
6006
6975
|
}
|
|
6007
|
-
|
|
6008
|
-
|
|
6976
|
+
};
|
|
6977
|
+
/**
|
|
6978
|
+
* Returns the logical data column count (number of data columns), used for multi-row headers
|
|
6979
|
+
* where querySelectorAll('th') would overcount. Prefers state.originalData, then first tbody row td count.
|
|
6980
|
+
* @returns {number} Number of data columns, or 0 if unknown
|
|
6981
|
+
*/
|
|
6982
|
+
KTDataTable.prototype._getLogicalColumnCount = function () {
|
|
6983
|
+
var originalData = this.getState().originalData;
|
|
6984
|
+
if (originalData && originalData.length > 0) {
|
|
6985
|
+
return Object.keys(originalData[0]).length;
|
|
6009
6986
|
}
|
|
6010
|
-
|
|
6011
|
-
|
|
6012
|
-
|
|
6987
|
+
if (this._tbodyElement) {
|
|
6988
|
+
var firstRow = this._tbodyElement.querySelector('tr');
|
|
6989
|
+
if (firstRow) {
|
|
6990
|
+
return firstRow.querySelectorAll('td').length;
|
|
6991
|
+
}
|
|
6013
6992
|
}
|
|
6014
|
-
|
|
6015
|
-
return queryParams;
|
|
6016
|
-
};
|
|
6017
|
-
KTDataTable.prototype._performFetchRequest = function (queryParams) {
|
|
6018
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
6019
|
-
var requestMethod, requestBody, apiEndpointWithQueryParams;
|
|
6020
|
-
var _this = this;
|
|
6021
|
-
return __generator(this, function (_a) {
|
|
6022
|
-
requestMethod = this._config.requestMethod;
|
|
6023
|
-
requestBody = undefined;
|
|
6024
|
-
// Cancel previous request to prevent race conditions
|
|
6025
|
-
if (this._abortController) {
|
|
6026
|
-
this._abortController.abort();
|
|
6027
|
-
}
|
|
6028
|
-
// Create new AbortController for this request
|
|
6029
|
-
this._abortController = new AbortController();
|
|
6030
|
-
// If the request method is POST, send the query params as the request body
|
|
6031
|
-
if (requestMethod === 'POST') {
|
|
6032
|
-
requestBody = queryParams;
|
|
6033
|
-
}
|
|
6034
|
-
else if (requestMethod === 'GET') {
|
|
6035
|
-
apiEndpointWithQueryParams = this._createUrl(this._config.apiEndpoint);
|
|
6036
|
-
apiEndpointWithQueryParams.search = queryParams.toString();
|
|
6037
|
-
this._config.apiEndpoint = apiEndpointWithQueryParams.toString();
|
|
6038
|
-
}
|
|
6039
|
-
return [2 /*return*/, fetch(this._config.apiEndpoint, __assign(__assign({ method: requestMethod, body: requestBody, headers: this._config.requestHeaders }, (this._config.requestCredentials && {
|
|
6040
|
-
credentials: this._config.requestCredentials,
|
|
6041
|
-
})), (this._abortController && { signal: this._abortController.signal }))).catch(function (error) {
|
|
6042
|
-
// Silently ignore AbortError - this is expected when requests are cancelled
|
|
6043
|
-
if (error.name === 'AbortError') {
|
|
6044
|
-
return Promise.reject(error);
|
|
6045
|
-
}
|
|
6046
|
-
// Trigger an error event for non-abort errors
|
|
6047
|
-
_this._fireEvent('error', { error: error });
|
|
6048
|
-
_this._dispatchEvent('error', { error: error });
|
|
6049
|
-
_this._noticeOnTable('Error performing fetch request: ' + String(error));
|
|
6050
|
-
throw error;
|
|
6051
|
-
})];
|
|
6052
|
-
});
|
|
6053
|
-
});
|
|
6993
|
+
return 0;
|
|
6054
6994
|
};
|
|
6055
6995
|
/**
|
|
6056
6996
|
* Creates a complete URL from a relative path or a full URL.
|
|
@@ -6086,10 +7026,10 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6086
7026
|
KTDataTable.prototype._draw = function () {
|
|
6087
7027
|
return __awaiter(this, void 0, void 0, function () {
|
|
6088
7028
|
return __generator(this, function (_a) {
|
|
6089
|
-
this.
|
|
6090
|
-
Math.ceil(this.getState().totalItems / this.getState().pageSize) || 0
|
|
6091
|
-
|
|
6092
|
-
this.
|
|
7029
|
+
this._stateStore.patchState({
|
|
7030
|
+
totalPages: Math.ceil(this.getState().totalItems / this.getState().pageSize) || 0,
|
|
7031
|
+
});
|
|
7032
|
+
this._emit('draw');
|
|
6093
7033
|
this._dispose();
|
|
6094
7034
|
// Update the table and pagination controls
|
|
6095
7035
|
if (this._theadElement && this._tbodyElement) {
|
|
@@ -6098,8 +7038,7 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6098
7038
|
if (this._infoElement && this._paginationElement) {
|
|
6099
7039
|
this._updatePagination();
|
|
6100
7040
|
}
|
|
6101
|
-
this.
|
|
6102
|
-
this._dispatchEvent('drew');
|
|
7041
|
+
this._emit('drew');
|
|
6103
7042
|
// Spinner is hidden in _finalize() to ensure it stays visible until the entire request completes
|
|
6104
7043
|
// Removed duplicate _hideSpinner() call here to prevent premature hiding
|
|
6105
7044
|
if (this._config.stateSave) {
|
|
@@ -6114,115 +7053,18 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6114
7053
|
* @returns {HTMLTableSectionElement} The new table body element
|
|
6115
7054
|
*/
|
|
6116
7055
|
KTDataTable.prototype._updateTable = function () {
|
|
6117
|
-
|
|
6118
|
-
|
|
6119
|
-
this
|
|
6120
|
-
|
|
6121
|
-
|
|
6122
|
-
|
|
6123
|
-
|
|
6124
|
-
|
|
6125
|
-
|
|
6126
|
-
|
|
6127
|
-
|
|
6128
|
-
return tbodyElement;
|
|
6129
|
-
};
|
|
6130
|
-
/**
|
|
6131
|
-
* Update the table content
|
|
6132
|
-
* @param tbodyElement The table body element
|
|
6133
|
-
* @returns {HTMLTableSectionElement} The updated table body element
|
|
6134
|
-
*/
|
|
6135
|
-
KTDataTable.prototype._updateTableContent = function (tbodyElement) {
|
|
6136
|
-
var _this = this;
|
|
6137
|
-
var fragment = document.createDocumentFragment();
|
|
6138
|
-
tbodyElement.textContent = ''; // Clear the tbody element
|
|
6139
|
-
if (this._data.length === 0) {
|
|
6140
|
-
this._noticeOnTable(this._config.infoEmpty || '');
|
|
6141
|
-
return tbodyElement;
|
|
6142
|
-
}
|
|
6143
|
-
// Filter th elements to only include those with data-kt-datatable-column attribute
|
|
6144
|
-
// This prevents creating blank td elements for merged header cells (colspan/rowspan)
|
|
6145
|
-
var allThs = this._theadElement
|
|
6146
|
-
? this._theadElement.querySelectorAll('th')
|
|
6147
|
-
: [];
|
|
6148
|
-
var ths = Array.from(allThs).filter(function (th) {
|
|
6149
|
-
return th.hasAttribute('data-kt-datatable-column');
|
|
6150
|
-
});
|
|
6151
|
-
// When no th has data-kt-datatable-column (e.g. multi-row headers), use logical column count from tbody so we don't overcount thead cells
|
|
6152
|
-
var columnsToRender = ths.length > 0 ? ths : [];
|
|
6153
|
-
var logicalColumnCount = ths.length > 0 ? ths.length : this._getLogicalColumnCount();
|
|
6154
|
-
this._data.forEach(function (item, rowIndex) {
|
|
6155
|
-
var row = document.createElement('tr');
|
|
6156
|
-
// Apply original tr class if available
|
|
6157
|
-
if (_this._originalTrClasses && _this._originalTrClasses[rowIndex]) {
|
|
6158
|
-
row.className = _this._originalTrClasses[rowIndex];
|
|
6159
|
-
}
|
|
6160
|
-
if (!_this._config.columns) {
|
|
6161
|
-
var dataRowAttributes = _this.getState().originalDataAttributes
|
|
6162
|
-
? _this.getState().originalDataAttributes[rowIndex]
|
|
6163
|
-
: null;
|
|
6164
|
-
for (var colIndex = 0; colIndex < logicalColumnCount; colIndex++) {
|
|
6165
|
-
var th = columnsToRender[colIndex];
|
|
6166
|
-
var colName = th === null || th === void 0 ? void 0 : th.getAttribute('data-kt-datatable-column');
|
|
6167
|
-
var td = document.createElement('td');
|
|
6168
|
-
var value = void 0;
|
|
6169
|
-
if (colName && Object.prototype.hasOwnProperty.call(item, colName)) {
|
|
6170
|
-
value = item[colName];
|
|
6171
|
-
}
|
|
6172
|
-
else if (Object.prototype.hasOwnProperty.call(item, colIndex)) {
|
|
6173
|
-
value = item[colIndex];
|
|
6174
|
-
}
|
|
6175
|
-
else {
|
|
6176
|
-
value = '';
|
|
6177
|
-
}
|
|
6178
|
-
td.innerHTML = value;
|
|
6179
|
-
// Apply original td class if available
|
|
6180
|
-
if (_this._originalTdClasses &&
|
|
6181
|
-
_this._originalTdClasses[rowIndex] &&
|
|
6182
|
-
_this._originalTdClasses[rowIndex][colIndex]) {
|
|
6183
|
-
td.className = _this._originalTdClasses[rowIndex][colIndex];
|
|
6184
|
-
}
|
|
6185
|
-
if (dataRowAttributes && dataRowAttributes[colIndex]) {
|
|
6186
|
-
for (var attr in dataRowAttributes[colIndex]) {
|
|
6187
|
-
td.setAttribute(attr, dataRowAttributes[colIndex][attr]);
|
|
6188
|
-
}
|
|
6189
|
-
}
|
|
6190
|
-
row.appendChild(td);
|
|
6191
|
-
}
|
|
6192
|
-
}
|
|
6193
|
-
else {
|
|
6194
|
-
Object.keys(_this._config.columns).forEach(function (key, colIndex) {
|
|
6195
|
-
var td = document.createElement('td');
|
|
6196
|
-
var columnDef = _this._config.columns[key];
|
|
6197
|
-
// Apply original td class if available
|
|
6198
|
-
if (_this._originalTdClasses &&
|
|
6199
|
-
_this._originalTdClasses[rowIndex] &&
|
|
6200
|
-
_this._originalTdClasses[rowIndex][colIndex]) {
|
|
6201
|
-
td.className = _this._originalTdClasses[rowIndex][colIndex];
|
|
6202
|
-
}
|
|
6203
|
-
if (typeof columnDef.render === 'function') {
|
|
6204
|
-
var result = columnDef.render.call(_this, item[key], item, _this);
|
|
6205
|
-
if (result instanceof HTMLElement ||
|
|
6206
|
-
result instanceof DocumentFragment) {
|
|
6207
|
-
td.appendChild(result);
|
|
6208
|
-
}
|
|
6209
|
-
else if (typeof result === 'string') {
|
|
6210
|
-
td.innerHTML = result;
|
|
6211
|
-
}
|
|
6212
|
-
}
|
|
6213
|
-
else {
|
|
6214
|
-
td.textContent = item[key];
|
|
6215
|
-
}
|
|
6216
|
-
if (typeof columnDef.createdCell === 'function') {
|
|
6217
|
-
columnDef.createdCell.call(_this, td, item[key], item, row);
|
|
6218
|
-
}
|
|
6219
|
-
row.appendChild(td);
|
|
6220
|
-
});
|
|
6221
|
-
}
|
|
6222
|
-
fragment.appendChild(row);
|
|
7056
|
+
return this._tableRenderer.render({
|
|
7057
|
+
config: this._config,
|
|
7058
|
+
context: this,
|
|
7059
|
+
data: this._data,
|
|
7060
|
+
getLogicalColumnCount: this._getLogicalColumnCount.bind(this),
|
|
7061
|
+
getState: this.getState.bind(this),
|
|
7062
|
+
originalTbodyClass: this._originalTbodyClass,
|
|
7063
|
+
originalTrClasses: this._originalTrClasses,
|
|
7064
|
+
originalTdClasses: this._originalTdClasses,
|
|
7065
|
+
tableElement: this._tableElement,
|
|
7066
|
+
theadElement: this._theadElement,
|
|
6223
7067
|
});
|
|
6224
|
-
tbodyElement.appendChild(fragment);
|
|
6225
|
-
return tbodyElement;
|
|
6226
7068
|
};
|
|
6227
7069
|
/**
|
|
6228
7070
|
* Show a notice on the table
|
|
@@ -6231,66 +7073,22 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6231
7073
|
*/
|
|
6232
7074
|
KTDataTable.prototype._noticeOnTable = function (message) {
|
|
6233
7075
|
if (message === void 0) { message = ''; }
|
|
6234
|
-
|
|
6235
|
-
var cell = row.insertCell();
|
|
6236
|
-
var logicalCount = this._getLogicalColumnCount();
|
|
6237
|
-
// Use logical column count so multi-row headers don't overcount; fallback to 1 when 0 so message still displays
|
|
6238
|
-
cell.colSpan = logicalCount > 0 ? logicalCount : 1;
|
|
6239
|
-
cell.innerHTML = message;
|
|
7076
|
+
this._tableRenderer.notice(this._tableElement, this._getLogicalColumnCount.bind(this), message);
|
|
6240
7077
|
};
|
|
6241
7078
|
KTDataTable.prototype._updatePagination = function () {
|
|
6242
|
-
this.
|
|
6243
|
-
|
|
6244
|
-
|
|
6245
|
-
|
|
6246
|
-
|
|
6247
|
-
|
|
6248
|
-
|
|
6249
|
-
|
|
6250
|
-
|
|
6251
|
-
|
|
6252
|
-
if (
|
|
6253
|
-
|
|
6254
|
-
}
|
|
6255
|
-
// Loop through all child elements of the container and remove them one by one
|
|
6256
|
-
while (container.firstChild) {
|
|
6257
|
-
// Remove the first child element (which is the first element in the list of child elements)
|
|
6258
|
-
container.removeChild(container.firstChild);
|
|
6259
|
-
}
|
|
6260
|
-
};
|
|
6261
|
-
/**
|
|
6262
|
-
* Creates a container element for the items per page selector.
|
|
6263
|
-
* @param _sizeElement The element to create the page size controls in.
|
|
6264
|
-
* @returns The container element.
|
|
6265
|
-
*/
|
|
6266
|
-
KTDataTable.prototype._createPageSizeControls = function (_sizeElement) {
|
|
6267
|
-
var _this = this;
|
|
6268
|
-
// If no element is provided, return early
|
|
6269
|
-
if (!_sizeElement) {
|
|
6270
|
-
return _sizeElement;
|
|
7079
|
+
var cleanup = this._paginationRenderer.render({
|
|
7080
|
+
config: this._config,
|
|
7081
|
+
dataLength: this._data.length,
|
|
7082
|
+
infoElement: this._infoElement,
|
|
7083
|
+
paginateData: this._paginateData.bind(this),
|
|
7084
|
+
paginationElement: this._paginationElement,
|
|
7085
|
+
reloadPageSize: this._reloadPageSize.bind(this),
|
|
7086
|
+
sizeElement: this._sizeElement,
|
|
7087
|
+
state: this.getState(),
|
|
7088
|
+
});
|
|
7089
|
+
if (typeof cleanup === 'function') {
|
|
7090
|
+
this._cleanupCallbacks.push(cleanup);
|
|
6271
7091
|
}
|
|
6272
|
-
// Wait for the element to be attached to the DOM
|
|
6273
|
-
setTimeout(function () {
|
|
6274
|
-
// Create <option> elements for each page size option
|
|
6275
|
-
var options = _this._config.pageSizes.map(function (size) {
|
|
6276
|
-
var option = document.createElement('option');
|
|
6277
|
-
option.value = String(size);
|
|
6278
|
-
option.text = String(size);
|
|
6279
|
-
option.selected = _this.getState().pageSize === size;
|
|
6280
|
-
return option;
|
|
6281
|
-
});
|
|
6282
|
-
// Add the <option> elements to the provided element
|
|
6283
|
-
_sizeElement.append.apply(_sizeElement, options);
|
|
6284
|
-
}, 100);
|
|
6285
|
-
// Create an event listener for the "change" event on the element
|
|
6286
|
-
var _pageSizeControlsEvent = function (event) {
|
|
6287
|
-
// When the element changes, reload the page with the new page size and page number 1
|
|
6288
|
-
_this._reloadPageSize(Number(event.target.value), 1);
|
|
6289
|
-
};
|
|
6290
|
-
// Bind the event listener to the component instance
|
|
6291
|
-
_sizeElement.onchange = _pageSizeControlsEvent.bind(this);
|
|
6292
|
-
// Return the element
|
|
6293
|
-
return _sizeElement;
|
|
6294
7092
|
};
|
|
6295
7093
|
/**
|
|
6296
7094
|
* Reloads the data with the specified page size and optional page number.
|
|
@@ -6300,120 +7098,10 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6300
7098
|
KTDataTable.prototype._reloadPageSize = function (pageSize, page) {
|
|
6301
7099
|
if (page === void 0) { page = 1; }
|
|
6302
7100
|
// Update the page size and page number in the state
|
|
6303
|
-
this.
|
|
6304
|
-
this._config._state.page = page;
|
|
7101
|
+
this._stateStore.setPageSize(pageSize, page);
|
|
6305
7102
|
// Update the data with the new page size and page number
|
|
6306
7103
|
this._updateData();
|
|
6307
7104
|
};
|
|
6308
|
-
/**
|
|
6309
|
-
* Creates the pagination controls for the component.
|
|
6310
|
-
* @param _infoElement The element to set the info text in.
|
|
6311
|
-
* @param _paginationElement The element to create the pagination controls in.
|
|
6312
|
-
* @return {HTMLElement} The element containing the pagination controls.
|
|
6313
|
-
*/
|
|
6314
|
-
KTDataTable.prototype._createPaginationControls = function (_infoElement, _paginationElement) {
|
|
6315
|
-
if (!_infoElement || !_paginationElement || this._data.length === 0) {
|
|
6316
|
-
return null;
|
|
6317
|
-
}
|
|
6318
|
-
this._setPaginationInfoText(_infoElement);
|
|
6319
|
-
var paginationContainer = this._createPaginationContainer(_paginationElement);
|
|
6320
|
-
if (paginationContainer) {
|
|
6321
|
-
this._createPaginationButtons(paginationContainer);
|
|
6322
|
-
}
|
|
6323
|
-
return paginationContainer;
|
|
6324
|
-
};
|
|
6325
|
-
/**
|
|
6326
|
-
* Sets the info text for the pagination controls.
|
|
6327
|
-
* @param _infoElement The element to set the info text in.
|
|
6328
|
-
*/
|
|
6329
|
-
KTDataTable.prototype._setPaginationInfoText = function (_infoElement) {
|
|
6330
|
-
_infoElement.textContent = this._config.info
|
|
6331
|
-
.replace('{start}', (this.getState().page - 1) * this.getState().pageSize + 1 + '')
|
|
6332
|
-
.replace('{end}', Math.min(this.getState().page * this.getState().pageSize, this.getState().totalItems) + '')
|
|
6333
|
-
.replace('{total}', this.getState().totalItems + '');
|
|
6334
|
-
};
|
|
6335
|
-
/**
|
|
6336
|
-
* Creates the container element for the pagination controls.
|
|
6337
|
-
* @param _paginationElement The element to create the pagination controls in.
|
|
6338
|
-
* @return {HTMLElement} The container element.
|
|
6339
|
-
*/
|
|
6340
|
-
KTDataTable.prototype._createPaginationContainer = function (_paginationElement) {
|
|
6341
|
-
// No longer create a wrapping div. Just return the pagination element itself.
|
|
6342
|
-
return _paginationElement;
|
|
6343
|
-
};
|
|
6344
|
-
/**
|
|
6345
|
-
* Creates the pagination buttons for the component.
|
|
6346
|
-
* @param paginationContainer The container element for the pagination controls.
|
|
6347
|
-
*/
|
|
6348
|
-
KTDataTable.prototype._createPaginationButtons = function (paginationContainer) {
|
|
6349
|
-
var _this = this;
|
|
6350
|
-
var _a = this.getState(), currentPage = _a.page, totalPages = _a.totalPages;
|
|
6351
|
-
var _b = this._config.pagination, previous = _b.previous, next = _b.next, number = _b.number, more = _b.more;
|
|
6352
|
-
// Helper function to create a button
|
|
6353
|
-
var createButton = function (text, className, disabled, handleClick) {
|
|
6354
|
-
var button = document.createElement('button');
|
|
6355
|
-
button.className = className;
|
|
6356
|
-
button.innerHTML = text;
|
|
6357
|
-
button.disabled = disabled;
|
|
6358
|
-
button.onclick = handleClick;
|
|
6359
|
-
return button;
|
|
6360
|
-
};
|
|
6361
|
-
// Add Previous Button
|
|
6362
|
-
paginationContainer.appendChild(createButton(previous.text, "".concat(previous.class).concat(currentPage === 1 ? ' disabled' : ''), currentPage === 1, function () { return _this._paginateData(currentPage - 1); }));
|
|
6363
|
-
// Calculate range of pages
|
|
6364
|
-
var pageMoreEnabled = this._config.pageMore;
|
|
6365
|
-
if (pageMoreEnabled) {
|
|
6366
|
-
var maxButtons = this._config.pageMoreLimit;
|
|
6367
|
-
var range_1 = this._calculatePageRange(currentPage, totalPages, maxButtons);
|
|
6368
|
-
// Add start ellipsis
|
|
6369
|
-
if (range_1.start > 1) {
|
|
6370
|
-
paginationContainer.appendChild(createButton(more.text, more.class, false, function () {
|
|
6371
|
-
return _this._paginateData(Math.max(1, range_1.start - 1));
|
|
6372
|
-
}));
|
|
6373
|
-
}
|
|
6374
|
-
var _loop_1 = function (i) {
|
|
6375
|
-
paginationContainer.appendChild(createButton(number.text.replace('{page}', i.toString()), "".concat(number.class).concat(currentPage === i ? ' active disabled' : ''), currentPage === i, function () { return _this._paginateData(i); }));
|
|
6376
|
-
};
|
|
6377
|
-
// Add page buttons
|
|
6378
|
-
for (var i = range_1.start; i <= range_1.end; i++) {
|
|
6379
|
-
_loop_1(i);
|
|
6380
|
-
}
|
|
6381
|
-
// Add end ellipsis
|
|
6382
|
-
if (pageMoreEnabled && range_1.end < totalPages) {
|
|
6383
|
-
paginationContainer.appendChild(createButton(more.text, more.class, false, function () {
|
|
6384
|
-
return _this._paginateData(Math.min(totalPages, range_1.end + 1));
|
|
6385
|
-
}));
|
|
6386
|
-
}
|
|
6387
|
-
}
|
|
6388
|
-
else {
|
|
6389
|
-
var _loop_2 = function (i) {
|
|
6390
|
-
paginationContainer.appendChild(createButton(number.text.replace('{page}', i.toString()), "".concat(number.class).concat(currentPage === i ? ' active disabled' : ''), currentPage === i, function () { return _this._paginateData(i); }));
|
|
6391
|
-
};
|
|
6392
|
-
// Add page buttons
|
|
6393
|
-
for (var i = 1; i <= totalPages; i++) {
|
|
6394
|
-
_loop_2(i);
|
|
6395
|
-
}
|
|
6396
|
-
}
|
|
6397
|
-
// Add Next Button
|
|
6398
|
-
paginationContainer.appendChild(createButton(next.text, "".concat(next.class).concat(currentPage === totalPages ? ' disabled' : ''), currentPage === totalPages, function () { return _this._paginateData(currentPage + 1); }));
|
|
6399
|
-
};
|
|
6400
|
-
// New helper method to calculate page range
|
|
6401
|
-
KTDataTable.prototype._calculatePageRange = function (currentPage, totalPages, maxButtons) {
|
|
6402
|
-
var startPage, endPage;
|
|
6403
|
-
var halfMaxButtons = Math.floor(maxButtons / 2);
|
|
6404
|
-
if (totalPages <= maxButtons) {
|
|
6405
|
-
startPage = 1;
|
|
6406
|
-
endPage = totalPages;
|
|
6407
|
-
}
|
|
6408
|
-
else {
|
|
6409
|
-
startPage = Math.max(currentPage - halfMaxButtons, 1);
|
|
6410
|
-
endPage = Math.min(startPage + maxButtons - 1, totalPages);
|
|
6411
|
-
if (endPage - startPage < maxButtons - 1) {
|
|
6412
|
-
startPage = Math.max(endPage - maxButtons + 1, 1);
|
|
6413
|
-
}
|
|
6414
|
-
}
|
|
6415
|
-
return { start: startPage, end: endPage };
|
|
6416
|
-
};
|
|
6417
7105
|
/**
|
|
6418
7106
|
* Method for handling pagination
|
|
6419
7107
|
* @param page - The page number to navigate to
|
|
@@ -6422,10 +7110,9 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6422
7110
|
if (page < 1 || !Number.isInteger(page)) {
|
|
6423
7111
|
return;
|
|
6424
7112
|
}
|
|
6425
|
-
this.
|
|
6426
|
-
this._dispatchEvent('pagination', { page: page });
|
|
7113
|
+
this._emit('pagination', { page: page });
|
|
6427
7114
|
if (page >= 1 && page <= this.getState().totalPages) {
|
|
6428
|
-
this.
|
|
7115
|
+
this._stateStore.setPage(page);
|
|
6429
7116
|
this._updateData();
|
|
6430
7117
|
}
|
|
6431
7118
|
};
|
|
@@ -6464,8 +7151,7 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6464
7151
|
* @returns {void}
|
|
6465
7152
|
*/
|
|
6466
7153
|
KTDataTable.prototype._saveState = function () {
|
|
6467
|
-
this.
|
|
6468
|
-
this._dispatchEvent('stateSave');
|
|
7154
|
+
this._emit('stateSave');
|
|
6469
7155
|
var ns = this._tableNamespace();
|
|
6470
7156
|
if (ns) {
|
|
6471
7157
|
localStorage.setItem(ns, JSON.stringify(this.getState()));
|
|
@@ -6482,7 +7168,7 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6482
7168
|
try {
|
|
6483
7169
|
var state = JSON.parse(stateString);
|
|
6484
7170
|
if (state)
|
|
6485
|
-
this.
|
|
7171
|
+
this._stateStore.replaceState(state);
|
|
6486
7172
|
return state;
|
|
6487
7173
|
}
|
|
6488
7174
|
catch (_a) { }
|
|
@@ -6529,16 +7215,17 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6529
7215
|
* This method is called before re-rendering or when disposing the component.
|
|
6530
7216
|
*/
|
|
6531
7217
|
KTDataTable.prototype._dispose = function () {
|
|
7218
|
+
this._cleanupCallbacks.forEach(function (cleanup) { return cleanup(); });
|
|
7219
|
+
this._cleanupCallbacks = [];
|
|
6532
7220
|
// --- 1. Remove search input event listener (debounced) ---
|
|
6533
7221
|
var tableId = this._tableId();
|
|
6534
7222
|
var searchElement = document.querySelector("[data-kt-datatable-search=\"#".concat(tableId, "\"]"));
|
|
6535
7223
|
if (searchElement) {
|
|
6536
7224
|
var searchWithDebounce = KTDataTable.asSearchElementWithDebounce(searchElement);
|
|
6537
|
-
if (
|
|
6538
|
-
|
|
7225
|
+
if (searchWithDebounce._debouncedSearch) {
|
|
7226
|
+
searchElement.removeEventListener('keyup', searchWithDebounce._debouncedSearch);
|
|
7227
|
+
delete searchWithDebounce._debouncedSearch;
|
|
6539
7228
|
}
|
|
6540
|
-
searchElement.removeEventListener('keyup', searchWithDebounce._debouncedSearch);
|
|
6541
|
-
delete searchWithDebounce._debouncedSearch;
|
|
6542
7229
|
}
|
|
6543
7230
|
// --- 2. Remove page size dropdown event listener ---
|
|
6544
7231
|
if (this._sizeElement && this._sizeElement.onchange) {
|
|
@@ -6606,23 +7293,7 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6606
7293
|
* @returns {KTDataTableStateInterface} The current state of the table.
|
|
6607
7294
|
*/
|
|
6608
7295
|
KTDataTable.prototype.getState = function () {
|
|
6609
|
-
return
|
|
6610
|
-
/**
|
|
6611
|
-
* The current page number.
|
|
6612
|
-
*/
|
|
6613
|
-
page: 1,
|
|
6614
|
-
/**
|
|
6615
|
-
* The field that the data is sorted by.
|
|
6616
|
-
*/
|
|
6617
|
-
sortField: null,
|
|
6618
|
-
/**
|
|
6619
|
-
* The sort order (ascending or descending).
|
|
6620
|
-
*/
|
|
6621
|
-
sortOrder: '',
|
|
6622
|
-
/**
|
|
6623
|
-
* The number of rows to display per page.
|
|
6624
|
-
*/
|
|
6625
|
-
pageSize: this._config.pageSize, filters: [] }, this._config._state);
|
|
7296
|
+
return this._stateStore.getState();
|
|
6626
7297
|
};
|
|
6627
7298
|
/**
|
|
6628
7299
|
* Sorts the data in the table by the specified field.
|
|
@@ -6633,10 +7304,8 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6633
7304
|
var state = this.getState();
|
|
6634
7305
|
var sortOrder = this._sortHandler.toggleSortOrder(state.sortField, state.sortOrder, field);
|
|
6635
7306
|
this._sortHandler.setSortIcon(field, sortOrder);
|
|
6636
|
-
this.
|
|
6637
|
-
this.
|
|
6638
|
-
this._fireEvent('sort', { field: field, order: sortOrder });
|
|
6639
|
-
this._dispatchEvent('sort', { field: field, order: sortOrder });
|
|
7307
|
+
this._stateStore.setSort(field, sortOrder);
|
|
7308
|
+
this._emit('sort', { field: field, order: sortOrder });
|
|
6640
7309
|
this._updateData();
|
|
6641
7310
|
};
|
|
6642
7311
|
/**
|
|
@@ -6669,15 +7338,13 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6669
7338
|
* Triggers the 'reload' event and the 'kt.datatable.reload' custom event.
|
|
6670
7339
|
*/
|
|
6671
7340
|
KTDataTable.prototype.reload = function () {
|
|
6672
|
-
this.
|
|
6673
|
-
this._dispatchEvent('reload');
|
|
7341
|
+
this._emit('reload');
|
|
6674
7342
|
// Fetch the data from the server using the current sort and filter settings
|
|
6675
7343
|
this._updateData();
|
|
6676
7344
|
};
|
|
6677
7345
|
KTDataTable.prototype.redraw = function (page) {
|
|
6678
7346
|
if (page === void 0) { page = 1; }
|
|
6679
|
-
this.
|
|
6680
|
-
this._dispatchEvent('redraw');
|
|
7347
|
+
this._emit('redraw');
|
|
6681
7348
|
this._paginateData(page);
|
|
6682
7349
|
};
|
|
6683
7350
|
/**
|
|
@@ -6706,18 +7373,16 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6706
7373
|
* @throws Error if the filter object is null or undefined.
|
|
6707
7374
|
*/
|
|
6708
7375
|
KTDataTable.prototype.setFilter = function (filter) {
|
|
6709
|
-
this.
|
|
6710
|
-
filter,
|
|
6711
|
-
], false);
|
|
6712
|
-
this._config._state.page = 1;
|
|
7376
|
+
this._stateStore.setFilter(filter);
|
|
6713
7377
|
return this;
|
|
6714
7378
|
};
|
|
6715
7379
|
KTDataTable.prototype.dispose = function () {
|
|
7380
|
+
var _a;
|
|
7381
|
+
(_a = this._remoteProvider) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
6716
7382
|
this._dispose();
|
|
6717
7383
|
};
|
|
6718
7384
|
KTDataTable.prototype.search = function (query) {
|
|
6719
|
-
this.
|
|
6720
|
-
this._config._state.page = 1;
|
|
7385
|
+
this._stateStore.setSearch(query);
|
|
6721
7386
|
this.reload();
|
|
6722
7387
|
};
|
|
6723
7388
|
/**
|
|
@@ -6810,8 +7475,7 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6810
7475
|
*/
|
|
6811
7476
|
KTDataTable.prototype.check = function () {
|
|
6812
7477
|
this._checkbox.check();
|
|
6813
|
-
this.
|
|
6814
|
-
this._dispatchEvent('checked');
|
|
7478
|
+
this._emit('checked');
|
|
6815
7479
|
};
|
|
6816
7480
|
/**
|
|
6817
7481
|
* Uncheck all visible row checkboxes
|
|
@@ -6819,8 +7483,7 @@ var KTDataTable = /** @class */ (function (_super) {
|
|
|
6819
7483
|
*/
|
|
6820
7484
|
KTDataTable.prototype.uncheck = function () {
|
|
6821
7485
|
this._checkbox.uncheck();
|
|
6822
|
-
this.
|
|
6823
|
-
this._dispatchEvent('unchecked');
|
|
7486
|
+
this._emit('unchecked');
|
|
6824
7487
|
};
|
|
6825
7488
|
/**
|
|
6826
7489
|
* Get all checked row IDs (across all pages if preserveSelection is true)
|
|
@@ -18947,9 +19610,9 @@ exports["default"] = KTUtils;
|
|
|
18947
19610
|
* Copyright 2025 by Keenthemes Inc
|
|
18948
19611
|
*/
|
|
18949
19612
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
18950
|
-
exports.KTCarousel = exports.KTPinInput = exports.KTRangeSlider = exports.KTClipboard = exports.KTRepeater = exports.KTRating = exports.KTToast = exports.KTSelect = exports.KTDataTable = exports.KTTogglePassword = exports.KTImageInput = exports.KTThemeSwitch = exports.KTStepper = exports.KTTooltip = exports.KTToggle = exports.KTReparent = exports.KTSticky = exports.KTScrollto = exports.KTScrollable = exports.KTScrollspy = exports.KTAccordion = exports.KTTabs = exports.KTDismiss = exports.KTCollapse = exports.KTDrawer = exports.KTModal = exports.KTDropdown = void 0;
|
|
18951
|
-
var dom_1 = __webpack_require__(/*! ./helpers/dom */ "./src/helpers/dom.ts");
|
|
19613
|
+
exports.KTComponents = exports.KTCarousel = exports.KTPinInput = exports.KTRangeSlider = exports.KTClipboard = exports.KTRepeater = exports.KTRating = exports.KTToast = exports.KTSelect = exports.KTDataTable = exports.KTTogglePassword = exports.KTImageInput = exports.KTThemeSwitch = exports.KTStepper = exports.KTTooltip = exports.KTToggle = exports.KTReparent = exports.KTSticky = exports.KTScrollto = exports.KTScrollable = exports.KTScrollspy = exports.KTAccordion = exports.KTTabs = exports.KTDismiss = exports.KTCollapse = exports.KTDrawer = exports.KTModal = exports.KTContextMenu = exports.KTDropdown = void 0;
|
|
18952
19614
|
var dropdown_1 = __webpack_require__(/*! ./components/dropdown */ "./src/components/dropdown/index.ts");
|
|
19615
|
+
var context_menu_1 = __webpack_require__(/*! ./components/context-menu */ "./src/components/context-menu/index.ts");
|
|
18953
19616
|
var modal_1 = __webpack_require__(/*! ./components/modal */ "./src/components/modal/index.ts");
|
|
18954
19617
|
var drawer_1 = __webpack_require__(/*! ./components/drawer */ "./src/components/drawer/index.ts");
|
|
18955
19618
|
var collapse_1 = __webpack_require__(/*! ./components/collapse */ "./src/components/collapse/index.ts");
|
|
@@ -18978,6 +19641,8 @@ var pin_input_1 = __webpack_require__(/*! ./components/pin-input */ "./src/compo
|
|
|
18978
19641
|
var carousel_1 = __webpack_require__(/*! ./components/carousel */ "./src/components/carousel/index.ts");
|
|
18979
19642
|
var dropdown_2 = __webpack_require__(/*! ./components/dropdown */ "./src/components/dropdown/index.ts");
|
|
18980
19643
|
Object.defineProperty(exports, "KTDropdown", ({ enumerable: true, get: function () { return dropdown_2.KTDropdown; } }));
|
|
19644
|
+
var context_menu_2 = __webpack_require__(/*! ./components/context-menu */ "./src/components/context-menu/index.ts");
|
|
19645
|
+
Object.defineProperty(exports, "KTContextMenu", ({ enumerable: true, get: function () { return context_menu_2.KTContextMenu; } }));
|
|
18981
19646
|
var modal_2 = __webpack_require__(/*! ./components/modal */ "./src/components/modal/index.ts");
|
|
18982
19647
|
Object.defineProperty(exports, "KTModal", ({ enumerable: true, get: function () { return modal_2.KTModal; } }));
|
|
18983
19648
|
var drawer_2 = __webpack_require__(/*! ./components/drawer */ "./src/components/drawer/index.ts");
|
|
@@ -19030,9 +19695,10 @@ var pin_input_2 = __webpack_require__(/*! ./components/pin-input */ "./src/compo
|
|
|
19030
19695
|
Object.defineProperty(exports, "KTPinInput", ({ enumerable: true, get: function () { return pin_input_2.KTPinInput; } }));
|
|
19031
19696
|
var carousel_2 = __webpack_require__(/*! ./components/carousel */ "./src/components/carousel/index.ts");
|
|
19032
19697
|
Object.defineProperty(exports, "KTCarousel", ({ enumerable: true, get: function () { return carousel_2.KTCarousel; } }));
|
|
19033
|
-
|
|
19698
|
+
exports.KTComponents = {
|
|
19034
19699
|
init: function () {
|
|
19035
19700
|
dropdown_1.KTDropdown.init();
|
|
19701
|
+
context_menu_1.KTContextMenu.init();
|
|
19036
19702
|
modal_1.KTModal.init();
|
|
19037
19703
|
drawer_1.KTDrawer.init();
|
|
19038
19704
|
collapse_1.KTCollapse.init();
|
|
@@ -19061,10 +19727,68 @@ var KTComponents = {
|
|
|
19061
19727
|
carousel_1.KTCarousel.init();
|
|
19062
19728
|
},
|
|
19063
19729
|
};
|
|
19064
|
-
exports["default"] = KTComponents;
|
|
19065
|
-
|
|
19066
|
-
|
|
19067
|
-
})
|
|
19730
|
+
exports["default"] = exports.KTComponents;
|
|
19731
|
+
|
|
19732
|
+
|
|
19733
|
+
/***/ }),
|
|
19734
|
+
|
|
19735
|
+
/***/ "./src/init-all.ts":
|
|
19736
|
+
/*!*************************!*\
|
|
19737
|
+
!*** ./src/init-all.ts ***!
|
|
19738
|
+
\*************************/
|
|
19739
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
19740
|
+
|
|
19741
|
+
|
|
19742
|
+
/**
|
|
19743
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
19744
|
+
* Copyright 2025 by Keenthemes Inc
|
|
19745
|
+
*/
|
|
19746
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
19747
|
+
exports.initAllComponents = void 0;
|
|
19748
|
+
var dom_1 = __webpack_require__(/*! ./helpers/dom */ "./src/helpers/dom.ts");
|
|
19749
|
+
var index_1 = __webpack_require__(/*! ./index */ "./src/index.ts");
|
|
19750
|
+
var initAllComponents = function () {
|
|
19751
|
+
dom_1.default.ready(function () {
|
|
19752
|
+
index_1.KTComponents.init();
|
|
19753
|
+
});
|
|
19754
|
+
};
|
|
19755
|
+
exports.initAllComponents = initAllComponents;
|
|
19756
|
+
(0, exports.initAllComponents)();
|
|
19757
|
+
|
|
19758
|
+
|
|
19759
|
+
/***/ }),
|
|
19760
|
+
|
|
19761
|
+
/***/ "./src/legacy.ts":
|
|
19762
|
+
/*!***********************!*\
|
|
19763
|
+
!*** ./src/legacy.ts ***!
|
|
19764
|
+
\***********************/
|
|
19765
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
19766
|
+
|
|
19767
|
+
|
|
19768
|
+
/**
|
|
19769
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
19770
|
+
* Copyright 2025 by Keenthemes Inc
|
|
19771
|
+
*/
|
|
19772
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
19773
|
+
if (k2 === undefined) k2 = k;
|
|
19774
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19775
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19776
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19777
|
+
}
|
|
19778
|
+
Object.defineProperty(o, k2, desc);
|
|
19779
|
+
}) : (function(o, m, k, k2) {
|
|
19780
|
+
if (k2 === undefined) k2 = k;
|
|
19781
|
+
o[k2] = m[k];
|
|
19782
|
+
}));
|
|
19783
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19784
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19785
|
+
};
|
|
19786
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
19787
|
+
exports["default"] = void 0;
|
|
19788
|
+
__exportStar(__webpack_require__(/*! ./index */ "./src/index.ts"), exports);
|
|
19789
|
+
var index_1 = __webpack_require__(/*! ./index */ "./src/index.ts");
|
|
19790
|
+
Object.defineProperty(exports, "default", ({ enumerable: true, get: function () { return index_1.default; } }));
|
|
19791
|
+
__webpack_require__(/*! ./init-all */ "./src/init-all.ts");
|
|
19068
19792
|
|
|
19069
19793
|
|
|
19070
19794
|
/***/ })
|
|
@@ -19135,7 +19859,7 @@ dom_1.default.ready(function () {
|
|
|
19135
19859
|
/******/ // startup
|
|
19136
19860
|
/******/ // Load entry module and return exports
|
|
19137
19861
|
/******/ // This entry module is referenced by other modules so it can't be inlined
|
|
19138
|
-
/******/ var __webpack_exports__ = __webpack_require__("./src/
|
|
19862
|
+
/******/ var __webpack_exports__ = __webpack_require__("./src/legacy.ts");
|
|
19139
19863
|
/******/
|
|
19140
19864
|
/******/ return __webpack_exports__;
|
|
19141
19865
|
/******/ })()
|