fomantic-ui 2.10.0-beta.49 → 2.10.0-beta.50
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/.eslintrc.js +0 -4
- package/changelog-setup.js +1 -1
- package/dist/components/accordion.css +1 -1
- package/dist/components/accordion.js +15 -15
- package/dist/components/accordion.min.css +1 -1
- package/dist/components/accordion.min.js +2 -2
- package/dist/components/ad.css +1 -1
- package/dist/components/ad.min.css +1 -1
- package/dist/components/api.js +20 -20
- package/dist/components/api.min.js +2 -2
- package/dist/components/breadcrumb.css +1 -1
- package/dist/components/breadcrumb.min.css +1 -1
- package/dist/components/button.css +1 -1
- package/dist/components/button.min.css +1 -1
- package/dist/components/calendar.css +1 -1
- package/dist/components/calendar.js +43 -44
- package/dist/components/calendar.min.css +1 -1
- package/dist/components/calendar.min.js +2 -2
- package/dist/components/card.css +1 -1
- package/dist/components/card.min.css +1 -1
- package/dist/components/checkbox.css +1 -1
- package/dist/components/checkbox.js +15 -15
- package/dist/components/checkbox.min.css +1 -1
- package/dist/components/checkbox.min.js +2 -2
- package/dist/components/comment.css +1 -1
- package/dist/components/comment.min.css +1 -1
- package/dist/components/container.css +1 -1
- package/dist/components/container.min.css +1 -1
- package/dist/components/dimmer.css +1 -1
- package/dist/components/dimmer.js +15 -15
- package/dist/components/dimmer.min.css +1 -1
- package/dist/components/dimmer.min.js +2 -2
- package/dist/components/divider.css +1 -1
- package/dist/components/divider.min.css +1 -1
- package/dist/components/dropdown.css +1 -1
- package/dist/components/dropdown.js +29 -31
- package/dist/components/dropdown.min.css +1 -1
- package/dist/components/dropdown.min.js +2 -2
- package/dist/components/embed.css +1 -1
- package/dist/components/embed.js +15 -15
- package/dist/components/embed.min.css +1 -1
- package/dist/components/embed.min.js +2 -2
- package/dist/components/emoji.css +1 -1
- package/dist/components/emoji.min.css +1 -1
- package/dist/components/feed.css +1 -1
- package/dist/components/feed.min.css +1 -1
- package/dist/components/flag.css +1 -1
- package/dist/components/flag.min.css +1 -1
- package/dist/components/flyout.css +1 -1
- package/dist/components/flyout.js +27 -29
- package/dist/components/flyout.min.css +1 -1
- package/dist/components/flyout.min.js +2 -2
- package/dist/components/form.css +1 -1
- package/dist/components/form.js +29 -29
- package/dist/components/form.min.css +1 -1
- package/dist/components/form.min.js +2 -2
- package/dist/components/grid.css +1 -1
- package/dist/components/grid.min.css +1 -1
- package/dist/components/header.css +1 -1
- package/dist/components/header.min.css +1 -1
- package/dist/components/icon.css +1 -1
- package/dist/components/icon.min.css +1 -1
- package/dist/components/image.css +1 -1
- package/dist/components/image.min.css +1 -1
- package/dist/components/input.css +1 -1
- package/dist/components/input.min.css +1 -1
- package/dist/components/item.css +1 -1
- package/dist/components/item.min.css +1 -1
- package/dist/components/label.css +1 -1
- package/dist/components/label.min.css +1 -1
- package/dist/components/list.css +1 -1
- package/dist/components/list.min.css +1 -1
- package/dist/components/loader.css +1 -1
- package/dist/components/loader.min.css +1 -1
- package/dist/components/menu.css +1 -1
- package/dist/components/menu.min.css +1 -1
- package/dist/components/message.css +1 -1
- package/dist/components/message.min.css +1 -1
- package/dist/components/modal.css +1 -1
- package/dist/components/modal.js +28 -30
- package/dist/components/modal.min.css +1 -1
- package/dist/components/modal.min.js +2 -2
- package/dist/components/nag.css +1 -1
- package/dist/components/nag.js +16 -16
- package/dist/components/nag.min.css +1 -1
- package/dist/components/nag.min.js +2 -2
- package/dist/components/placeholder.css +1 -1
- package/dist/components/placeholder.min.css +1 -1
- package/dist/components/popup.css +1 -1
- package/dist/components/popup.js +18 -18
- package/dist/components/popup.min.css +1 -1
- package/dist/components/popup.min.js +2 -2
- package/dist/components/progress.css +1 -1
- package/dist/components/progress.js +15 -15
- package/dist/components/progress.min.css +1 -1
- package/dist/components/progress.min.js +2 -2
- package/dist/components/rail.css +1 -1
- package/dist/components/rail.min.css +1 -1
- package/dist/components/rating.css +1 -1
- package/dist/components/rating.js +15 -15
- package/dist/components/rating.min.css +1 -1
- package/dist/components/rating.min.js +2 -2
- package/dist/components/reset.css +1 -1
- package/dist/components/reset.min.css +1 -1
- package/dist/components/reveal.css +1 -1
- package/dist/components/reveal.min.css +1 -1
- package/dist/components/search.css +1 -1
- package/dist/components/search.js +22 -22
- package/dist/components/search.min.css +1 -1
- package/dist/components/search.min.js +2 -2
- package/dist/components/segment.css +1 -1
- package/dist/components/segment.min.css +1 -1
- package/dist/components/shape.css +1 -1
- package/dist/components/shape.js +16 -16
- package/dist/components/shape.min.css +1 -1
- package/dist/components/shape.min.js +2 -2
- package/dist/components/sidebar.css +1 -1
- package/dist/components/sidebar.js +16 -16
- package/dist/components/sidebar.min.css +1 -1
- package/dist/components/sidebar.min.js +2 -2
- package/dist/components/site.css +1 -1
- package/dist/components/site.js +15 -15
- package/dist/components/site.min.css +1 -1
- package/dist/components/site.min.js +2 -2
- package/dist/components/slider.css +1 -1
- package/dist/components/slider.js +17 -17
- package/dist/components/slider.min.css +1 -1
- package/dist/components/slider.min.js +2 -2
- package/dist/components/state.js +16 -16
- package/dist/components/state.min.js +2 -2
- package/dist/components/statistic.css +1 -1
- package/dist/components/statistic.min.css +1 -1
- package/dist/components/step.css +1 -1
- package/dist/components/step.min.css +1 -1
- package/dist/components/sticky.css +1 -1
- package/dist/components/sticky.js +18 -18
- package/dist/components/sticky.min.css +1 -1
- package/dist/components/sticky.min.js +2 -2
- package/dist/components/tab.css +1 -1
- package/dist/components/tab.js +19 -19
- package/dist/components/tab.min.css +1 -1
- package/dist/components/tab.min.js +2 -2
- package/dist/components/table.css +1 -1
- package/dist/components/table.min.css +1 -1
- package/dist/components/text.css +1 -1
- package/dist/components/text.min.css +1 -1
- package/dist/components/toast.css +1 -1
- package/dist/components/toast.js +17 -17
- package/dist/components/toast.min.css +1 -1
- package/dist/components/toast.min.js +2 -2
- package/dist/components/transition.css +1 -1
- package/dist/components/transition.js +17 -18
- package/dist/components/transition.min.css +1 -1
- package/dist/components/transition.min.js +2 -2
- package/dist/components/visibility.js +18 -18
- package/dist/components/visibility.min.js +2 -2
- package/dist/semantic.css +53 -53
- package/dist/semantic.js +492 -500
- package/dist/semantic.min.css +1 -1
- package/dist/semantic.min.js +2 -2
- package/package.json +1 -1
- package/scripts/nightly-version.js +2 -2
- package/src/definitions/behaviors/api.js +19 -19
- package/src/definitions/behaviors/form.js +28 -28
- package/src/definitions/behaviors/state.js +15 -15
- package/src/definitions/behaviors/visibility.js +17 -17
- package/src/definitions/globals/site.js +14 -14
- package/src/definitions/modules/accordion.js +14 -14
- package/src/definitions/modules/calendar.js +42 -43
- package/src/definitions/modules/checkbox.js +14 -14
- package/src/definitions/modules/dimmer.js +14 -14
- package/src/definitions/modules/dropdown.js +28 -30
- package/src/definitions/modules/embed.js +14 -14
- package/src/definitions/modules/flyout.js +26 -28
- package/src/definitions/modules/modal.js +27 -29
- package/src/definitions/modules/nag.js +15 -15
- package/src/definitions/modules/popup.js +17 -17
- package/src/definitions/modules/progress.js +14 -14
- package/src/definitions/modules/rating.js +14 -14
- package/src/definitions/modules/search.js +21 -21
- package/src/definitions/modules/shape.js +15 -15
- package/src/definitions/modules/sidebar.js +15 -15
- package/src/definitions/modules/slider.js +16 -16
- package/src/definitions/modules/sticky.js +17 -17
- package/src/definitions/modules/tab.js +18 -18
- package/src/definitions/modules/toast.js +16 -16
- package/src/definitions/modules/transition.js +16 -17
- package/tasks/admin/distributions/create.js +4 -4
- package/tasks/admin/register.js +1 -1
- package/tasks/build/css.js +4 -4
- package/tasks/install.js +1 -1
package/.eslintrc.js
CHANGED
|
@@ -88,16 +88,12 @@ module.exports = {
|
|
|
88
88
|
'no-restricted-properties': 'off',
|
|
89
89
|
'prefer-const': 'off',
|
|
90
90
|
'prefer-exponentiation-operator': 'off',
|
|
91
|
-
'prefer-rest-params': 'off',
|
|
92
91
|
'unicorn/no-array-for-each': 'off',
|
|
93
92
|
'unicorn/no-for-loop': 'off', // autofixes to "for of"
|
|
94
93
|
'unicorn/prefer-code-point': 'off',
|
|
95
|
-
'unicorn/prefer-includes': 'off',
|
|
96
94
|
'unicorn/prefer-number-properties': 'off',
|
|
97
95
|
'unicorn/prefer-optional-catch-binding': 'off',
|
|
98
|
-
'unicorn/prefer-prototype-methods': 'off',
|
|
99
96
|
'unicorn/prefer-reflect-apply': 'off',
|
|
100
|
-
'unicorn/prefer-spread': 'off',
|
|
101
97
|
'unicorn/prefer-top-level-await': 'off', // needs Node 14+
|
|
102
98
|
'vars-on-top': 'off',
|
|
103
99
|
|
package/changelog-setup.js
CHANGED
|
@@ -18,7 +18,7 @@ const issueLinks = function (item) {
|
|
|
18
18
|
module.exports = function (Handlebars) {
|
|
19
19
|
Handlebars.registerHelper('commit-collector', (merges, commits, major, minor, options) => {
|
|
20
20
|
const commitsFromMerges = merges.map((merge) => merge.commit);
|
|
21
|
-
const result = commits
|
|
21
|
+
const result = [...commits, ...commitsFromMerges];
|
|
22
22
|
isMajor = major;
|
|
23
23
|
isMinor = minor;
|
|
24
24
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* # Fomantic-UI 2.10.0-beta.
|
|
2
|
+
* # Fomantic-UI 2.10.0-beta.50+dd7d19d - Accordion
|
|
3
3
|
* https://github.com/fomantic/Fomantic-UI/
|
|
4
4
|
*
|
|
5
5
|
*
|
|
@@ -19,15 +19,15 @@
|
|
|
19
19
|
? window
|
|
20
20
|
: globalThis;
|
|
21
21
|
|
|
22
|
-
$.fn.accordion = function (
|
|
22
|
+
$.fn.accordion = function (...args) {
|
|
23
23
|
let $allModules = $(this);
|
|
24
24
|
|
|
25
25
|
let time = Date.now();
|
|
26
26
|
let performance = [];
|
|
27
27
|
|
|
28
|
-
let
|
|
29
|
-
let methodInvoked = typeof
|
|
30
|
-
let queryArguments =
|
|
28
|
+
let parameters = args[0];
|
|
29
|
+
let methodInvoked = typeof parameters === 'string';
|
|
30
|
+
let queryArguments = args.slice(1);
|
|
31
31
|
|
|
32
32
|
let returnedValue;
|
|
33
33
|
$allModules.each(function () {
|
|
@@ -359,30 +359,30 @@
|
|
|
359
359
|
return module[name];
|
|
360
360
|
}
|
|
361
361
|
},
|
|
362
|
-
debug: function () {
|
|
362
|
+
debug: function (...args) {
|
|
363
363
|
if (!settings.silent && settings.debug) {
|
|
364
364
|
if (settings.performance) {
|
|
365
|
-
module.performance.log(
|
|
365
|
+
module.performance.log(args);
|
|
366
366
|
} else {
|
|
367
367
|
module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
|
|
368
|
-
module.debug.apply(console,
|
|
368
|
+
module.debug.apply(console, args);
|
|
369
369
|
}
|
|
370
370
|
}
|
|
371
371
|
},
|
|
372
|
-
verbose: function () {
|
|
372
|
+
verbose: function (...args) {
|
|
373
373
|
if (!settings.silent && settings.verbose && settings.debug) {
|
|
374
374
|
if (settings.performance) {
|
|
375
|
-
module.performance.log(
|
|
375
|
+
module.performance.log(args);
|
|
376
376
|
} else {
|
|
377
377
|
module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
|
|
378
|
-
module.verbose.apply(console,
|
|
378
|
+
module.verbose.apply(console, args);
|
|
379
379
|
}
|
|
380
380
|
}
|
|
381
381
|
},
|
|
382
|
-
error: function () {
|
|
382
|
+
error: function (...args) {
|
|
383
383
|
if (!settings.silent) {
|
|
384
384
|
module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
|
|
385
|
-
module.error.apply(console,
|
|
385
|
+
module.error.apply(console, args);
|
|
386
386
|
}
|
|
387
387
|
},
|
|
388
388
|
performance: {
|
|
@@ -397,7 +397,7 @@
|
|
|
397
397
|
time = currentTime;
|
|
398
398
|
performance.push({
|
|
399
399
|
Name: message[0],
|
|
400
|
-
Arguments:
|
|
400
|
+
Arguments: message.slice(1),
|
|
401
401
|
Element: element,
|
|
402
402
|
'Execution Time': executionTime,
|
|
403
403
|
});
|
|
@@ -477,7 +477,7 @@
|
|
|
477
477
|
if (instance === undefined) {
|
|
478
478
|
module.initialize();
|
|
479
479
|
}
|
|
480
|
-
module.invoke(
|
|
480
|
+
module.invoke(parameters);
|
|
481
481
|
} else {
|
|
482
482
|
if (instance !== undefined) {
|
|
483
483
|
instance.invoke('destroy');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* # Fomantic UI - 2.10.0-beta.
|
|
2
|
+
* # Fomantic UI - 2.10.0-beta.50+dd7d19d
|
|
3
3
|
* https://github.com/fomantic/Fomantic-UI
|
|
4
4
|
* https://fomantic-ui.com/
|
|
5
5
|
*
|
|
@@ -8,4 +8,4 @@
|
|
|
8
8
|
* https://opensource.org/licenses/MIT
|
|
9
9
|
*
|
|
10
10
|
*/
|
|
11
|
-
!function(
|
|
11
|
+
!function(C,e){"use strict";e=void 0!==e&&e.Math===Math?e:globalThis,C.fn.accordion=function(...e){let n=C(this),a=Date.now(),s=[],m=e[0],h="string"==typeof m,b=e.slice(1),y;return n.each(function(){let l=C.isPlainObject(m)?C.extend(!0,{},C.fn.accordion.settings,m):C.extend({},C.fn.accordion.settings),r=l.className;var e=l.namespace;let c=l.selector,d=l.error,n="."+e,t="module-"+e,i=C(this),u=i.find(c.title),g=i.find(c.content),f=this,p=i.data(t),o,v;v={initialize:function(){v.debug("Initializing",i),v.bind.events(),l.observeChanges&&v.observeChanges(),v.instantiate()},instantiate:function(){p=v,i.data(t,v)},destroy:function(){v.debug("Destroying previous instance",i),i.off(n).removeData(t)},refresh:function(){u=i.find(c.title),g=i.find(c.content)},observeChanges:function(){(o=new MutationObserver(function(e){v.debug("DOM tree modified, updating selector cache"),v.refresh()})).observe(f,{childList:!0,subtree:!0}),v.debug("Setting up mutation observer",o)},bind:{events:function(){v.debug("Binding delegated events"),i.on(l.on+n,c.trigger,v.event.click)}},event:{click:function(e){0===C(e.target).closest(c.ignore).length&&v.toggle.call(this)}},toggle:function(e){let n=void 0!==e?"number"==typeof e?u.eq(e):C(e).closest(c.title):C(this).closest(c.title),t=n.next(g);var e=t.hasClass(r.animating),i=t.hasClass(r.active),o=i&&!e,i=!i&&e;v.debug("Toggling visibility of content",n),o||i?l.collapsible?v.close.call(n):v.debug("Cannot close accordion content collapsing is disabled"):v.open.call(n)},open:function(e){let n=void 0!==e?"number"==typeof e?u.eq(e):C(e).closest(c.title):C(this).closest(c.title),t=n.next(g);e=t.hasClass(r.animating);t.hasClass(r.active)||e?v.debug("Accordion already open, skipping",t):(v.debug("Opening accordion content",n),l.onOpening.call(t),l.onChanging.call(t),l.exclusive&&v.closeOthers.call(n),n.addClass(r.active),t.stop(!0,!0).addClass(r.animating),l.animateChildren&&(void 0!==C.fn.transition?t.children().transition({animation:"fade in",queue:!1,useFailSafe:!0,debug:l.debug,verbose:l.verbose,silent:l.silent,duration:l.duration,skipInlineHidden:!0,onComplete:function(){t.children().removeClass(r.transition)}}):t.children().stop(!0,!0).animate({opacity:1},l.duration,v.resetOpacity)),t.slideDown(l.duration,l.easing,function(){t.removeClass(r.animating).addClass(r.active),v.reset.display.call(this),l.onOpen.call(this),l.onChange.call(this)}))},close:function(e){let n=void 0!==e?"number"==typeof e?u.eq(e):C(e).closest(c.title):C(this).closest(c.title),t=n.next(g);var e=t.hasClass(r.animating),i=t.hasClass(r.active);!i&&!(!i&&e)||i&&e||(v.debug("Closing accordion content",t),l.onClosing.call(t),l.onChanging.call(t),n.removeClass(r.active),t.stop(!0,!0).addClass(r.animating),l.animateChildren&&(void 0!==C.fn.transition?t.children().transition({animation:"fade out",queue:!1,useFailSafe:!0,debug:l.debug,verbose:l.verbose,silent:l.silent,duration:l.duration,skipInlineHidden:!0}):t.children().stop(!0,!0).animate({opacity:0},l.duration,v.resetOpacity)),t.slideUp(l.duration,l.easing,function(){t.removeClass(r.animating).removeClass(r.active),v.reset.display.call(this),l.onClose.call(this),l.onChange.call(this)}))},closeOthers:function(e){let n=void 0!==e?u.eq(e):C(this).closest(c.title);e=n.parents(c.content).prev(c.title);let t=n.closest(c.accordion);var i=c.title+"."+r.active+":visible",o=c.content+"."+r.active+":visible";let a,s;s=(a=l.closeNested?t.find(i).not(e):(a=t.find(i).not(e),o=t.find(o).find(i).not(e),a.not(o))).next(g),0<a.length&&(v.debug("Exclusive enabled, closing other content",a),a.removeClass(r.active),s.removeClass(r.animating).stop(!0,!0),l.animateChildren&&(void 0!==C.fn.transition?s.children().transition({animation:"fade out",useFailSafe:!0,debug:l.debug,verbose:l.verbose,silent:l.silent,duration:l.duration,skipInlineHidden:!0}):s.children().stop(!0,!0).animate({opacity:0},l.duration,v.resetOpacity)),s.slideUp(l.duration,l.easing,function(){C(this).removeClass(r.active),v.reset.display.call(this)}))},reset:{display:function(){v.verbose("Removing inline display from element",this);let e=C(this);e.css("display",""),""===e.attr("style")&&e.attr("style","").removeAttr("style")},opacity:function(){v.verbose("Removing inline opacity from element",this);let e=C(this);e.css("opacity",""),""===e.attr("style")&&e.attr("style","").removeAttr("style")}},setting:function(e,n){if(v.debug("Changing setting",e,n),C.isPlainObject(e))C.extend(!0,l,e);else{if(void 0===n)return l[e];C.isPlainObject(l[e])?C.extend(!0,l[e],n):l[e]=n}},internal:function(e,n){if(v.debug("Changing internal",e,n),void 0===n)return v[e];C.isPlainObject(e)?C.extend(!0,v,e):v[e]=n},debug:function(...e){!l.silent&&l.debug&&(l.performance?v.performance.log(e):(v.debug=Function.prototype.bind.call(console.info,console,l.name+":"),v.debug.apply(console,e)))},verbose:function(...e){!l.silent&&l.verbose&&l.debug&&(l.performance?v.performance.log(e):(v.verbose=Function.prototype.bind.call(console.info,console,l.name+":"),v.verbose.apply(console,e)))},error:function(...e){l.silent||(v.error=Function.prototype.bind.call(console.error,console,l.name+":"),v.error.apply(console,e))},performance:{log:function(e){var n,t;l.performance&&(t=(n=Date.now())-(a||n),a=n,s.push({Name:e[0],Arguments:e.slice(1),Element:f,"Execution Time":t})),clearTimeout(v.performance.timer),v.performance.timer=setTimeout(function(){v.performance.display()},500)},display:function(){var e=l.name+":";let t=0;a=!1,clearTimeout(v.performance.timer),C.each(s,function(e,n){t+=n["Execution Time"]}),e+=" "+t+"ms",0<s.length&&(console.groupCollapsed(e),console.table(s),console.groupEnd()),s=[]}},invoke:function(i,e,n){let o=p,a,s,t;var l;return e=e||b,n=n||f,"string"==typeof i&&void 0!==o&&(i=i.split(/[ .]/),a=i.length-1,C.each(i,function(e,n){var t=e!==a?n+i[e+1].charAt(0).toUpperCase()+i[e+1].slice(1):i;if(C.isPlainObject(o[t])&&e!==a)o=o[t];else{if(void 0!==o[t])return s=o[t],!1;{if(!C.isPlainObject(o[n])||e===a)return void 0!==o[n]?s=o[n]:v.error(d.method,i),!1;o=o[n]}}})),"function"==typeof(l=s)&&"number"!=typeof l.nodeType?t=s.apply(n,e):void 0!==s&&(t=s),Array.isArray(y)?y.push(t):void 0!==y?y=[y,t]:void 0!==t&&(y=t),s}},h?(void 0===p&&v.initialize(),v.invoke(m)):(void 0!==p&&p.invoke("destroy"),v.initialize())}),void 0!==y?y:this},C.fn.accordion.settings={name:"Accordion",namespace:"accordion",silent:!1,debug:!1,verbose:!1,performance:!0,on:"click",observeChanges:!0,exclusive:!0,collapsible:!0,closeNested:!1,animateChildren:!0,duration:350,easing:"easeOutQuad",onOpening:function(){},onClosing:function(){},onChanging:function(){},onOpen:function(){},onClose:function(){},onChange:function(){},error:{method:"The method you called is not defined"},className:{active:"active",animating:"animating",transition:"transition"},selector:{accordion:".accordion",title:".title",trigger:".title",ignore:".ui.dropdown",content:".content"}},C.extend(C.easing,{easeOutQuad:function(e){return 1-(1-e)*(1-e)}})}(jQuery,window,document);
|
package/dist/components/ad.css
CHANGED
package/dist/components/api.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* # Fomantic-UI 2.10.0-beta.
|
|
2
|
+
* # Fomantic-UI 2.10.0-beta.50+dd7d19d - API
|
|
3
3
|
* https://github.com/fomantic/Fomantic-UI/
|
|
4
4
|
*
|
|
5
5
|
*
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
? window
|
|
24
24
|
: globalThis;
|
|
25
25
|
|
|
26
|
-
$.fn.api = function (
|
|
26
|
+
$.fn.api = function (...args) {
|
|
27
27
|
// use window context if none specified
|
|
28
28
|
let $allModules = isFunction(this)
|
|
29
29
|
? $(window)
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
let time = Date.now();
|
|
32
32
|
let performance = [];
|
|
33
33
|
|
|
34
|
-
let
|
|
35
|
-
let methodInvoked = typeof
|
|
36
|
-
let queryArguments =
|
|
34
|
+
let parameters = args[0];
|
|
35
|
+
let methodInvoked = typeof parameters === 'string';
|
|
36
|
+
let queryArguments = args.slice(1);
|
|
37
37
|
let contextCheck = function (context, win) {
|
|
38
38
|
let $context;
|
|
39
|
-
if ([window, document].
|
|
39
|
+
if ([window, document].includes(context)) {
|
|
40
40
|
$context = $(context);
|
|
41
41
|
} else {
|
|
42
42
|
$context = $(win.document).find(context);
|
|
@@ -344,7 +344,7 @@
|
|
|
344
344
|
module.debug('Looking for required URL variables', requiredVariables);
|
|
345
345
|
$.each(requiredVariables, function (index, templatedString) {
|
|
346
346
|
// allow legacy {$var} style
|
|
347
|
-
let variable = templatedString.
|
|
347
|
+
let variable = templatedString.includes('$')
|
|
348
348
|
? templatedString.slice(2, -1)
|
|
349
349
|
: templatedString.slice(1, -1);
|
|
350
350
|
let value = $.isPlainObject(urlData) && urlData[variable] !== undefined
|
|
@@ -373,7 +373,7 @@
|
|
|
373
373
|
module.debug('Looking for optional URL variables', requiredVariables);
|
|
374
374
|
$.each(optionalVariables, function (index, templatedString) {
|
|
375
375
|
// allow legacy {/$var} style
|
|
376
|
-
let variable = templatedString.
|
|
376
|
+
let variable = templatedString.includes('$')
|
|
377
377
|
? templatedString.slice(3, -1)
|
|
378
378
|
: templatedString.slice(2, -1);
|
|
379
379
|
let value = $.isPlainObject(urlData) && urlData[variable] !== undefined
|
|
@@ -390,7 +390,7 @@
|
|
|
390
390
|
} else {
|
|
391
391
|
module.verbose('Optional variable not found', variable);
|
|
392
392
|
// remove preceding slash if set
|
|
393
|
-
url = url.
|
|
393
|
+
url = url.includes('/' + templatedString)
|
|
394
394
|
? url.replace('/' + templatedString, '')
|
|
395
395
|
: url.replace(templatedString, '');
|
|
396
396
|
}
|
|
@@ -447,7 +447,7 @@
|
|
|
447
447
|
} else {
|
|
448
448
|
pushValues[pushKey] = [pushValues[pushKey], value];
|
|
449
449
|
}
|
|
450
|
-
if (pushKey.
|
|
450
|
+
if (!pushKey.includes('[]')) {
|
|
451
451
|
value = pushValues[pushKey];
|
|
452
452
|
}
|
|
453
453
|
|
|
@@ -870,30 +870,30 @@
|
|
|
870
870
|
return module[name];
|
|
871
871
|
}
|
|
872
872
|
},
|
|
873
|
-
debug: function () {
|
|
873
|
+
debug: function (...args) {
|
|
874
874
|
if (!settings.silent && settings.debug) {
|
|
875
875
|
if (settings.performance) {
|
|
876
|
-
module.performance.log(
|
|
876
|
+
module.performance.log(args);
|
|
877
877
|
} else {
|
|
878
878
|
module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
|
|
879
|
-
module.debug.apply(console,
|
|
879
|
+
module.debug.apply(console, args);
|
|
880
880
|
}
|
|
881
881
|
}
|
|
882
882
|
},
|
|
883
|
-
verbose: function () {
|
|
883
|
+
verbose: function (...args) {
|
|
884
884
|
if (!settings.silent && settings.verbose && settings.debug) {
|
|
885
885
|
if (settings.performance) {
|
|
886
|
-
module.performance.log(
|
|
886
|
+
module.performance.log(args);
|
|
887
887
|
} else {
|
|
888
888
|
module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
|
|
889
|
-
module.verbose.apply(console,
|
|
889
|
+
module.verbose.apply(console, args);
|
|
890
890
|
}
|
|
891
891
|
}
|
|
892
892
|
},
|
|
893
|
-
error: function () {
|
|
893
|
+
error: function (...args) {
|
|
894
894
|
if (!settings.silent) {
|
|
895
895
|
module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
|
|
896
|
-
module.error.apply(console,
|
|
896
|
+
module.error.apply(console, args);
|
|
897
897
|
}
|
|
898
898
|
},
|
|
899
899
|
performance: {
|
|
@@ -908,7 +908,7 @@
|
|
|
908
908
|
time = currentTime;
|
|
909
909
|
performance.push({
|
|
910
910
|
Name: message[0],
|
|
911
|
-
Arguments:
|
|
911
|
+
Arguments: message.slice(1),
|
|
912
912
|
// 'Element' : element,
|
|
913
913
|
'Execution Time': executionTime,
|
|
914
914
|
});
|
|
@@ -989,7 +989,7 @@
|
|
|
989
989
|
if (instance === undefined) {
|
|
990
990
|
module.initialize();
|
|
991
991
|
}
|
|
992
|
-
module.invoke(
|
|
992
|
+
module.invoke(parameters);
|
|
993
993
|
} else {
|
|
994
994
|
if (instance !== undefined) {
|
|
995
995
|
instance.invoke('destroy');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* # Fomantic UI - 2.10.0-beta.
|
|
2
|
+
* # Fomantic UI - 2.10.0-beta.50+dd7d19d
|
|
3
3
|
* https://github.com/fomantic/Fomantic-UI
|
|
4
4
|
* https://fomantic-ui.com/
|
|
5
5
|
*
|
|
@@ -8,4 +8,4 @@
|
|
|
8
8
|
* https://opensource.org/licenses/MIT
|
|
9
9
|
*
|
|
10
10
|
*/
|
|
11
|
-
!function(P,j,n){"use strict";function C(e){return null!==e&&e===e.window}function E(e){return"function"==typeof e&&"number"!=typeof e.nodeType}j=void 0!==j&&j.Math===Math?j:globalThis,P.fn.api=function(x){let e=E(this)?P(j):P(this),A=Date.now(),k=[],S=x,T="string"==typeof S,w=[].slice.call(arguments,1),D=function(e,t){let r;return 0<=[j,n].indexOf(e)?r=P(e):0===(r=P(t.document).find(e)).length&&(r=t.frameElement?D(e,t.parent):j),r},O;return e.each(function(){let i=P.isPlainObject(x)?P.extend(!0,{},P.fn.api.settings,x):P.extend({},P.fn.api.settings),l=i.regExp;var e=i.namespace;let t=i.metadata,r=i.selector,s=i.error,n=i.className,o="."+e,a="module-"+e,u=P(this),f=u.closest(r.form),c=i.stateContext?D(i.stateContext,j):u,d,p,g,m,v,b,h=this,y=c[0],R=u.data(a),q;q={initialize:function(){T||(b=i.data,q.bind.events()),q.instantiate()},instantiate:function(){q.verbose("Storing instance of module",q),R=q,u.data(a,R)},destroy:function(){q.verbose("Destroying previous module for",h),u.removeData(a).off(o)},bind:{events:function(){var e=q.get.event();e?(q.verbose("Attaching API events to element",e),u.on(e+o,q.event.trigger)):"now"===i.on&&(q.debug("Querying API endpoint immediately"),q.query())}},decode:{json:function(e){if(void 0!==e&&"string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}},read:{cachedResponse:function(e){var t=j.sessionStorage.getItem(e+q.get.normalizedData());return q.debug("Using cached response",e,i.data,t),q.decode.json(t)}},write:{cachedResponse:function(e,t){P.isPlainObject(t)&&(t=JSON.stringify(t)),j.sessionStorage.setItem(e+q.get.normalizedData(),t),q.verbose("Storing cached response for url",e,i.data,t)}},query:function(){if(q.is.disabled())q.debug("Element is disabled API request aborted");else{if(q.is.loading()){if(!i.interruptRequests)return void q.debug("Cancelling request, previous request is still pending");q.debug("Interrupting previous request"),q.abort()}if(i.defaultData&&P.extend(!0,i.urlData,q.get.defaultData()),i.serializeForm&&(i.data=q.add.formData(b||i.data)),!1===(p=q.get.settings()))return q.cancelled=!0,void q.error(s.beforeSend);if(q.cancelled=!1,(g=q.get.templatedURL())||q.is.mocked()){if((g=q.add.urlData(g))||q.is.mocked()){if(p.url=i.base+g,d=P.extend(!0,{},i,{type:i.method||i.type,data:m,url:i.base+g,beforeSend:i.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),q.debug("Querying URL",d.url),q.verbose("Using AJAX settings",d),"local"===i.cache&&q.read.cachedResponse(g))return q.debug("Response returned from local cache"),q.request=q.create.request(),void q.request.resolveWith(y,[q.read.cachedResponse(g)]);i.throttle?i.throttleFirstRequest||q.timer?(q.debug("Throttling request",i.throttle),clearTimeout(q.timer),q.timer=setTimeout(function(){q.timer&&delete q.timer,q.debug("Sending throttled request",m,d.method),q.send.request()},i.throttle)):(q.debug("Sending request",m,d.method),q.send.request(),q.timer=setTimeout(function(){},i.throttle)):(q.debug("Sending request",m,d.method),q.send.request())}}else q.error(s.missingURL)}},should:{removeError:function(){return!0===i.hideError||"auto"===i.hideError&&!q.is.form()}},is:{disabled:function(){return 0<u.filter(r.disabled).length},expectingJSON:function(){return"json"===i.dataType||"jsonp"===i.dataType},form:function(){return u.is("form")||c.is("form")},mocked:function(){return i.mockResponse||i.mockResponseAsync||i.response||i.responseAsync},input:function(){return u.is("input")},loading:function(){return!!q.request&&"pending"===q.request.state()},abortedRequest:function(e){return e&&void 0!==e.readyState&&0===e.readyState?(q.verbose("XHR request determined to be aborted"),!0):(q.verbose("XHR request was not aborted"),!1)},validResponse:function(e){return q.is.expectingJSON()&&E(i.successTest)?(q.debug("Checking JSON returned success",i.successTest,e),i.successTest(e)?(q.debug("Response passed success test",e),!0):(q.debug("Response failed success test",e),!1)):(q.verbose("Response is not JSON, skipping validation",i.successTest,e),!0)}},was:{cancelled:function(){return q.cancelled||!1},successful:function(){return q.request&&"resolved"===q.request.state()},failure:function(){return q.request&&"rejected"===q.request.state()},complete:function(){return q.request&&("resolved"===q.request.state()||"rejected"===q.request.state())}},add:{urlData:function(o,a){var e,t;return o&&(e=o.match(l.required),t=o.match(l.optional),a=a||i.urlData,e&&(q.debug("Looking for required URL variables",e),P.each(e,function(e,t){var r=-1!==t.indexOf("$")?t.slice(2,-1):t.slice(1,-1);let n=P.isPlainObject(a)&&void 0!==a[r]?a[r]:void 0!==u.data(r)?u.data(r):void 0!==c.data(r)?c.data(r):a[r];if(void 0===n)return q.error(s.requiredParameter,r,o),o=!1;q.verbose("Found required variable",r,n),n=i.encodeParameters?q.get.urlEncodedValue(n):n,o=o.replace(t,n)})),t&&(q.debug("Looking for optional URL variables",e),P.each(t,function(e,t){var r=-1!==t.indexOf("$")?t.slice(3,-1):t.slice(2,-1),n=P.isPlainObject(a)&&void 0!==a[r]?a[r]:void 0!==u.data(r)?u.data(r):void 0!==c.data(r)?c.data(r):a[r];o=void 0!==n?(q.verbose("Optional variable Found",r,n),o.replace(t,n)):(q.verbose("Optional variable not found",r),-1!==o.indexOf("/"+t)?o.replace("/"+t,""):o.replace(t,""))}))),o},formData:function(r){let d={};var e,t="formdata"===i.serializeForm;if(r=r||b||i.data,e=P.isPlainObject(r),t)d=new FormData(f[0]),i.processData=void 0!==i.processData&&i.processData,i.contentType=void 0!==i.contentType&&i.contentType;else{let n=f.serializeArray(),s={},u={},c=function(e,t,r){return e[t]=r,e};P.each(P('input[type="file"]',f),function(e,r){P.each(P(r)[0].files,function(e,t){n.push({name:r.name,value:t})})}),P.each(n,function(e,n){if(l.validate.test(n.name)){var o="checkbox"===P('[name="'+CSS.escape(n.name)+'"]',f).attr("type"),a=parseFloat(n.value);let e=o&&"on"===n.value||"true"===n.value||(String(a)===n.value?a:"false"!==n.value&&n.value),t=n.name.match(l.key)||[],r=n.name.replace(/\[]$/,"");r in s?Array.isArray(u[r])?u[r].push(e):u[r]=[u[r],e]:(s[r]=0,u[r]=e),-1===r.indexOf("[]")&&(e=u[r]);for(;0<t.length;){var i=t.pop();""!==i||Array.isArray(e)?l.fixed.test(i)?e=c([],i,e):l.named.test(i)&&(e=c({},i,e)):e=c([],s[r]++,e)}d=P.extend(!0,d,e)}})}return r=e?(q.debug("Extending existing data with form data",r,d),t?(P.each(Object.keys(r),function(e,t){d.append(t,r[t])}),d):P.extend(!0,{},r,d)):(q.debug("Adding form data",d),d)}},send:{request:function(){q.set.loading(),q.request=q.create.request(),q.is.mocked()?q.mockedXHR=q.create.mockedXHR():q.xhr=q.create.xhr(),i.onRequest.call(y,q.request,q.xhr)}},event:{trigger:function(e){q.query(),"submit"!==e.type&&"click"!==e.type||e.preventDefault()},xhr:{always:function(){},done:function(e,t,r){let n=this;var o=Date.now()-v;let a=i.loadingDuration-o;o=!!E(i.onResponse)&&(q.is.expectingJSON()&&!i.rawResponse?i.onResponse.call(n,P.extend(!0,{},e)):i.onResponse.call(n,e));a=0<a?a:0,o&&(q.debug("Modified API response in onResponse callback",i.onResponse,o,e),e=o),0<a&&q.debug("Response completed early delaying state change by",a),setTimeout(function(){q.is.validResponse(e)?q.request.resolveWith(n,[e,r]):q.request.rejectWith(n,[r,"invalid"])},a)},fail:function(e,t,r){let n=this;var o=Date.now()-v;let a=i.loadingDuration-o;0<(a=0<a?a:0)&&q.debug("Response completed early delaying state change by",a),setTimeout(function(){q.is.abortedRequest(e)?q.request.rejectWith(n,[e,"aborted",r]):q.request.rejectWith(n,[e,"error",t,r])},a)}},request:{done:function(e,t){q.debug("Successful API Response",e),"local"===i.cache&&g&&(q.write.cachedResponse(g,e),q.debug("Saving server response locally",q.cache)),i.onSuccess.call(y,e,u,t)},complete:function(e,t){let r,n;q.was.successful()?(n=e,r=t):(r=e,n=q.get.responseFromXHR(r)),q.remove.loading(),i.onComplete.call(y,n,u,r)},fail:function(e,t,r){var n=q.get.responseFromXHR(e),o=q.get.errorFromRequest(n,t,r);if("aborted"===t)return q.debug("XHR Aborted (Most likely caused by page navigation or CORS Policy)",t,r),i.onAbort.call(y,t,u,e),!0;"invalid"===t?q.debug("JSON did not pass success test. A server-side error has most likely occurred",n):"error"===t&&void 0!==e&&(q.debug("XHR produced a server error",t,r),(e.status<200||300<=e.status)&&void 0!==r&&""!==r&&q.error(s.statusMessage+r,d.url),i.onError.call(y,o,u,e)),i.errorDuration&&"aborted"!==t&&(q.debug("Adding error state"),q.set.error(),q.should.removeError()&&setTimeout(function(){q.remove.error()},i.errorDuration)),q.debug("API Request failed",o,e),i.onFailure.call(y,n,u,e)}}},create:{request:function(){return P.Deferred().always(q.event.request.complete).done(q.event.request.done).fail(q.event.request.fail)},mockedXHR:function(){let e=i.mockResponse||i.response,t=i.mockResponseAsync||i.responseAsync;var r;let n,o;return o=P.Deferred().always(q.event.xhr.complete).done(q.event.xhr.done).fail(q.event.xhr.fail),e?(n=E(e)?(q.debug("Using specified synchronous callback",e),e.call(y,p)):(q.debug("Using settings specified response",e),e),o.resolveWith(y,[n,!1,{responseText:n}])):E(t)&&(r=function(e){q.debug("Async callback returned response",e),e?o.resolveWith(y,[e,!1,{responseText:e}]):o.rejectWith(y,[{responseText:e},!1,!1])},q.debug("Using specified async response callback",t),t.call(y,p,r)),o},xhr:function(){var e=P.ajax(d).always(q.event.xhr.always).done(q.event.xhr.done).fail(q.event.xhr.fail);return q.verbose("Created server request",e,d),e}},set:{error:function(){q.verbose("Adding error state to element",c),c.addClass(n.error)},loading:function(){q.verbose("Adding loading state to element",c),c.addClass(n.loading),v=Date.now()}},remove:{error:function(){q.verbose("Removing error state from element",c),c.removeClass(n.error)},loading:function(){q.verbose("Removing loading state from element",c),c.removeClass(n.loading)}},get:{normalizedData:function(){return"string"==typeof i.data?i.data:JSON.stringify(i.data,Object.keys(i.data).sort())},responseFromXHR:function(e){return!!P.isPlainObject(e)&&(q.is.expectingJSON()?q.decode.json(e.responseText):e.responseText)},errorFromRequest:function(e,t,r){return P.isPlainObject(e)&&void 0!==e.error?e.error:void 0!==i.error[t]?i.error[t]:r},request:function(){return q.request||!1},xhr:function(){return q.xhr||!1},settings:function(){let e;return(e=i.beforeSend.call(u,i))&&(void 0!==e.success&&(q.debug("Legacy success callback detected",e),q.error(s.legacyParameters,e.success),e.onSuccess=e.success),void 0!==e.failure&&(q.debug("Legacy failure callback detected",e),q.error(s.legacyParameters,e.failure),e.onFailure=e.failure),void 0!==e.complete&&(q.debug("Legacy complete callback detected",e),q.error(s.legacyParameters,e.complete),e.onComplete=e.complete)),void 0===e&&q.error(s.noReturnedValue),!1===e?e:void 0!==e?P.extend(!0,{},e):P.extend(!0,{},i)},urlEncodedValue:function(e){var t=j.decodeURIComponent(e),r=j.encodeURIComponent(e);return t!==e?(q.debug("URL value is already encoded, avoiding double encoding",e),e):(q.verbose("Encoding value using encodeURIComponent",e,r),r)},defaultData:function(){let e={};return C(h)||(q.is.input()?e.value=u.val():q.is.form()||(e.text=u.text())),e},event:function(){return C(h)||"now"===i.on?(q.debug("API called without element, no events attached"),!1):"auto"===i.on?u.is("input")?void 0!==h.oninput?"input":void 0!==h.onpropertychange?"propertychange":"keyup":u.is("form")?"submit":"click":i.on},templatedURL:function(e){if(e=e||i.action||u.data(t.action)||!1,g=i.url||u.data(t.url)||!1)return q.debug("Using specified url",g),g;if(e){if(q.debug("Looking up url for action",e,i.api),void 0===i.api[e]&&!q.is.mocked())return void q.error(s.missingAction,i.action,i.api);g=i.api[e]}else q.is.form()&&(g=u.attr("action")||c.attr("action")||!1,q.debug("No url or action specified, defaulting to form action",g));return g}},abort:function(){let e=q.get.xhr();e&&"resolved"!==e.state()&&(q.debug("Cancelling API request"),e.abort())},reset:function(){q.remove.error(),q.remove.loading()},setting:function(e,t){if(q.debug("Changing setting",e,t),P.isPlainObject(e))P.extend(!0,i,e);else{if(void 0===t)return i[e];P.isPlainObject(i[e])?P.extend(!0,i[e],t):i[e]=t}},internal:function(e,t){if(P.isPlainObject(e))P.extend(!0,q,e);else{if(void 0===t)return q[e];q[e]=t}},debug:function(){!i.silent&&i.debug&&(i.performance?q.performance.log(arguments):(q.debug=Function.prototype.bind.call(console.info,console,i.name+":"),q.debug.apply(console,arguments)))},verbose:function(){!i.silent&&i.verbose&&i.debug&&(i.performance?q.performance.log(arguments):(q.verbose=Function.prototype.bind.call(console.info,console,i.name+":"),q.verbose.apply(console,arguments)))},error:function(){i.silent||(q.error=Function.prototype.bind.call(console.error,console,i.name+":"),q.error.apply(console,arguments))},performance:{log:function(e){var t,r;i.performance&&(r=(t=Date.now())-(A||t),A=t,k.push({Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":r})),clearTimeout(q.performance.timer),q.performance.timer=setTimeout(function(){q.performance.display()},500)},display:function(){var e=i.name+":";let r=0;A=!1,clearTimeout(q.performance.timer),P.each(k,function(e,t){r+=t["Execution Time"]}),e+=" "+r+"ms",0<k.length&&(console.groupCollapsed(e),console.table(k),console.groupEnd()),k=[]}},invoke:function(n,e,t){let o=R,a,i,r;return e=e||w,t=t||h,"string"==typeof n&&void 0!==o&&(n=n.split(/[ .]/),a=n.length-1,P.each(n,function(e,t){var r=e!==a?t+n[e+1].charAt(0).toUpperCase()+n[e+1].slice(1):n;if(P.isPlainObject(o[r])&&e!==a)o=o[r];else{if(void 0!==o[r])return i=o[r],!1;{if(!P.isPlainObject(o[t])||e===a)return void 0!==o[t]?i=o[t]:q.error(s.method,n),!1;o=o[t]}}})),E(i)?r=i.apply(t,e):void 0!==i&&(r=i),Array.isArray(O)?O.push(r):void 0!==O?O=[O,r]:void 0!==r&&(O=r),i}},T?(void 0===R&&q.initialize(),q.invoke(S)):(void 0!==R&&R.invoke("destroy"),q.initialize())}),void 0!==O?O:this},P.api=P.fn.api,P.api.settings={name:"API",namespace:"api",debug:!1,verbose:!1,performance:!0,api:{},cache:!0,interruptRequests:!0,on:"auto",stateContext:!1,loadingDuration:0,hideError:"auto",errorDuration:2e3,encodeParameters:!0,action:!1,url:!1,base:"",urlData:{},defaultData:!0,serializeForm:!1,throttle:0,throttleFirstRequest:!0,method:"get",data:{},dataType:"json",mockResponse:!1,mockResponseAsync:!1,response:!1,responseAsync:!1,rawResponse:!0,beforeSend:function(e){return e},beforeXHR:function(e){},onRequest:function(e,t){},onResponse:!1,onSuccess:function(e,t){},onComplete:function(e,t){},onFailure:function(e,t){},onError:function(e,t){},onAbort:function(e,t){},successTest:!1,error:{beforeSend:"The before send function has aborted the request",error:"There was an error with your request",exitConditions:"API Request Aborted. Exit conditions met",JSONParse:"JSON could not be parsed during error handling",legacyParameters:"You are using legacy API success callback names",method:"The method you called is not defined",missingAction:"API action used but no url was defined",missingURL:"No URL specified for api event",noReturnedValue:"The beforeSend callback must return a settings object, beforeSend ignored.",parseError:"There was an error parsing your request",requiredParameter:"Missing a required URL parameter: ",statusMessage:"Server gave an error: ",timeout:"Your request timed out"},regExp:{required:/{\$*[\da-z]+}/gi,optional:/{\/\$*[\da-z]+}/gi,validate:/^[_a-z][\w-]*(?:\[[\w-]*])*$/i,key:/[\w-]+|(?=\[])/gi,push:/^$/,fixed:/^\d+$/,named:/^[\w-]+$/i},className:{loading:"loading",error:"error"},selector:{disabled:".disabled",form:"form"},metadata:{action:"action",url:"url"}}}(jQuery,window,document);
|
|
11
|
+
!function(P,j,n){"use strict";function O(e){return null!==e&&e===e.window}function C(e){return"function"==typeof e&&"number"!=typeof e.nodeType}j=void 0!==j&&j.Math===Math?j:globalThis,P.fn.api=function(...e){let t=C(this)?P(j):P(this),x=Date.now(),A=[],k=e[0],S="string"==typeof k,T=e.slice(1),w=function(e,t){let r;return[j,n].includes(e)?r=P(e):0===(r=P(t.document).find(e)).length&&(r=t.frameElement?w(e,t.parent):j),r},D;return t.each(function(){let a=P.isPlainObject(k)?P.extend(!0,{},P.fn.api.settings,k):P.extend({},P.fn.api.settings),l=a.regExp;var e=a.namespace;let t=a.metadata,r=a.selector,i=a.error,n=a.className,o="."+e,s="module-"+e,u=P(this),f=u.closest(r.form),c=a.stateContext?w(a.stateContext,j):u,d,p,g,m,v,b,h=this,y=c[0],R=u.data(s),q;q={initialize:function(){S||(b=a.data,q.bind.events()),q.instantiate()},instantiate:function(){q.verbose("Storing instance of module",q),R=q,u.data(s,R)},destroy:function(){q.verbose("Destroying previous module for",h),u.removeData(s).off(o)},bind:{events:function(){var e=q.get.event();e?(q.verbose("Attaching API events to element",e),u.on(e+o,q.event.trigger)):"now"===a.on&&(q.debug("Querying API endpoint immediately"),q.query())}},decode:{json:function(e){if(void 0!==e&&"string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}},read:{cachedResponse:function(e){var t=j.sessionStorage.getItem(e+q.get.normalizedData());return q.debug("Using cached response",e,a.data,t),q.decode.json(t)}},write:{cachedResponse:function(e,t){P.isPlainObject(t)&&(t=JSON.stringify(t)),j.sessionStorage.setItem(e+q.get.normalizedData(),t),q.verbose("Storing cached response for url",e,a.data,t)}},query:function(){if(q.is.disabled())q.debug("Element is disabled API request aborted");else{if(q.is.loading()){if(!a.interruptRequests)return void q.debug("Cancelling request, previous request is still pending");q.debug("Interrupting previous request"),q.abort()}if(a.defaultData&&P.extend(!0,a.urlData,q.get.defaultData()),a.serializeForm&&(a.data=q.add.formData(b||a.data)),!1===(p=q.get.settings()))return q.cancelled=!0,void q.error(i.beforeSend);if(q.cancelled=!1,(g=q.get.templatedURL())||q.is.mocked()){if((g=q.add.urlData(g))||q.is.mocked()){if(p.url=a.base+g,d=P.extend(!0,{},a,{type:a.method||a.type,data:m,url:a.base+g,beforeSend:a.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),q.debug("Querying URL",d.url),q.verbose("Using AJAX settings",d),"local"===a.cache&&q.read.cachedResponse(g))return q.debug("Response returned from local cache"),q.request=q.create.request(),void q.request.resolveWith(y,[q.read.cachedResponse(g)]);a.throttle?a.throttleFirstRequest||q.timer?(q.debug("Throttling request",a.throttle),clearTimeout(q.timer),q.timer=setTimeout(function(){q.timer&&delete q.timer,q.debug("Sending throttled request",m,d.method),q.send.request()},a.throttle)):(q.debug("Sending request",m,d.method),q.send.request(),q.timer=setTimeout(function(){},a.throttle)):(q.debug("Sending request",m,d.method),q.send.request())}}else q.error(i.missingURL)}},should:{removeError:function(){return!0===a.hideError||"auto"===a.hideError&&!q.is.form()}},is:{disabled:function(){return 0<u.filter(r.disabled).length},expectingJSON:function(){return"json"===a.dataType||"jsonp"===a.dataType},form:function(){return u.is("form")||c.is("form")},mocked:function(){return a.mockResponse||a.mockResponseAsync||a.response||a.responseAsync},input:function(){return u.is("input")},loading:function(){return!!q.request&&"pending"===q.request.state()},abortedRequest:function(e){return e&&void 0!==e.readyState&&0===e.readyState?(q.verbose("XHR request determined to be aborted"),!0):(q.verbose("XHR request was not aborted"),!1)},validResponse:function(e){return q.is.expectingJSON()&&C(a.successTest)?(q.debug("Checking JSON returned success",a.successTest,e),a.successTest(e)?(q.debug("Response passed success test",e),!0):(q.debug("Response failed success test",e),!1)):(q.verbose("Response is not JSON, skipping validation",a.successTest,e),!0)}},was:{cancelled:function(){return q.cancelled||!1},successful:function(){return q.request&&"resolved"===q.request.state()},failure:function(){return q.request&&"rejected"===q.request.state()},complete:function(){return q.request&&("resolved"===q.request.state()||"rejected"===q.request.state())}},add:{urlData:function(o,s){var e,t;return o&&(e=o.match(l.required),t=o.match(l.optional),s=s||a.urlData,e&&(q.debug("Looking for required URL variables",e),P.each(e,function(e,t){var r=t.includes("$")?t.slice(2,-1):t.slice(1,-1);let n=P.isPlainObject(s)&&void 0!==s[r]?s[r]:void 0!==u.data(r)?u.data(r):void 0!==c.data(r)?c.data(r):s[r];if(void 0===n)return q.error(i.requiredParameter,r,o),o=!1;q.verbose("Found required variable",r,n),n=a.encodeParameters?q.get.urlEncodedValue(n):n,o=o.replace(t,n)})),t&&(q.debug("Looking for optional URL variables",e),P.each(t,function(e,t){var r=t.includes("$")?t.slice(3,-1):t.slice(2,-1),n=P.isPlainObject(s)&&void 0!==s[r]?s[r]:void 0!==u.data(r)?u.data(r):void 0!==c.data(r)?c.data(r):s[r];o=void 0!==n?(q.verbose("Optional variable Found",r,n),o.replace(t,n)):(q.verbose("Optional variable not found",r),o.includes("/"+t)?o.replace("/"+t,""):o.replace(t,""))}))),o},formData:function(r){let d={};var e,t="formdata"===a.serializeForm;if(r=r||b||a.data,e=P.isPlainObject(r),t)d=new FormData(f[0]),a.processData=void 0!==a.processData&&a.processData,a.contentType=void 0!==a.contentType&&a.contentType;else{let n=f.serializeArray(),i={},u={},c=function(e,t,r){return e[t]=r,e};P.each(P('input[type="file"]',f),function(e,r){P.each(P(r)[0].files,function(e,t){n.push({name:r.name,value:t})})}),P.each(n,function(e,n){if(l.validate.test(n.name)){var o="checkbox"===P('[name="'+CSS.escape(n.name)+'"]',f).attr("type"),s=parseFloat(n.value);let e=o&&"on"===n.value||"true"===n.value||(String(s)===n.value?s:"false"!==n.value&&n.value),t=n.name.match(l.key)||[],r=n.name.replace(/\[]$/,"");r in i?Array.isArray(u[r])?u[r].push(e):u[r]=[u[r],e]:(i[r]=0,u[r]=e),r.includes("[]")||(e=u[r]);for(;0<t.length;){var a=t.pop();""!==a||Array.isArray(e)?l.fixed.test(a)?e=c([],a,e):l.named.test(a)&&(e=c({},a,e)):e=c([],i[r]++,e)}d=P.extend(!0,d,e)}})}return r=e?(q.debug("Extending existing data with form data",r,d),t?(P.each(Object.keys(r),function(e,t){d.append(t,r[t])}),d):P.extend(!0,{},r,d)):(q.debug("Adding form data",d),d)}},send:{request:function(){q.set.loading(),q.request=q.create.request(),q.is.mocked()?q.mockedXHR=q.create.mockedXHR():q.xhr=q.create.xhr(),a.onRequest.call(y,q.request,q.xhr)}},event:{trigger:function(e){q.query(),"submit"!==e.type&&"click"!==e.type||e.preventDefault()},xhr:{always:function(){},done:function(e,t,r){let n=this;var o=Date.now()-v;let s=a.loadingDuration-o;o=!!C(a.onResponse)&&(q.is.expectingJSON()&&!a.rawResponse?a.onResponse.call(n,P.extend(!0,{},e)):a.onResponse.call(n,e));s=0<s?s:0,o&&(q.debug("Modified API response in onResponse callback",a.onResponse,o,e),e=o),0<s&&q.debug("Response completed early delaying state change by",s),setTimeout(function(){q.is.validResponse(e)?q.request.resolveWith(n,[e,r]):q.request.rejectWith(n,[r,"invalid"])},s)},fail:function(e,t,r){let n=this;var o=Date.now()-v;let s=a.loadingDuration-o;0<(s=0<s?s:0)&&q.debug("Response completed early delaying state change by",s),setTimeout(function(){q.is.abortedRequest(e)?q.request.rejectWith(n,[e,"aborted",r]):q.request.rejectWith(n,[e,"error",t,r])},s)}},request:{done:function(e,t){q.debug("Successful API Response",e),"local"===a.cache&&g&&(q.write.cachedResponse(g,e),q.debug("Saving server response locally",q.cache)),a.onSuccess.call(y,e,u,t)},complete:function(e,t){let r,n;q.was.successful()?(n=e,r=t):(r=e,n=q.get.responseFromXHR(r)),q.remove.loading(),a.onComplete.call(y,n,u,r)},fail:function(e,t,r){var n=q.get.responseFromXHR(e),o=q.get.errorFromRequest(n,t,r);if("aborted"===t)return q.debug("XHR Aborted (Most likely caused by page navigation or CORS Policy)",t,r),a.onAbort.call(y,t,u,e),!0;"invalid"===t?q.debug("JSON did not pass success test. A server-side error has most likely occurred",n):"error"===t&&void 0!==e&&(q.debug("XHR produced a server error",t,r),(e.status<200||300<=e.status)&&void 0!==r&&""!==r&&q.error(i.statusMessage+r,d.url),a.onError.call(y,o,u,e)),a.errorDuration&&"aborted"!==t&&(q.debug("Adding error state"),q.set.error(),q.should.removeError()&&setTimeout(function(){q.remove.error()},a.errorDuration)),q.debug("API Request failed",o,e),a.onFailure.call(y,n,u,e)}}},create:{request:function(){return P.Deferred().always(q.event.request.complete).done(q.event.request.done).fail(q.event.request.fail)},mockedXHR:function(){let e=a.mockResponse||a.response,t=a.mockResponseAsync||a.responseAsync;var r;let n,o;return o=P.Deferred().always(q.event.xhr.complete).done(q.event.xhr.done).fail(q.event.xhr.fail),e?(n=C(e)?(q.debug("Using specified synchronous callback",e),e.call(y,p)):(q.debug("Using settings specified response",e),e),o.resolveWith(y,[n,!1,{responseText:n}])):C(t)&&(r=function(e){q.debug("Async callback returned response",e),e?o.resolveWith(y,[e,!1,{responseText:e}]):o.rejectWith(y,[{responseText:e},!1,!1])},q.debug("Using specified async response callback",t),t.call(y,p,r)),o},xhr:function(){var e=P.ajax(d).always(q.event.xhr.always).done(q.event.xhr.done).fail(q.event.xhr.fail);return q.verbose("Created server request",e,d),e}},set:{error:function(){q.verbose("Adding error state to element",c),c.addClass(n.error)},loading:function(){q.verbose("Adding loading state to element",c),c.addClass(n.loading),v=Date.now()}},remove:{error:function(){q.verbose("Removing error state from element",c),c.removeClass(n.error)},loading:function(){q.verbose("Removing loading state from element",c),c.removeClass(n.loading)}},get:{normalizedData:function(){return"string"==typeof a.data?a.data:JSON.stringify(a.data,Object.keys(a.data).sort())},responseFromXHR:function(e){return!!P.isPlainObject(e)&&(q.is.expectingJSON()?q.decode.json(e.responseText):e.responseText)},errorFromRequest:function(e,t,r){return P.isPlainObject(e)&&void 0!==e.error?e.error:void 0!==a.error[t]?a.error[t]:r},request:function(){return q.request||!1},xhr:function(){return q.xhr||!1},settings:function(){let e;return(e=a.beforeSend.call(u,a))&&(void 0!==e.success&&(q.debug("Legacy success callback detected",e),q.error(i.legacyParameters,e.success),e.onSuccess=e.success),void 0!==e.failure&&(q.debug("Legacy failure callback detected",e),q.error(i.legacyParameters,e.failure),e.onFailure=e.failure),void 0!==e.complete&&(q.debug("Legacy complete callback detected",e),q.error(i.legacyParameters,e.complete),e.onComplete=e.complete)),void 0===e&&q.error(i.noReturnedValue),!1===e?e:void 0!==e?P.extend(!0,{},e):P.extend(!0,{},a)},urlEncodedValue:function(e){var t=j.decodeURIComponent(e),r=j.encodeURIComponent(e);return t!==e?(q.debug("URL value is already encoded, avoiding double encoding",e),e):(q.verbose("Encoding value using encodeURIComponent",e,r),r)},defaultData:function(){let e={};return O(h)||(q.is.input()?e.value=u.val():q.is.form()||(e.text=u.text())),e},event:function(){return O(h)||"now"===a.on?(q.debug("API called without element, no events attached"),!1):"auto"===a.on?u.is("input")?void 0!==h.oninput?"input":void 0!==h.onpropertychange?"propertychange":"keyup":u.is("form")?"submit":"click":a.on},templatedURL:function(e){if(e=e||a.action||u.data(t.action)||!1,g=a.url||u.data(t.url)||!1)return q.debug("Using specified url",g),g;if(e){if(q.debug("Looking up url for action",e,a.api),void 0===a.api[e]&&!q.is.mocked())return void q.error(i.missingAction,a.action,a.api);g=a.api[e]}else q.is.form()&&(g=u.attr("action")||c.attr("action")||!1,q.debug("No url or action specified, defaulting to form action",g));return g}},abort:function(){let e=q.get.xhr();e&&"resolved"!==e.state()&&(q.debug("Cancelling API request"),e.abort())},reset:function(){q.remove.error(),q.remove.loading()},setting:function(e,t){if(q.debug("Changing setting",e,t),P.isPlainObject(e))P.extend(!0,a,e);else{if(void 0===t)return a[e];P.isPlainObject(a[e])?P.extend(!0,a[e],t):a[e]=t}},internal:function(e,t){if(P.isPlainObject(e))P.extend(!0,q,e);else{if(void 0===t)return q[e];q[e]=t}},debug:function(...e){!a.silent&&a.debug&&(a.performance?q.performance.log(e):(q.debug=Function.prototype.bind.call(console.info,console,a.name+":"),q.debug.apply(console,e)))},verbose:function(...e){!a.silent&&a.verbose&&a.debug&&(a.performance?q.performance.log(e):(q.verbose=Function.prototype.bind.call(console.info,console,a.name+":"),q.verbose.apply(console,e)))},error:function(...e){a.silent||(q.error=Function.prototype.bind.call(console.error,console,a.name+":"),q.error.apply(console,e))},performance:{log:function(e){var t,r;a.performance&&(r=(t=Date.now())-(x||t),x=t,A.push({Name:e[0],Arguments:e.slice(1),"Execution Time":r})),clearTimeout(q.performance.timer),q.performance.timer=setTimeout(function(){q.performance.display()},500)},display:function(){var e=a.name+":";let r=0;x=!1,clearTimeout(q.performance.timer),P.each(A,function(e,t){r+=t["Execution Time"]}),e+=" "+r+"ms",0<A.length&&(console.groupCollapsed(e),console.table(A),console.groupEnd()),A=[]}},invoke:function(n,e,t){let o=R,s,a,r;return e=e||T,t=t||h,"string"==typeof n&&void 0!==o&&(n=n.split(/[ .]/),s=n.length-1,P.each(n,function(e,t){var r=e!==s?t+n[e+1].charAt(0).toUpperCase()+n[e+1].slice(1):n;if(P.isPlainObject(o[r])&&e!==s)o=o[r];else{if(void 0!==o[r])return a=o[r],!1;{if(!P.isPlainObject(o[t])||e===s)return void 0!==o[t]?a=o[t]:q.error(i.method,n),!1;o=o[t]}}})),C(a)?r=a.apply(t,e):void 0!==a&&(r=a),Array.isArray(D)?D.push(r):void 0!==D?D=[D,r]:void 0!==r&&(D=r),a}},S?(void 0===R&&q.initialize(),q.invoke(k)):(void 0!==R&&R.invoke("destroy"),q.initialize())}),void 0!==D?D:this},P.api=P.fn.api,P.api.settings={name:"API",namespace:"api",debug:!1,verbose:!1,performance:!0,api:{},cache:!0,interruptRequests:!0,on:"auto",stateContext:!1,loadingDuration:0,hideError:"auto",errorDuration:2e3,encodeParameters:!0,action:!1,url:!1,base:"",urlData:{},defaultData:!0,serializeForm:!1,throttle:0,throttleFirstRequest:!0,method:"get",data:{},dataType:"json",mockResponse:!1,mockResponseAsync:!1,response:!1,responseAsync:!1,rawResponse:!0,beforeSend:function(e){return e},beforeXHR:function(e){},onRequest:function(e,t){},onResponse:!1,onSuccess:function(e,t){},onComplete:function(e,t){},onFailure:function(e,t){},onError:function(e,t){},onAbort:function(e,t){},successTest:!1,error:{beforeSend:"The before send function has aborted the request",error:"There was an error with your request",exitConditions:"API Request Aborted. Exit conditions met",JSONParse:"JSON could not be parsed during error handling",legacyParameters:"You are using legacy API success callback names",method:"The method you called is not defined",missingAction:"API action used but no url was defined",missingURL:"No URL specified for api event",noReturnedValue:"The beforeSend callback must return a settings object, beforeSend ignored.",parseError:"There was an error parsing your request",requiredParameter:"Missing a required URL parameter: ",statusMessage:"Server gave an error: ",timeout:"Your request timed out"},regExp:{required:/{\$*[\da-z]+}/gi,optional:/{\/\$*[\da-z]+}/gi,validate:/^[_a-z][\w-]*(?:\[[\w-]*])*$/i,key:/[\w-]+|(?=\[])/gi,push:/^$/,fixed:/^\d+$/,named:/^[\w-]+$/i},className:{loading:"loading",error:"error"},selector:{disabled:".disabled",form:"form"},metadata:{action:"action",url:"url"}}}(jQuery,window,document);
|