{"record":{"id":"9cc7e66fbee3061c","repo":"aspnetboilerplate/aspnetboilerplate","slug":"abp-ui-block-is-not-implemented","errorCode":null,"errorMessage":"abp.ui.block is not implemented!","messagePattern":"abp\\.ui\\.block is not implemented!","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/Abp.Web.Resources/Abp/Framework/scripts/abp.js","lineNumber":486,"sourceCode":"        if (!$) {\n          abp.log.warn('abp.message can not return promise since jQuery is not defined!');\n          return null;\n        }\n\n        return $.Deferred(function ($dfd) {\n          $dfd.resolve();\n        });\n      };\n\n      /* UI *******************************************************/\n\n      abp.ui = abp.ui || {};\n\n      /* UI BLOCK */\n      //Defines UI Block API, not implements it\n\n      abp.ui.block = function (elm) {\n        abp.log.warn('abp.ui.block is not implemented!');\n      };\n\n      abp.ui.unblock = function (elm) {\n        abp.log.warn('abp.ui.unblock is not implemented!');\n      };\n\n      /* UI BUSY */\n      //Defines UI Busy API, not implements it\n\n      abp.ui.setBusy = function (elm, optionsOrPromise) {\n        abp.log.warn('abp.ui.setBusy is not implemented!');\n      };\n\n      abp.ui.clearBusy = function (elm) {\n        abp.log.warn('abp.ui.clearBusy is not implemented!');\n      };\n\n      /* SIMPLE EVENT BUS *****************************************/","sourceCodeStart":468,"sourceCodeEnd":504,"githubUrl":"https://github.com/aspnetboilerplate/aspnetboilerplate/blob/2323c13a152aa0ebfb37af3830f687d7f5b53795/src/Abp.Web.Resources/Abp/Framework/scripts/abp.js#L468-L504","documentation":"abp.ui.block is a stub in base abp.js that defines the UI-block API surface (blocking an element or the whole page with an overlay) without implementing it. Calling it logs this warning and does nothing. A UI adapter (typically abp.blockUI.js using jquery.blockUI) must be included.","triggerScenarios":"Calling abp.ui.block(element) without a UI adapter overriding the stub.","commonSituations":"Apps showing blocking overlays during AJAX calls whose abp.blockUI.js include was dropped; adapter loaded before abp.js so stubs overwrite it.","solutions":["Include abp.blockUI.min.js (which needs jquery.blockUI.js) after abp.js.","Verify adapter load order in your bundle.","Or implement: abp.ui.block = function (elm) { $(elm || document.body).block({ message: '...' }); };"],"exampleFix":"// before\nabp.ui.block(); // nothing happens, warning logged\n// after\n<script src=\"jquery.blockUI.js\"></script>\n<script src=\"abp.blockUI.js\"></script>\nabp.ui.block(); // overlay shown","handlingStrategy":"fallback","validationCode":"if (/not implemented/.test(String(abp.ui.block))) { console.warn('abp.ui.block adapter missing'); }","typeGuard":"function hasUiBlockAdapter() { return typeof abp.ui.block === 'function' && !/not implemented/.test(String(abp.ui.block)); }","tryCatchPattern":"try { abp.ui.block($form); } catch (e) { $form.addClass('loading'); }","preventionTips":["Include jquery.blockUI.js and abp.blockUI.js after abp.js.","Verify adapter order in bundled output.","Don't rely on blocking for correctness — treat it as cosmetic."],"tags":["javascript","aspnetboilerplate","ui-block","stub-implementation"],"backgroundTag":"method-not-implemented","analyzedSha":"2323c13a152aa0ebfb37af3830f687d7f5b53795","analyzedAt":"2026-09-08T08:00:50.638Z","contentChangedAt":"2026-09-08T08:00:50.638Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}