oxidized-web 0.15.1 → 0.17.0
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.
Potentially problematic release.
This version of oxidized-web might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/.rubocop.yml +22 -2
- data/CHANGELOG.md +30 -1
- data/README.md +13 -3
- data/Rakefile +9 -4
- data/docs/configuration.md +90 -0
- data/docs/development.md +42 -39
- data/lib/oxidized/web/public/scripts/oxidized.js +13 -13
- data/lib/oxidized/web/public/weblibs/bootstrap-icons.css +31 -3
- data/lib/oxidized/web/public/weblibs/bootstrap.bundle.js +20 -19
- data/lib/oxidized/web/public/weblibs/bootstrap.bundle.js.map +1 -1
- data/lib/oxidized/web/public/weblibs/bootstrap.css +110 -124
- data/lib/oxidized/web/public/weblibs/bootstrap.css.map +1 -1
- data/lib/oxidized/web/public/weblibs/bootstrap.js +20 -17
- data/lib/oxidized/web/public/weblibs/bootstrap.js.map +1 -1
- data/lib/oxidized/web/public/weblibs/buttons.bootstrap5.css +3 -3
- data/lib/oxidized/web/public/weblibs/buttons.colVis.js +14 -5
- data/lib/oxidized/web/public/weblibs/dataTables.bootstrap5.css +111 -17
- data/lib/oxidized/web/public/weblibs/dataTables.buttons.js +25 -7
- data/lib/oxidized/web/public/weblibs/dataTables.js +336 -106
- data/lib/oxidized/web/public/weblibs/dayjs-plugin-utc.min.js +1 -0
- data/lib/oxidized/web/public/weblibs/dayjs.min.js +1 -0
- data/lib/oxidized/web/public/weblibs/fonts/bootstrap-icons.woff +0 -0
- data/lib/oxidized/web/public/weblibs/fonts/bootstrap-icons.woff2 +0 -0
- data/lib/oxidized/web/version.rb +1 -1
- data/lib/oxidized/web/views/conf_search.haml +1 -1
- data/lib/oxidized/web/views/diffs.haml +6 -7
- data/lib/oxidized/web/views/head.haml +4 -0
- data/lib/oxidized/web/views/node.haml +3 -2
- data/lib/oxidized/web/views/nodes.haml +13 -5
- data/lib/oxidized/web/views/stats.haml +11 -3
- data/lib/oxidized/web/views/version.haml +1 -2
- data/lib/oxidized/web/views/versions.haml +11 -7
- data/lib/oxidized/web/webapp.rb +41 -29
- data/lib/oxidized/web.rb +72 -16
- data/oxidized-web.gemspec +22 -13
- data/package-lock.json +37 -25
- data/package.json +7 -5
- data/spec/spec_helper.rb +1 -0
- data/spec/web/node/show_spec.rb +100 -0
- data/spec/web/node/version_spec.rb +161 -0
- data/spec/{node_spec.rb → web/node_spec.rb} +1 -1
- data/spec/{nodes_spec.rb → web/nodes_spec.rb} +1 -1
- data/spec/{root_spec.rb → web/root_spec.rb} +1 -1
- data/spec/{webapp_spec.rb → web/webapp_spec.rb} +1 -1
- data/spec/web_spec.rb +98 -0
- metadata +69 -69
- data/.rubocop_todo.yml +0 -64
- data/spec/node_version_spec.rb +0 -102
@@ -1,6 +1,6 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap v5.3.
|
3
|
-
* Copyright 2011-
|
2
|
+
* Bootstrap v5.3.7 (https://getbootstrap.com/)
|
3
|
+
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
4
4
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
5
5
|
*/
|
6
6
|
(function (global, factory) {
|
@@ -205,7 +205,7 @@
|
|
205
205
|
* @param {HTMLElement} element
|
206
206
|
* @return void
|
207
207
|
*
|
208
|
-
* @see https://www.
|
208
|
+
* @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
|
209
209
|
*/
|
210
210
|
const reflow = element => {
|
211
211
|
element.offsetHeight; // eslint-disable-line no-unused-expressions
|
@@ -250,7 +250,7 @@
|
|
250
250
|
});
|
251
251
|
};
|
252
252
|
const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {
|
253
|
-
return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;
|
253
|
+
return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue;
|
254
254
|
};
|
255
255
|
const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
|
256
256
|
if (!waitForTransition) {
|
@@ -572,7 +572,7 @@
|
|
572
572
|
const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));
|
573
573
|
for (const key of bsKeys) {
|
574
574
|
let pureKey = key.replace(/^bs/, '');
|
575
|
-
pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1
|
575
|
+
pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1);
|
576
576
|
attributes[pureKey] = normalizeData(element.dataset[key]);
|
577
577
|
}
|
578
578
|
return attributes;
|
@@ -647,7 +647,7 @@
|
|
647
647
|
* Constants
|
648
648
|
*/
|
649
649
|
|
650
|
-
const VERSION = '5.3.
|
650
|
+
const VERSION = '5.3.7';
|
651
651
|
|
652
652
|
/**
|
653
653
|
* Class definition
|
@@ -673,6 +673,8 @@
|
|
673
673
|
this[propertyName] = null;
|
674
674
|
}
|
675
675
|
}
|
676
|
+
|
677
|
+
// Private
|
676
678
|
_queueCallback(callback, element, isAnimated = true) {
|
677
679
|
executeAfterTransition(callback, element, isAnimated);
|
678
680
|
}
|
@@ -1604,11 +1606,11 @@
|
|
1604
1606
|
this._element.style[dimension] = '';
|
1605
1607
|
this._queueCallback(complete, this._element, true);
|
1606
1608
|
}
|
1609
|
+
|
1610
|
+
// Private
|
1607
1611
|
_isShown(element = this._element) {
|
1608
1612
|
return element.classList.contains(CLASS_NAME_SHOW$7);
|
1609
1613
|
}
|
1610
|
-
|
1611
|
-
// Private
|
1612
1614
|
_configAfterMerge(config) {
|
1613
1615
|
config.toggle = Boolean(config.toggle); // Coerce string values
|
1614
1616
|
config.parent = getElement(config.parent);
|
@@ -2666,7 +2668,6 @@
|
|
2666
2668
|
var popperOffsets = computeOffsets({
|
2667
2669
|
reference: referenceClientRect,
|
2668
2670
|
element: popperRect,
|
2669
|
-
strategy: 'absolute',
|
2670
2671
|
placement: placement
|
2671
2672
|
});
|
2672
2673
|
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));
|
@@ -2994,7 +2995,6 @@
|
|
2994
2995
|
state.modifiersData[name] = computeOffsets({
|
2995
2996
|
reference: state.rects.reference,
|
2996
2997
|
element: state.rects.popper,
|
2997
|
-
strategy: 'absolute',
|
2998
2998
|
placement: state.placement
|
2999
2999
|
});
|
3000
3000
|
} // eslint-disable-next-line import/no-unused-modules
|
@@ -3690,6 +3690,9 @@
|
|
3690
3690
|
this._element.setAttribute('aria-expanded', 'false');
|
3691
3691
|
Manipulator.removeDataAttribute(this._menu, 'popper');
|
3692
3692
|
EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
|
3693
|
+
|
3694
|
+
// Explicitly return focus to the trigger element
|
3695
|
+
this._element.focus();
|
3693
3696
|
}
|
3694
3697
|
_getConfig(config) {
|
3695
3698
|
config = super._getConfig(config);
|
@@ -3701,7 +3704,7 @@
|
|
3701
3704
|
}
|
3702
3705
|
_createPopper() {
|
3703
3706
|
if (typeof Popper === 'undefined') {
|
3704
|
-
throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
|
3707
|
+
throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org/docs/v2/)');
|
3705
3708
|
}
|
3706
3709
|
let referenceElement = this._element;
|
3707
3710
|
if (this._config.reference === 'parent') {
|
@@ -3780,7 +3783,7 @@
|
|
3780
3783
|
}
|
3781
3784
|
return {
|
3782
3785
|
...defaultBsPopperConfig,
|
3783
|
-
...execute(this._config.popperConfig, [defaultBsPopperConfig])
|
3786
|
+
...execute(this._config.popperConfig, [undefined, defaultBsPopperConfig])
|
3784
3787
|
};
|
3785
3788
|
}
|
3786
3789
|
_selectMenuItem({
|
@@ -4802,7 +4805,6 @@
|
|
4802
4805
|
*
|
4803
4806
|
* Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
|
4804
4807
|
*/
|
4805
|
-
// eslint-disable-next-line unicorn/better-regex
|
4806
4808
|
const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
|
4807
4809
|
const allowedAttribute = (attribute, allowedAttributeList) => {
|
4808
4810
|
const attributeName = attribute.nodeName.toLowerCase();
|
@@ -4967,7 +4969,7 @@
|
|
4967
4969
|
return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
|
4968
4970
|
}
|
4969
4971
|
_resolvePossibleFunction(arg) {
|
4970
|
-
return execute(arg, [this]);
|
4972
|
+
return execute(arg, [undefined, this]);
|
4971
4973
|
}
|
4972
4974
|
_putElementInTemplate(element, templateElement) {
|
4973
4975
|
if (this._config.html) {
|
@@ -5066,7 +5068,7 @@
|
|
5066
5068
|
class Tooltip extends BaseComponent {
|
5067
5069
|
constructor(element, config) {
|
5068
5070
|
if (typeof Popper === 'undefined') {
|
5069
|
-
throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
|
5071
|
+
throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org/docs/v2/)');
|
5070
5072
|
}
|
5071
5073
|
super(element, config);
|
5072
5074
|
|
@@ -5112,7 +5114,6 @@
|
|
5112
5114
|
if (!this._isEnabled) {
|
5113
5115
|
return;
|
5114
5116
|
}
|
5115
|
-
this._activeTrigger.click = !this._activeTrigger.click;
|
5116
5117
|
if (this._isShown()) {
|
5117
5118
|
this._leave();
|
5118
5119
|
return;
|
@@ -5300,7 +5301,7 @@
|
|
5300
5301
|
return offset;
|
5301
5302
|
}
|
5302
5303
|
_resolvePossibleFunction(arg) {
|
5303
|
-
return execute(arg, [this._element]);
|
5304
|
+
return execute(arg, [this._element, this._element]);
|
5304
5305
|
}
|
5305
5306
|
_getPopperConfig(attachment) {
|
5306
5307
|
const defaultBsPopperConfig = {
|
@@ -5338,7 +5339,7 @@
|
|
5338
5339
|
};
|
5339
5340
|
return {
|
5340
5341
|
...defaultBsPopperConfig,
|
5341
|
-
...execute(this._config.popperConfig, [defaultBsPopperConfig])
|
5342
|
+
...execute(this._config.popperConfig, [undefined, defaultBsPopperConfig])
|
5342
5343
|
};
|
5343
5344
|
}
|
5344
5345
|
_setListeners() {
|
@@ -5347,6 +5348,7 @@
|
|
5347
5348
|
if (trigger === 'click') {
|
5348
5349
|
EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {
|
5349
5350
|
const context = this._initializeOnDelegatedTarget(event);
|
5351
|
+
context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]);
|
5350
5352
|
context.toggle();
|
5351
5353
|
});
|
5352
5354
|
} else if (trigger !== TRIGGER_MANUAL) {
|
@@ -6212,7 +6214,6 @@
|
|
6212
6214
|
}
|
6213
6215
|
|
6214
6216
|
// Private
|
6215
|
-
|
6216
6217
|
_maybeScheduleHide() {
|
6217
6218
|
if (!this._config.autohide) {
|
6218
6219
|
return;
|