blue-web 1.15.0 → 1.16.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.
- package/dist/js/dialog.bundle.js +1 -1
- package/dist/js/dialog.d.ts +4 -3
- package/dist/js/dialog.js +9 -3
- package/dist/merged.scss +115 -55
- package/dist/style.css +81 -56
- package/dist/style.css.map +1 -1
- package/dist/style.min.css +3 -3
- package/dist/style.scss +14 -4
- package/dist/styles/_bootstrap-variables.scss +2 -0
- package/dist/styles/_collapse.scss +2 -1
- package/dist/styles/_devexpress.css +4 -0
- package/dist/styles/_input-group.scss +29 -0
- package/dist/styles/_scrollspy.scss +71 -0
- package/dist/styles/_tabs.scss +4 -1
- package/dist/styles/_utils.scss +6 -0
- package/package.json +4 -4
- package/dist/styles/_search.scss +0 -66
package/dist/js/dialog.bundle.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{"use strict";var e={786:(e,n,t)=>{t.d(n,{k:()=>l});const o={Cancel:["Cancel","Abbrechen"],Yes:["Yes","Ja"],No:["No","Nein"],Message:["Message","Nachricht"],"Toggle menu":["Toggle menu","Menü umschalten"],"Close all":["Close all","Alle schließen"],Error:["Error","Fehler"],Information:["Information","Information"]};function l(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return n=n||navigator.language.toLowerCase().indexOf("de")>-1?"de-DE":"en-US",t=t||o,t[e]?n.indexOf("de-")>-1?t[e][1]:t[e][0]:e}},762:(e,n,t)=>{function o(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}t.d(n,{Os:()=>l});const l=()=>o()+o()+"-"+o()+"-"+o()+"-"+o()+"-"+o()+o()+o()}},n={};function t(o){var l=n[o];if(void 0!==l)return l.exports;var a=n[o]={exports:{}};return e[o](a,a.exports,t),a.exports}t.d=(e,n)=>{for(var o in n)t.o(n,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},t.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n);var o=t(762),l=t(786);async function a(e,n){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{title:a=(0,l.k)("Message"),icon:i,switchPrimaryBtn:r=!1,acceptBtnText:s=("verify"===e?(0,l.k)("Yes"):"OK"),cancelBtnText:d=("verify"===e?(0,l.k)("No"):(0,l.k)("Cancel")),inputType:c="text"}=t;const
|
|
1
|
+
(()=>{"use strict";var e={786:(e,n,t)=>{t.d(n,{k:()=>l});const o={Cancel:["Cancel","Abbrechen"],Yes:["Yes","Ja"],No:["No","Nein"],Message:["Message","Nachricht"],"Toggle menu":["Toggle menu","Menü umschalten"],"Close all":["Close all","Alle schließen"],Error:["Error","Fehler"],Information:["Information","Information"]};function l(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return n=n||navigator.language.toLowerCase().indexOf("de")>-1?"de-DE":"en-US",t=t||o,t[e]?n.indexOf("de-")>-1?t[e][1]:t[e][0]:e}},762:(e,n,t)=>{function o(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}t.d(n,{Os:()=>l});const l=()=>o()+o()+"-"+o()+"-"+o()+"-"+o()+"-"+o()+o()+o()}},n={};function t(o){var l=n[o];if(void 0!==l)return l.exports;var a=n[o]={exports:{}};return e[o](a,a.exports,t),a.exports}t.d=(e,n)=>{for(var o in n)t.o(n,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},t.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n);var o=t(762),l=t(786);async function a(e,n){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{title:a=(0,l.k)("Message"),icon:i,switchPrimaryBtn:r=!1,acceptBtnText:s=("verify"===e?(0,l.k)("Yes"):"OK"),cancelBtnText:d=("verify"===e?(0,l.k)("No"):(0,l.k)("Cancel")),inputType:c="text",defaultValue:u}="string"==typeof t?JSON.parse(t):t;const m=(0,o.Os)();return document.getElementById(m)||document.body.insertAdjacentHTML("beforeend",`<dialog class="blue-modal modal" id="${m}" aria-labelledby="${m}-label">\n <div class="modal-dialog">\n <div class="modal-content">\n <form>\n <div class="modal-header">\n ${i?`<div class="me-2">${i}</div>`:""}\n <h1 class="modal-title fs-5" id="${m}-label">${a}</h1>\n <button\n type="button"\n class="btn-close"\n aria-label="${d}"\n onclick="document.getElementById('${m}').close()"\n ></button>\n </div>\n <div class="modal-body">\n ${"ask"===e?`<label for="${m}-input">${n}</label>\n <input\n type="${c}"\n ${void 0!==u?` value="${u}"`:""}\n id="${m}-input"\n class="form-control mt-3"\n />`:n}\n </div>\n <div class="modal-footer">\n ${"verify"===e||"ask"===e?`<button\n type="button"\n class="btn ${r?"btn-primary":"blue-btn-plain-primary"}"\n onclick="document.getElementById('${m}').close()"\n >\n ${d}\n </button>`:""}\n <button\n type="submit"\n class="btn ${r?"blue-btn-plain-primary":"btn-primary"}"\n >\n ${s}\n </button>\n </div>\n </form>\n </div>\n </div>\n\n <form method="dialog" class="blue-modal-backdrop">\n <button>${d}</button>\n </form>\n </dialog>`),new Promise((n=>{const t=document.getElementById(m),o=()=>{const e=document.getElementById(m);e&&e.remove()};t?.showModal(),t?.addEventListener("close",(()=>{o(),n(!1)})),t?.querySelector(".modal-content > form")?.addEventListener("submit",(l=>{l.preventDefault(),"ask"===e&&(t.close(),o(),n((t?.querySelector("input")).value||"")),t.close(),o(),n(!0)}))}))}window.blueWeb=window.blueWeb||{},window.blueWeb.dialog={ask:async function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return await a("ask",e,n)},tell:async function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};await a("tell",e,n)},verify:async function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return!0===await a("verify",e,n)}}})();
|
package/dist/js/dialog.d.ts
CHANGED
|
@@ -6,10 +6,11 @@ export interface DialogOptions {
|
|
|
6
6
|
acceptBtnText?: string;
|
|
7
7
|
cancelBtnText?: string;
|
|
8
8
|
inputType?: string;
|
|
9
|
+
defaultValue?: string;
|
|
9
10
|
}
|
|
10
|
-
export declare function ask(text: string, options?: DialogOptions): Promise<string | boolean>;
|
|
11
|
-
export declare function tell(text: string, options?: DialogOptions): Promise<void>;
|
|
12
|
-
export declare function verify(text: string, options?: DialogOptions): Promise<boolean>;
|
|
11
|
+
export declare function ask(text: string, options?: DialogOptions | string): Promise<string | boolean>;
|
|
12
|
+
export declare function tell(text: string, options?: DialogOptions | string): Promise<void>;
|
|
13
|
+
export declare function verify(text: string, options?: DialogOptions | string): Promise<boolean>;
|
|
13
14
|
declare global {
|
|
14
15
|
interface Window {
|
|
15
16
|
blueWeb: any;
|
package/dist/js/dialog.js
CHANGED
|
@@ -20,8 +20,9 @@ async function dialog(dialogType, text) {
|
|
|
20
20
|
switchPrimaryBtn = false,
|
|
21
21
|
acceptBtnText = dialogType === "verify" ? getPhrase("Yes") : "OK",
|
|
22
22
|
cancelBtnText = dialogType === "verify" ? getPhrase("No") : getPhrase("Cancel"),
|
|
23
|
-
inputType = "text"
|
|
24
|
-
|
|
23
|
+
inputType = "text",
|
|
24
|
+
defaultValue
|
|
25
|
+
} = typeof options === "string" ? JSON.parse(options) : options;
|
|
25
26
|
const id = guid();
|
|
26
27
|
const addToDom = () => {
|
|
27
28
|
document.body.insertAdjacentHTML("beforeend", /* HTML */`<dialog class="blue-modal modal" id="${id}" aria-labelledby="${id}-label">
|
|
@@ -40,7 +41,12 @@ async function dialog(dialogType, text) {
|
|
|
40
41
|
</div>
|
|
41
42
|
<div class="modal-body">
|
|
42
43
|
${dialogType === "ask" ? /* HTML */`<label for="${id}-input">${text}</label>
|
|
43
|
-
<input
|
|
44
|
+
<input
|
|
45
|
+
type="${inputType}"
|
|
46
|
+
${defaultValue !== undefined ? ` value="${defaultValue}"` : ""}
|
|
47
|
+
id="${id}-input"
|
|
48
|
+
class="form-control mt-3"
|
|
49
|
+
/>` : text}
|
|
44
50
|
</div>
|
|
45
51
|
<div class="modal-footer">
|
|
46
52
|
${dialogType === "verify" || dialogType === "ask" ? /* HTML */`<button
|
package/dist/merged.scss
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Blue Web v1.
|
|
2
|
+
* Blue Web v1.16.0 (https://bruegmann.github.io/blue-web)
|
|
3
3
|
* Licensed under GNU General Public License v3.0 (https://github.com/bruegmann/blue-web/blob/master/LICENSE).
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -47,6 +47,8 @@ $link-hover-decoration: underline !default;
|
|
|
47
47
|
$focus-ring-color: #{rgba(var(--bs-primary-rgb), 25%)} !default;
|
|
48
48
|
$input-focus-border-color: #{rgba(var(--bs-primary-rgb), 50%)} !default;
|
|
49
49
|
|
|
50
|
+
$enable-button-pointers: false !default;
|
|
51
|
+
|
|
50
52
|
|
|
51
53
|
// Bootstrap functions
|
|
52
54
|
//
|
|
@@ -10771,13 +10773,21 @@ $utilities: map-merge(
|
|
|
10771
10773
|
// scss-docs-end import-stack
|
|
10772
10774
|
|
|
10773
10775
|
|
|
10774
|
-
//
|
|
10775
|
-
//
|
|
10776
|
+
// Make it overridable via CSS variables, as it is not yet possible in Bootstrap.
|
|
10777
|
+
// Check with a newer Bootstrap version to see if it is still necessary.
|
|
10776
10778
|
.form-check-input:checked {
|
|
10777
10779
|
background-color: var(--bs-primary, #{$form-check-input-checked-bg-color});
|
|
10778
10780
|
border-color: var(--bs-primary, #{$form-check-input-checked-border-color});
|
|
10779
10781
|
}
|
|
10780
10782
|
|
|
10783
|
+
// Resets cursor from Bootstrap' _reboot.scss based on option.
|
|
10784
|
+
@if ($enable-button-pointers: false) {
|
|
10785
|
+
summary,
|
|
10786
|
+
[role="button"] {
|
|
10787
|
+
cursor: unset;
|
|
10788
|
+
}
|
|
10789
|
+
}
|
|
10790
|
+
|
|
10781
10791
|
// In previous versions of Bootstrap, `.page-header` was a class that could be used to add a border to the bottom of a page header.
|
|
10782
10792
|
// Unfortunately his class was removed in Bootstrap 5, so it's now part of Blue Web CSS.
|
|
10783
10793
|
.blue-page-header,
|
|
@@ -10914,6 +10924,13 @@ body {
|
|
|
10914
10924
|
@include scroll-shadow(var(--bs-body-bg));
|
|
10915
10925
|
}
|
|
10916
10926
|
|
|
10927
|
+
// Sets `margin: 0` to last child.
|
|
10928
|
+
// Useful for creating a gap between items together with `mb-3`.
|
|
10929
|
+
// Inspired by Tailwind CSS class `last:m-0`.
|
|
10930
|
+
.m-last-0:last-child {
|
|
10931
|
+
margin: 0 !important;
|
|
10932
|
+
}
|
|
10933
|
+
|
|
10917
10934
|
.blue-loading {
|
|
10918
10935
|
background-color: $primary;
|
|
10919
10936
|
}
|
|
@@ -11294,73 +11311,36 @@ body {
|
|
|
11294
11311
|
height: var(--blue-header-title-image-height, var(--blue-header-title-image-size, 2rem));
|
|
11295
11312
|
}
|
|
11296
11313
|
|
|
11297
|
-
.blue-
|
|
11298
|
-
display: flex;
|
|
11299
|
-
align-items: center;
|
|
11314
|
+
.blue-input-group {
|
|
11300
11315
|
border: $input-border-width solid $input-border-color;
|
|
11301
11316
|
border-radius: $input-border-radius;
|
|
11302
11317
|
background-color: $input-bg;
|
|
11303
11318
|
|
|
11304
|
-
&.
|
|
11305
|
-
|
|
11319
|
+
&.focus,
|
|
11320
|
+
&:has(input:focus) {
|
|
11321
|
+
box-shadow: $input-btn-focus-box-shadow;
|
|
11322
|
+
border-color: $input-focus-border-color;
|
|
11306
11323
|
|
|
11307
|
-
.
|
|
11308
|
-
|
|
11324
|
+
.input-group-text {
|
|
11325
|
+
color: #{var(--bs-primary-text-emphasis)};
|
|
11309
11326
|
}
|
|
11310
|
-
|
|
11311
|
-
&.focus {
|
|
11312
|
-
box-shadow: $input-btn-focus-box-shadow;
|
|
11313
|
-
}
|
|
11314
|
-
}
|
|
11315
|
-
|
|
11316
|
-
&.focus {
|
|
11317
|
-
box-shadow: inset $input-btn-focus-box-shadow;
|
|
11318
11327
|
}
|
|
11319
|
-
}
|
|
11320
|
-
|
|
11321
|
-
.blue-sidebar .blue-search:not(.blue-search-body) {
|
|
11322
|
-
margin-left: map-get($spacers, 1);
|
|
11323
|
-
margin-right: map-get($spacers, 1);
|
|
11324
|
-
}
|
|
11325
|
-
|
|
11326
|
-
.blue-search-input-group {
|
|
11327
|
-
display: none;
|
|
11328
11328
|
|
|
11329
11329
|
.input-group-text {
|
|
11330
11330
|
border-color: transparent;
|
|
11331
11331
|
background-color: transparent;
|
|
11332
11332
|
}
|
|
11333
|
-
}
|
|
11334
|
-
|
|
11335
|
-
.blue-search-control {
|
|
11336
|
-
border: none;
|
|
11337
|
-
background-color: transparent !important;
|
|
11338
|
-
|
|
11339
|
-
&:focus {
|
|
11340
|
-
box-shadow: none;
|
|
11341
|
-
}
|
|
11342
|
-
}
|
|
11343
|
-
|
|
11344
|
-
.blue-search-reset-btn {
|
|
11345
|
-
color: rgba($input-color, 0.7);
|
|
11346
11333
|
|
|
11347
|
-
|
|
11348
|
-
|
|
11349
|
-
|
|
11350
|
-
}
|
|
11351
|
-
|
|
11352
|
-
.blue-search.blue-search-sidebar {
|
|
11353
|
-
transition: opacity 0.2s ease-in-out;
|
|
11334
|
+
.form-control {
|
|
11335
|
+
border: none;
|
|
11336
|
+
background-color: transparent !important;
|
|
11354
11337
|
|
|
11355
|
-
|
|
11356
|
-
|
|
11338
|
+
&:focus {
|
|
11339
|
+
box-shadow: none;
|
|
11340
|
+
}
|
|
11357
11341
|
}
|
|
11358
11342
|
}
|
|
11359
11343
|
|
|
11360
|
-
.blue-search.blue-search-sidebar:not(:hover):not(.focus) {
|
|
11361
|
-
opacity: 0.7;
|
|
11362
|
-
}
|
|
11363
|
-
|
|
11364
11344
|
.blue-actions {
|
|
11365
11345
|
--max-width: calc(
|
|
11366
11346
|
var(--bs-btn-border-width, 1px) + var(--bs-btn-padding-x, 0.75rem) + var(--bs-btn-font-size, 1rem) +
|
|
@@ -11867,10 +11847,13 @@ body {
|
|
|
11867
11847
|
|
|
11868
11848
|
position: relative;
|
|
11869
11849
|
order: 0;
|
|
11870
|
-
cursor: pointer;
|
|
11871
11850
|
user-select: none;
|
|
11872
11851
|
-webkit-appearance: none;
|
|
11873
11852
|
appearance: none;
|
|
11853
|
+
|
|
11854
|
+
@if ($enable-button-pointers) {
|
|
11855
|
+
cursor: pointer;
|
|
11856
|
+
}
|
|
11874
11857
|
}
|
|
11875
11858
|
|
|
11876
11859
|
.blue-tab::before {
|
|
@@ -12213,7 +12196,8 @@ dialog.blue-modal:has(.offcanvas-start) {
|
|
|
12213
12196
|
.blue-collapse-group {
|
|
12214
12197
|
display: grid;
|
|
12215
12198
|
grid-template-rows: auto;
|
|
12216
|
-
grid-template-columns: 1fr;
|
|
12199
|
+
grid-template-columns: minmax(0, 1fr);
|
|
12200
|
+
max-width: 100%;
|
|
12217
12201
|
|
|
12218
12202
|
& > details {
|
|
12219
12203
|
display: contents;
|
|
@@ -12287,6 +12271,78 @@ dialog.blue-modal:has(.offcanvas-start) {
|
|
|
12287
12271
|
}
|
|
12288
12272
|
}
|
|
12289
12273
|
|
|
12274
|
+
.blue-scrollspy {
|
|
12275
|
+
--#{$prefix}nav-link-padding-x: #{$nav-link-padding-x * 0.5};
|
|
12276
|
+
--#{$prefix}nav-link-padding-y: #{$nav-link-padding-y * 0.5};
|
|
12277
|
+
@include rfs(0.875rem, --#{$prefix}nav-link-font-size);
|
|
12278
|
+
--#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};
|
|
12279
|
+
--#{$prefix}nav-link-color: #{$nav-link-color};
|
|
12280
|
+
--#{$prefix}nav-link-hover-color: #{$nav-link-hover-color};
|
|
12281
|
+
--#{$prefix}nav-link-disabled-color: #{$nav-link-disabled-color};
|
|
12282
|
+
|
|
12283
|
+
--#{$prefix}nav-tabs-border-width: #{$nav-tabs-border-width};
|
|
12284
|
+
--#{$prefix}nav-tabs-border-color: #{$nav-tabs-border-color};
|
|
12285
|
+
--#{$prefix}nav-tabs-border-radius: #{$nav-tabs-border-radius};
|
|
12286
|
+
--#{$prefix}nav-tabs-link-hover-border-color: #{$nav-tabs-link-hover-border-color};
|
|
12287
|
+
--#{$prefix}nav-tabs-link-active-color: #{$nav-tabs-link-active-color};
|
|
12288
|
+
--#{$prefix}nav-tabs-link-active-bg: #{$nav-tabs-link-active-bg};
|
|
12289
|
+
--#{$prefix}nav-tabs-link-active-border-color: #{$nav-tabs-link-active-border-color};
|
|
12290
|
+
|
|
12291
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
12292
|
+
scroll-behavior: smooth;
|
|
12293
|
+
}
|
|
12294
|
+
|
|
12295
|
+
overflow-y: auto;
|
|
12296
|
+
overscroll-behavior-y: contain;
|
|
12297
|
+
scroll-snap-type: y mandatory;
|
|
12298
|
+
|
|
12299
|
+
scroll-marker-group: before;
|
|
12300
|
+
|
|
12301
|
+
&::scroll-marker-group {
|
|
12302
|
+
display: flex;
|
|
12303
|
+
min-height: calc(
|
|
12304
|
+
(var(--#{$prefix}nav-link-padding-y) + var(--#{$prefix}nav-tabs-border-width)) * 2 +
|
|
12305
|
+
(var(--#{$prefix}nav-link-font-size) * var(--#{$prefix}body-line-height))
|
|
12306
|
+
);
|
|
12307
|
+
margin-bottom: 0.25rem;
|
|
12308
|
+
}
|
|
12309
|
+
|
|
12310
|
+
& > section {
|
|
12311
|
+
&::scroll-marker {
|
|
12312
|
+
content: attr(aria-label);
|
|
12313
|
+
|
|
12314
|
+
font-size: var(--#{$prefix}nav-link-font-size);
|
|
12315
|
+
box-sizing: border-box;
|
|
12316
|
+
text-decoration: none;
|
|
12317
|
+
|
|
12318
|
+
padding: var(--#{$prefix}nav-link-padding-y) var(--#{$prefix}nav-link-padding-x);
|
|
12319
|
+
border: var(--#{$prefix}nav-tabs-border-width) solid transparent;
|
|
12320
|
+
|
|
12321
|
+
border-radius: var(--#{$prefix}nav-tabs-border-radius);
|
|
12322
|
+
|
|
12323
|
+
&:is(:hover, :focus) {
|
|
12324
|
+
border-color: var(--#{$prefix}nav-tabs-link-hover-border-color);
|
|
12325
|
+
}
|
|
12326
|
+
|
|
12327
|
+
&:target-current,
|
|
12328
|
+
&:is(:active) {
|
|
12329
|
+
color: var(--#{$prefix}nav-tabs-link-active-color);
|
|
12330
|
+
background-color: var(--#{$prefix}nav-tabs-link-active-bg);
|
|
12331
|
+
border-color: var(--#{$prefix}border-color);
|
|
12332
|
+
}
|
|
12333
|
+
}
|
|
12334
|
+
}
|
|
12335
|
+
}
|
|
12336
|
+
|
|
12337
|
+
.blue-scrollspy-after {
|
|
12338
|
+
scroll-marker-group: after;
|
|
12339
|
+
|
|
12340
|
+
&::scroll-marker-group {
|
|
12341
|
+
margin-bottom: 0;
|
|
12342
|
+
margin-top: 0.25rem;
|
|
12343
|
+
}
|
|
12344
|
+
}
|
|
12345
|
+
|
|
12290
12346
|
|
|
12291
12347
|
/* Make DevExpress components look more like Bootstrap/Blue */
|
|
12292
12348
|
[class^="dxbl-"] {
|
|
@@ -12313,6 +12369,10 @@ dialog.blue-modal:has(.offcanvas-start) {
|
|
|
12313
12369
|
font-size: 1rem;
|
|
12314
12370
|
}
|
|
12315
12371
|
|
|
12372
|
+
.dxbl-pager-page-edit {
|
|
12373
|
+
min-width: 2.5em;
|
|
12374
|
+
}
|
|
12375
|
+
|
|
12316
12376
|
.dxbl-toolbar {
|
|
12317
12377
|
--dxbl-toolbar-font-size: var(--bs-body-font-size) !important;
|
|
12318
12378
|
font-size: var(--dxbl-toolbar-font-size);
|