@optionfactory/fml 8.0.1 → 8.0.3
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/custom-elements.json +1210 -0
- package/dist/fml.css +2 -2
- package/dist/fml.css.map +1 -1
- package/dist/fml.d.mts +36 -13
- package/dist/fml.iife.js +123 -51
- package/dist/fml.iife.js.map +1 -1
- package/dist/fml.iife.min.js +1 -1
- package/dist/fml.iife.min.js.map +1 -1
- package/dist/fml.min.mjs +1 -1
- package/dist/fml.min.mjs.map +1 -1
- package/dist/fml.mjs +123 -51
- package/dist/fml.mjs.map +1 -1
- package/dist/ftl.d.mts +24 -1
- package/dist/ftl.iife.js +46 -16
- package/dist/ftl.iife.js.map +1 -1
- package/dist/ftl.iife.min.js +1 -1
- package/dist/ftl.iife.min.js.map +1 -1
- package/dist/ftl.min.mjs +1 -1
- package/dist/ftl.min.mjs.map +1 -1
- package/dist/ftl.mjs +46 -16
- package/dist/ftl.mjs.map +1 -1
- package/dist/ful.css +1 -1
- package/dist/ful.css.map +1 -1
- package/dist/ful.d.mts +12 -12
- package/dist/ful.iife.js +77 -35
- package/dist/ful.iife.js.map +1 -1
- package/dist/ful.iife.min.js +1 -1
- package/dist/ful.iife.min.js.map +1 -1
- package/dist/ful.min.mjs +1 -1
- package/dist/ful.min.mjs.map +1 -1
- package/dist/ful.mjs +77 -35
- package/dist/ful.mjs.map +1 -1
- package/dist/vscode.html-custom-data.json +357 -0
- package/dist/web-types.json +1006 -0
- package/package.json +6 -3
package/dist/fml.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
ful-errors{--ful-errors-color:var(--ful-error-color);--ful-errors-bg:var(--ful-error-bg);--ful-errors-border-color:var(--ful-error-border-color);display:block;padding:1rem;margin-bottom:1rem;color:var(--ful-errors-color);background-color:var(--ful-errors-bg);border:1px solid var(--ful-errors-border-color);border-radius:var(--ful-border-radius)}ful-field-error{--ful-field-error-invalid-color:var(--ful-invalid-color);display:none;:invalid &{display:block;margin-top:.25rem;color:var(--ful-field-error-invalid-color)}}ful-field-warnings{display:none;&:not(:empty){display:block}}ful-field-warning{display:block;margin:.5rem 0;padding:15px;color:var(--ful-warning-color);background-color:var(--ful-warning-bg);border-color:var(--ful-warning-border-color);border-radius:8px;animation:show-and-hide 5s ease forwards;animation-composition:initial}@keyframes show-and-hide{0%{opacity:0;display:block}3%{opacity:1}90%{opacity:1}to{opacity:0;display:none}}
|
|
2
2
|
:root{--ful-color:var(--bs-body-color, #212529);--ful-bg:var(--bs-body-bg, #fff);--ful-border-width:var(--bs-border-width, 1px);--ful-border-radius:var(--bs-border-radius, 0.375rem);--ful-border-color:var(--bs-border-color, #dee2e6);--ful-disabled-bg:var(--bs-secondary-bg, #e9ecef);--ful-selected-bg:var(--bs-tertiary-bg, #f8f9fa);--ful-active-color:#fff;--ful-active-bg:#007376;--ful-focus-border-color:#86b7fe;--ful-focus-box-shadow:0 0 0 0.25rem rgba(13,110,253,.25);--ful-invalid-color:var(--bs-form-invalid-color, #dc3545);--ful-invalid-border-color:var(--bs-form-invalid-border-color, #dc3545);--ful-invalid-box-shadow:0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);--ful-error-color:var(--bs-danger-text-emphasis, #58151c);--ful-error-bg:var(--bs-danger-bg-subtle, #f8d7da);--ful-error-border-color:var(--bs-danger-border-subtle, #f1aeb5);--ful-warning-color:var(--bs-warning-text-emphasis, #664d03);--ful-warning-bg:var(--bs-warning-bg-subtle, #fff3cd);--ful-warning-border-color:var(--bs-warning-border-subtle, #ffe69c);--ful-scrollbar-bg:var(--bs-secondary-bg, #e9ecef);--ful-scrollbar-thumb-bg:var(--ful-active-bg);--ful-scrollbar-width:12px;--ful-scrollbar-border-width:1px;--ful-inputs-bg:var(--ful-bg);--ful-inputs-border-width:var(--ful-border-width);--ful-inputs-border-radius:var(--ful-border-radius);--ful-inputs-border-color:var(--ful-border-color)}[hidden]{display:none!important}
|
|
3
|
-
.ful-input,ful-input,ful-input-file,ful-input-instant,ful-input-local-date,ful-input-local-time{display:block;&[uppercase] input,&[uppercase] textarea{text-transform:uppercase}&:not(:defined){visibility:hidden}&[required]>.form-label>label:before{content:"* ";display:inline;font-weight:700;color:var(--ful-color)}& input:focus,& textarea:focus{border-color:var(--ful-focus-border-color);box-shadow:var(--ful-focus-box-shadow)}&:invalid input,&:invalid textarea{border-color:var(--ful-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%20fill%3D%22none%22%20stroke%3D%22%23dc3545%22%20viewBox%3D%220%200%2012%2012%22%3E%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%224.5%22%2F%3E%3Cpath%20stroke-linejoin%3D%22round%22%20d%3D%22M5.8%203.6h.4L6%206.5z%22%2F%3E%3Ccircle%20cx%3D%226%22%20cy%3D%228.2%22%20r%3D%22.6%22%20fill%3D%22%23dc3545%22%20stroke%3D%22none%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}&:invalid input:focus,&:invalid textarea:focus{border-color:var(--ful-invalid-border-color);box-shadow:var(--ful-invalid-box-shadow)}}ful-item-list{--ful-item-list-item-color:var(--ful-active-color);--ful-item-list-item-border-radius:var(--ful-border-radius);--ful-item-list-item-bg:var(--ful-active-bg);display:grid;grid-template-columns:1fr auto;gap:4px;&:has(>ful-item>:nth-child(3):last-child){grid-template-columns:1fr auto auto}&>ful-item:first-child{margin-top:6px}&>ful-item:last-child{margin-bottom:6px}&>ful-item{display:grid;grid-column:1/-1;grid-template-columns:subgrid;align-items:center;text-align:right;line-height:21px;&>:first-child{min-width:30px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:5px .5rem;color:var(--ful-item-list-item-color);border-radius:var(--ful-item-list-item-border-radius);background-color:var(--ful-item-list-item-bg)}&>:first-child,&>:last-child{text-align:left}}}
|
|
4
3
|
ful-input-file{&>.default-dropzone{border:5px solid blue;min-height:100px;display:flex;align-items:center;justify-content:center;cursor:pointer}&:not([dropzone])>.default-dropzone,&:not([dropzone])>.dropzone,&:not([itemlist])>ful-item-list,&[noinput]>.input-group{display:none}&[readonly]{&>.default-dropzone,&>.dropzone,&>.input-group>input{pointer-events:none}}}
|
|
5
|
-
ful-
|
|
4
|
+
.ful-input,ful-input,ful-input-file,ful-input-instant,ful-input-local-date,ful-input-local-time{display:block;&[uppercase] input,&[uppercase] textarea{text-transform:uppercase}&:not(:defined){visibility:hidden}&[required]>.form-label>label:before{content:"* ";display:inline;font-weight:700;color:var(--ful-color)}& input:focus,& textarea:focus{border-color:var(--ful-focus-border-color);box-shadow:var(--ful-focus-box-shadow)}&:invalid input,&:invalid textarea{border-color:var(--ful-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%20fill%3D%22none%22%20stroke%3D%22%23dc3545%22%20viewBox%3D%220%200%2012%2012%22%3E%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%224.5%22%2F%3E%3Cpath%20stroke-linejoin%3D%22round%22%20d%3D%22M5.8%203.6h.4L6%206.5z%22%2F%3E%3Ccircle%20cx%3D%226%22%20cy%3D%228.2%22%20r%3D%22.6%22%20fill%3D%22%23dc3545%22%20stroke%3D%22none%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}&:invalid input:focus,&:invalid textarea:focus{border-color:var(--ful-invalid-border-color);box-shadow:var(--ful-invalid-box-shadow)}}ful-item-list{--ful-item-list-item-color:var(--ful-active-color);--ful-item-list-item-border-radius:var(--ful-border-radius);--ful-item-list-item-bg:var(--ful-active-bg);display:grid;grid-template-columns:1fr auto;gap:4px;&:has(>ful-item>:nth-child(3):last-child){grid-template-columns:1fr auto auto}&>ful-item:first-child{margin-top:6px}&>ful-item:last-child{margin-bottom:6px}&>ful-item{display:grid;grid-column:1/-1;grid-template-columns:subgrid;align-items:center;text-align:right;line-height:21px;&>:first-child{min-width:30px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:5px .5rem;color:var(--ful-item-list-item-color);border-radius:var(--ful-item-list-item-border-radius);background-color:var(--ful-item-list-item-bg)}&>:first-child,&>:last-child{text-align:left}}}
|
|
6
5
|
ful-select{--ful-select-border-width:var(--ful-inputs-border-width);--ful-select-border-radius:var(--ful-inputs-border-radius);--ful-select-border-color:var(--ful-inputs-border-color);--ful-select-bg:var(--ful-inputs-bg);--ful-select-badge-color:var(--ful-active-color);--ful-select-badge-bg:var(--ful-active-bg);--ful-select-badge-border-radius:var(--ful-border-radius);--ful-select-focus-border-color:var(--ful-focus-border-color);--ful-select-focus-box-shadow:var(--ful-focus-box-shadow);display:block;cursor:pointer;badges{display:flex;flex-wrap:nowrap;gap:3px;overflow:hidden;&:has(badge){min-width:2em}}&:not([itemlist])>ful-item-list,&[itemlist] badges{display:none}badge{padding:5px 7px;margin:5px 0;color:var(--ful-select-badge-color);white-space:nowrap;border-radius:var(--ful-select-badge-border-radius);background-color:var(--ful-select-badge-bg);display:flex;align-items:center;line-height:1em}.ful-select-input-container{position:relative;display:block;flex:1 1 auto;width:1%;border:var(--ful-select-border-width) solid var(--ful-select-border-color);border-radius:var(--ful-select-border-radius);&:has(input:focus){border-color:var(--ful-select-focus-border-color);outline:0;box-shadow:var(--ful-select-focus-box-shadow)}}.ful-select-input{display:flex;flex:1 1 auto;padding-left:5px;padding-right:2.25rem;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20fill%3D%22none%22%20stroke%3D%22%23343a40%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%222%22%20d%3D%22m2%205%206%206%206-6%22%2F%3E%3C%2Fsvg%3E");background-position:right .75rem center;background-repeat:no-repeat;background-size:16px 12px;background-color:var(--ful-select-bg);overflow:hidden;z-index:5;border-radius:var(--ful-select-border-radius)}.ful-select-input-container:not(:first-child) .ful-select-input{border-top-left-radius:0;border-bottom-left-radius:0}.ful-select-input-container:not(:last-child) .ful-select-input{border-top-right-radius:0;border-bottom-right-radius:0}&:invalid .ful-select-input-container{border-color:var(--ful-invalid-border-color)}&:disabled .ful-select-input{background-size:0;background-color:var(--ful-disabled-bg)}&[readonly] .ful-select-input{background-size:0}&[itemlist]:disabled,&[itemlist][readonly]{&>.input-group{display:none}&>ful-item-list>ful-item:first-child{margin-top:0}&>ful-item-list>ful-item{&>:first-child{grid-column:1/-1}&>:last-child{display:none}}}&[required]>.form-label>label:before{content:"* ";display:inline;font-weight:700;color:var(--ful-color)}input{border:0;margin:0;outline:0;padding:.375rem 0 .375rem 7px;line-height:1.5;flex:1 1 auto;min-width:1em;width:1em;background-color:transparent}}ful-dropdown{--ful-dropdown-color:var(--ful-color);--ful-dropdown-selected-bg:var(--ful-selected-bg);--ful-dropdown-active-bg:var(--ful-active-bg);--ful-dropdown-border-width:var(--ful-border-width);--ful-dropdown-border-radius:var(--ful-border-radius);--ful-dropdown-border-color:var(--ful-border-color);--ful-dropdown-background-color:var(--ful-bg);--ful-dropdown-scrollbar-width:var(--ful-scrollbar-width);--ful-dropdown-scrollbar-border-width:var(--ful-scrollbar-border-width);--ful-dropdown-scrollbar-bg:var(--ful-scrollbar-bg);--ful-dropdown-scrollbar-thumb-bg:var(--ful-scrollbar-thumb-bg);display:block;position:absolute;z-index:1000;padding:.5rem 0;top:100%;margin-top:2px;background-color:var(--ful-dropdown-background-color);background-clip:padding-box;border:var(--ful-dropdown-border-width) solid var(--ful-dropdown-border-color);border-radius:var(--ful-dropdown-border-radius);width:100%;menu{height:auto;max-height:200px;overflow-y:auto;padding:0;margin:0;&:not(:has(*)):before{font-family:bootstrap-icons;display:block;content:"\f8c3";margin:auto;width:1rem}&::-webkit-scrollbar{width:12px}&::-webkit-scrollbar-track{background-color:var(--ful-dropdown-scrollbar-bg);border-radius:var(--ful-dropdown-scrollbar-width)}&::-webkit-scrollbar-thumb{border-radius:var(--ful-dropdown-scrollbar-width);background-color:var(--ful-dropdown-active-bg);border:var(--ful-dropdown-scrollbar-border-width) solid var(--ful-dropdown-scrollbar-bg)}}li{padding:.5rem .751rem;display:block;border:0;cursor:pointer}li,li:hover,li[selected]{color:var(--ful-dropdown-color)}li:hover,li[selected]{background-color:var(--ful-dropdown-selected-bg)}li:active{color:#fff;background-color:var(--ful-dropdown-active-bg)}}
|
|
6
|
+
ful-radio-group{--ful-radio-group-label-border-color:var(--ful-border-color);--ful-radio-group-label-bg:inherit;--ful-radio-group-label-checked-border-color:var(--ful-active-bg);--ful-radio-group-label-checked-bg:#eefbfb;--ful-radio-group-label-disabled-border-color:var(--ful-border-color);--ful-radio-group-label-disabled-bg:var(--ful-disabled-bg);--ful-radio-group-active-bg:var(--ful-active-bg);display:block;&:not(:defined){visibility:hidden}&[required]>fieldset>legend:before{content:"* ";display:inline;font-weight:700;color:var(--ful-color)}&>fieldset{&>legend{font-size:16px;margin:0}&>section{display:grid;gap:10px;grid-template-columns:1fr;& label{display:flex;align-items:center;border:1px solid var(--ful-radio-group-label-border-color);background-color:var(--ful-radio-group-label-bg);border-radius:4px;padding:8px 10px;height:100%;cursor:pointer;&>div{flex:1}}& label:has(input[type=radio]:checked){background-color:var(--ful-radio-group-label-checked-bg);border-color:var(--ful-radio-group-label-checked-border-color)}& label:has(input[type=radio]:disabled){background-color:var(--ful-radio-group-label-disabled-bg);border-color:var(--ful-radio-group-label-disabled-border-color)}& input[type=radio]{margin-left:8px;margin-right:12px;height:16px;width:16px;vertical-align:text-bottom;accent-color:var(--ful-radio-group-label-checked-border-color)}}}&.horizontal>fieldset>section{gap:16px;grid-template-columns:1fr 1fr}&:invalid>fieldset>section label{border-color:var(--ful-radio-group-active-bg)}}ful-radio{display:none}
|
|
7
7
|
ful-checkbox{--ful-checkbox-active-bg:var(--ful-active-bg);display:block;&:not(:defined){visibility:hidden}&[required]>.form-check>.form-check-label>label:before{content:"* ";display:inline;font-weight:700;color:var(--ful-color)}& input[type=checkbox]:checked{background-color:var(--ful-checkbox-active-bg);border-color:var(--ful-checkbox-active-bg)}&:invalid input[type=checkbox]{border-color:var(--ful-invalid-border-color);&:checked{background-color:var(--ful-invalid-color)}&:focus{box-shadow:var(--ful-invalid-box-shadow)}}}
|
|
8
8
|
ful-spinner{--ful-spinner-icon-width:1rem;--ful-spinner-icon-height:1rem;--ful-spinner-icon-border-width:0.2em;--ful-spinner-icon-vertical-align:-0.125em;--ful-spinner-icon-animation-speed:0.75s;--ful-spinner-icon-animation-name:spinner-border;--ful-spinner-icon-color:currentcolor;&:not(:defined){visibility:hidden}&.centered{display:flex;align-items:center;justify-content:center}&.big{--ful-spinner-icon-width:2rem;--ful-spinner-icon-height:2rem;--ful-spinner-icon-border-width:0.25em}&.bigger{--ful-spinner-icon-width:4rem;--ful-spinner-icon-height:4rem;--ful-spinner-icon-border-width:0.5em}&.backdrop{--ful-spinner-icon-width:4rem;--ful-spinner-icon-height:4rem;--ful-spinner-icon-border-width:0.5em;z-index:2000;position:fixed;top:0;left:0;width:100vw;height:100vh;overflow-x:hidden;overflow-y:auto;outline:0;background-color:hsla(0,0%,65.5%,.8);display:flex;align-items:center;justify-content:center;&>.ful-spinner-wrapper{padding:2rem;background-color:#fff;border-radius:1rem}}&>.ful-spinner-wrapper{display:inline;&>.ful-spinner-icon{display:inline-block;width:var(--ful-spinner-icon-width);height:var(--ful-spinner-icon-height);vertical-align:var(--ful-spinner-icon-vertical-align);border-radius:50%;border:var(--ful-spinner-icon-border-width) solid var(--ful-spinner-icon-color);border-right-color:transparent;animation:var(--ful-spinner-icon-animation-speed) linear infinite var(--ful-spinner-icon-animation-name)}}}body:has(ful-spinner.backdrop:not([hidden])){overflow:hidden}
|
|
9
9
|
ful-pagination{display:block;margin-top:auto;&:not(:defined){visibility:hidden}& i.bi:before{line-height:24px}& .reload{display:flex;align-items:center;font-size:24px}}ful-table{display:block;&:not(:defined){visibility:hidden}& tbody[data-ref=feedback],& tbody[data-ref=initial],& tbody[data-ref=loading]{height:360px;padding:1.5rem;& td{text-align:center;vertical-align:middle;& p{margin-top:1rem}}}& .pagination-index{align-self:center}}ful-sorter{display:block;&:not(:defined){visibility:hidden}cursor:pointer;&:before{display:inline-block;vertical-align:text-top;font-family:bootstrap-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f574"}&:not([order]):before{color:#ccc}&[order=asc]:before{content:"\f574"}&[order=desc]:before{content:"\f575"}}
|
package/dist/fml.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fml.css","sources":["../src/ful/elements/errors.css","../src/ful/elements/form.css","../src/ful/elements/input.css","../src/ful/elements/files.css","../src/ful/elements/radio.css","../src/ful/elements/select.css","../src/ful/elements/checkbox.css","../src/ful/elements/spinner.css","../src/ful/elements/table.css","../src/ful/elements/filters.css"],"sourcesContent":["ful-errors {\n --ful-errors-color: var(--ful-error-color);\n --ful-errors-bg: var(--ful-error-bg);\n --ful-errors-border-color: var(--ful-error-border-color);\n\n display: block;\n padding: 1rem;\n margin-bottom: 1rem;\n color: var(--ful-errors-color);\n background-color: var(--ful-errors-bg);\n border: 1px solid var(--ful-errors-border-color);\n border-radius: var(--ful-border-radius);\n}\n\nful-field-error {\n --ful-field-error-invalid-color: var(--ful-invalid-color);\n display: none;\n\n :invalid & {\n display: block;\n margin-top: 0.25rem;\n color: var(--ful-field-error-invalid-color);\n }\n}\n\nful-field-warnings {\n display: none;\n &:not(:empty) {\n display: block;\n }\n}\n\nful-field-warning {\n display: block;\n margin: 0.5rem 0;\n padding: 15px;\n color: var(--ful-warning-color);\n background-color: var(--ful-warning-bg);\n border-color: var(--ful-warning-border-color);\n border-radius: 8px;\n animation: show-and-hide 5s ease forwards;\n animation-composition: initial;\n}\n\n@keyframes show-and-hide {\n 0% {\n opacity: 0;\n display: block;\n }\n\n 3% {\n opacity: 1;\n }\n\n 90% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n display: none;\n }\n}\n",":root {\n --ful-color: var(--bs-body-color, #212529);\n --ful-bg: var(--bs-body-bg, #fff);\n\n --ful-border-width: var(--bs-border-width, 1px);\n --ful-border-radius: var(--bs-border-radius, 0.375rem);\n --ful-border-color: var(--bs-border-color, #dee2e6);\n\n --ful-disabled-bg: var(--bs-secondary-bg, #e9ecef);\n --ful-selected-bg: var(--bs-tertiary-bg, #f8f9fa);\n\n --ful-active-color: white;\n --ful-active-bg: #007376;\n\n --ful-focus-border-color: #86b7fe;\n --ful-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n\n --ful-invalid-color: var(--bs-form-invalid-color, #dc3545);\n --ful-invalid-border-color: var(--bs-form-invalid-border-color, #dc3545);\n --ful-invalid-box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n\n --ful-error-color: var(--bs-danger-text-emphasis, #58151c);\n --ful-error-bg: var(--bs-danger-bg-subtle, #f8d7da);\n --ful-error-border-color: var(--bs-danger-border-subtle, #f1aeb5);\n\n --ful-warning-color: var(--bs-warning-text-emphasis, #664d03);\n --ful-warning-bg: var(--bs-warning-bg-subtle, #fff3cd);\n --ful-warning-border-color: var(--bs-warning-border-subtle, #ffe69c);\n\n --ful-scrollbar-bg: var(--bs-secondary-bg, #e9ecef);\n --ful-scrollbar-thumb-bg: var(--ful-active-bg);\n --ful-scrollbar-width: 12px;\n --ful-scrollbar-border-width: 1px;\n\n --ful-inputs-bg: var(--ful-bg);\n --ful-inputs-border-width: var(--ful-border-width);\n --ful-inputs-border-radius: var(--ful-border-radius);\n --ful-inputs-border-color: var(--ful-border-color);\n}\n\n[hidden] {\n /* biome-ignore lint/complexity/noImportantStyles: must beat an element's own display */\n display: none !important;\n}\n","ful-input,\n.ful-input,\nful-input-file,\nful-input-local-date,\nful-input-local-time,\nful-input-instant {\n display: block;\n\n &[uppercase] input,\n &[uppercase] textarea {\n text-transform: uppercase;\n }\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n &[required] > .form-label > label::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n & textarea:focus,\n & input:focus {\n border-color: var(--ful-focus-border-color);\n box-shadow: var(--ful-focus-box-shadow);\n }\n\n &:invalid textarea,\n &:invalid input {\n border-color: var(--ful-invalid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n }\n\n &:invalid textarea:focus,\n &:invalid input:focus {\n border-color: var(--ful-invalid-border-color);\n box-shadow: var(--ful-invalid-box-shadow);\n }\n}\n\nful-item-list {\n --ful-item-list-item-color: var(--ful-active-color);\n --ful-item-list-item-border-radius: var(--ful-border-radius);\n --ful-item-list-item-bg: var(--ful-active-bg);\n\n display: grid;\n grid-template-columns: 1fr auto;\n gap: 4px;\n\n &:has(> ful-item > *:nth-child(3):last-child) {\n grid-template-columns: 1fr auto auto;\n }\n\n & > ful-item:first-child {\n margin-top: 6px;\n }\n\n & > ful-item:last-child {\n margin-bottom: 6px;\n }\n\n & > ful-item {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: subgrid;\n align-items: center;\n text-align: right;\n line-height: 21px;\n\n & > *:first-child {\n text-align: left;\n min-width: 30px;\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding: 5px 0.5rem;\n color: var(--ful-item-list-item-color);\n border-radius: var(--ful-item-list-item-border-radius);\n background-color: var(--ful-item-list-item-bg);\n }\n\n & > *:last-child {\n text-align: left;\n }\n }\n}\n","ful-input-file {\n & > .default-dropzone {\n border: 5px solid blue;\n min-height: 100px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n }\n\n &[noinput] > .input-group {\n display: none;\n }\n\n &:not([dropzone]) > .default-dropzone,\n &:not([dropzone]) > .dropzone {\n display: none;\n }\n\n &:not([itemlist]) > ful-item-list {\n display: none;\n }\n\n &[readonly] {\n & > .default-dropzone,\n & > .dropzone {\n pointer-events: none;\n }\n\n & > .input-group > input {\n pointer-events: none;\n }\n }\n}\n","ful-radio-group {\n --ful-radio-group-label-border-color: var(--ful-border-color);\n --ful-radio-group-label-bg: inherit;\n --ful-radio-group-label-checked-border-color: var(--ful-active-bg);\n --ful-radio-group-label-checked-bg: #eefbfb;\n --ful-radio-group-label-disabled-border-color: var(--ful-border-color);\n --ful-radio-group-label-disabled-bg: var(--ful-disabled-bg);\n --ful-radio-group-active-bg: var(--ful-active-bg);\n\n display: block;\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n &[required] > fieldset > legend::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n & > fieldset {\n & > legend {\n font-size: 16px;\n margin: 0;\n }\n\n & > section {\n display: grid;\n gap: 10px;\n grid-template-columns: 1fr;\n\n & label {\n display: flex;\n align-items: center;\n border: 1px solid var(--ful-radio-group-label-border-color);\n background-color: var(--ful-radio-group-label-bg);\n border-radius: 4px;\n padding: 8px 10px;\n height: 100%;\n cursor: pointer;\n\n & > div {\n flex: 1;\n }\n }\n\n & label:has(input[type=\"radio\"]:checked) {\n background-color: var(--ful-radio-group-label-checked-bg);\n border-color: var(--ful-radio-group-label-checked-border-color);\n }\n\n & label:has(input[type=\"radio\"]:disabled) {\n background-color: var(--ful-radio-group-label-disabled-bg);\n border-color: var(--ful-radio-group-label-disabled-border-color);\n }\n\n & input[type=\"radio\"] {\n margin-left: 8px;\n margin-right: 12px;\n height: 16px;\n width: 16px;\n vertical-align: text-bottom;\n accent-color: var(--ful-radio-group-label-checked-border-color);\n }\n }\n }\n\n &.horizontal > fieldset > section {\n gap: 16px;\n grid-template-columns: 1fr 1fr;\n }\n\n &:invalid > fieldset > section label {\n border-color: var(--ful-radio-group-active-bg);\n }\n}\n\nful-radio {\n display: none;\n}\n","ful-select {\n --ful-select-border-width: var(--ful-inputs-border-width);\n --ful-select-border-radius: var(--ful-inputs-border-radius);\n --ful-select-border-color: var(--ful-inputs-border-color);\n --ful-select-bg: var(--ful-inputs-bg);\n\n --ful-select-badge-color: var(--ful-active-color);\n --ful-select-badge-bg: var(--ful-active-bg);\n --ful-select-badge-border-radius: var(--ful-border-radius);\n --ful-select-focus-border-color: var(--ful-focus-border-color);\n --ful-select-focus-box-shadow: var(--ful-focus-box-shadow);\n\n display: block;\n cursor: pointer;\n\n badges {\n display: flex;\n flex-wrap: nowrap;\n gap: 3px;\n overflow: hidden;\n\n &:has(badge) {\n min-width: 2em;\n }\n }\n\n &[itemlist] badges {\n display: none;\n }\n\n &:not([itemlist]) > ful-item-list {\n display: none;\n }\n\n badge {\n padding: 5px 7px;\n margin: 5px 0;\n color: var(--ful-select-badge-color);\n white-space: nowrap;\n border-radius: var(--ful-select-badge-border-radius);\n background-color: var(--ful-select-badge-bg);\n display: flex;\n align-items: center;\n line-height: 1em;\n }\n\n .ful-select-input-container {\n position: relative;\n display: block;\n flex: 1 1 auto;\n width: 1%;\n border: var(--ful-select-border-width) solid var(--ful-select-border-color);\n border-radius: var(--ful-select-border-radius);\n\n &:has(input:focus) {\n border-color: var(--ful-select-focus-border-color);\n outline: 0;\n box-shadow: var(--ful-select-focus-box-shadow);\n }\n }\n\n .ful-select-input {\n display: flex;\n flex: 1 1 auto;\n padding-left: 5px;\n padding-right: 2.25rem;\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n background-position: right 0.75rem center;\n background-repeat: no-repeat;\n background-size: 16px 12px;\n background-color: var(--ful-select-bg);\n overflow: hidden;\n z-index: 5;\n border-radius: var(--ful-select-border-radius);\n }\n\n .ful-select-input-container:not(:first-child) .ful-select-input {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .ful-select-input-container:not(:last-child) .ful-select-input {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n &:invalid .ful-select-input-container {\n border-color: var(--ful-invalid-border-color);\n }\n\n &:disabled .ful-select-input {\n background-size: 0;\n background-color: var(--ful-disabled-bg);\n }\n\n &[readonly] .ful-select-input {\n background-size: 0;\n }\n\n &[itemlist][readonly],\n &[itemlist]:disabled {\n & > .input-group {\n display: none;\n }\n & > ful-item-list > ful-item:first-child {\n margin-top: 0;\n }\n & > ful-item-list > ful-item {\n & > *:first-child {\n grid-column: 1 / -1;\n }\n & > *:last-child {\n display: none;\n }\n }\n }\n\n &[required] > .form-label > label::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n input {\n border: 0;\n margin: 0;\n outline: 0;\n padding: 0.375rem 0 0.375rem 7px;\n line-height: 1.5;\n flex: 1 1 auto;\n min-width: 1em;\n width: 1em;\n background-color: transparent;\n }\n}\n\nful-dropdown {\n --ful-dropdown-color: var(--ful-color);\n --ful-dropdown-selected-bg: var(--ful-selected-bg);\n --ful-dropdown-active-bg: var(--ful-active-bg);\n --ful-dropdown-border-width: var(--ful-border-width);\n --ful-dropdown-border-radius: var(--ful-border-radius);\n --ful-dropdown-border-color: var(--ful-border-color);\n --ful-dropdown-background-color: var(--ful-bg);\n --ful-dropdown-scrollbar-width: var(--ful-scrollbar-width);\n --ful-dropdown-scrollbar-border-width: var(--ful-scrollbar-border-width);\n --ful-dropdown-scrollbar-bg: var(--ful-scrollbar-bg);\n --ful-dropdown-scrollbar-thumb-bg: var(--ful-scrollbar-thumb-bg);\n\n display: block;\n position: absolute;\n z-index: 1000;\n padding: 0.5rem 0;\n top: 100%;\n margin-top: 2px;\n\n background-color: var(--ful-dropdown-background-color);\n background-clip: padding-box;\n border: var(--ful-dropdown-border-width) solid var(--ful-dropdown-border-color);\n border-radius: var(--ful-dropdown-border-radius);\n width: 100%;\n\n menu {\n height: auto;\n max-height: 200px;\n overflow-y: auto;\n padding: 0;\n margin: 0;\n\n &:not(:has(*))::before {\n font-family: bootstrap-icons;\n display: block;\n content: \"\\f8c3\";\n margin: auto;\n width: 1rem;\n }\n\n &::-webkit-scrollbar {\n width: 12px;\n }\n\n &::-webkit-scrollbar-track {\n background-color: var(--ful-dropdown-scrollbar-bg);\n border-radius: var(--ful-dropdown-scrollbar-width);\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: var(--ful-dropdown-scrollbar-width);\n background-color: var(--ful-dropdown-active-bg);\n border: var(--ful-dropdown-scrollbar-border-width) solid var(--ful-dropdown-scrollbar-bg);\n }\n }\n\n li {\n padding: 0.5rem 0.751rem;\n color: var(--ful-dropdown-color);\n display: block;\n border: 0;\n cursor: pointer;\n }\n\n li:hover,\n li[selected] {\n color: var(--ful-dropdown-color);\n background-color: var(--ful-dropdown-selected-bg);\n }\n\n li:active {\n color: #fff;\n background-color: var(--ful-dropdown-active-bg);\n }\n}\n","ful-checkbox {\n --ful-checkbox-active-bg: var(--ful-active-bg);\n\n display: block;\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n &[required] > .form-check > .form-check-label > label::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n & input[type=\"checkbox\"]:checked {\n background-color: var(--ful-checkbox-active-bg);\n border-color: var(--ful-checkbox-active-bg);\n }\n\n &:invalid input[type=\"checkbox\"] {\n border-color: var(--ful-invalid-border-color);\n\n &:checked {\n background-color: var(--ful-invalid-color);\n }\n\n &:focus {\n box-shadow: var(--ful-invalid-box-shadow);\n }\n }\n}\n","ful-spinner {\n --ful-spinner-icon-width: 1rem;\n --ful-spinner-icon-height: 1rem;\n --ful-spinner-icon-border-width: 0.2em;\n --ful-spinner-icon-vertical-align: -0.125em;\n --ful-spinner-icon-animation-speed: 0.75s;\n --ful-spinner-icon-animation-name: spinner-border;\n --ful-spinner-icon-color: currentcolor;\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n &.centered {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n &.big {\n --ful-spinner-icon-width: 2rem;\n --ful-spinner-icon-height: 2rem;\n --ful-spinner-icon-border-width: 0.25em;\n }\n\n &.bigger {\n --ful-spinner-icon-width: 4rem;\n --ful-spinner-icon-height: 4rem;\n --ful-spinner-icon-border-width: 0.5em;\n }\n\n &.backdrop {\n --ful-spinner-icon-width: 4rem;\n --ful-spinner-icon-height: 4rem;\n --ful-spinner-icon-border-width: 0.5em;\n\n z-index: 2000;\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n overflow-x: hidden;\n overflow-y: auto;\n outline: 0;\n background-color: rgb(167 167 167 / 80%);\n display: flex;\n align-items: center;\n justify-content: center;\n\n & > .ful-spinner-wrapper {\n padding: 2rem;\n background-color: white;\n border-radius: 1rem;\n }\n }\n\n & > .ful-spinner-wrapper {\n display: inline;\n\n & > .ful-spinner-icon {\n display: inline-block;\n width: var(--ful-spinner-icon-width);\n height: var(--ful-spinner-icon-height);\n vertical-align: var(--ful-spinner-icon-vertical-align);\n border-radius: 50%;\n border: var(--ful-spinner-icon-border-width) solid var(--ful-spinner-icon-color);\n border-right-color: transparent;\n animation: var(--ful-spinner-icon-animation-speed) linear infinite var(--ful-spinner-icon-animation-name);\n }\n }\n}\n\nbody:has(ful-spinner.backdrop:not([hidden])) {\n overflow: hidden;\n}\n","ful-pagination {\n display: block;\n margin-top: auto;\n &:not(:defined) {\n visibility: hidden;\n }\n\n & i.bi::before {\n line-height: 24px;\n }\n & .reload {\n display: flex;\n align-items: center;\n font-size: 24px;\n }\n}\n\nful-table {\n display: block;\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n & tbody[data-ref=\"initial\"],\n & tbody[data-ref=\"loading\"],\n & tbody[data-ref=\"feedback\"] {\n height: 360px;\n padding: 1.5rem;\n & td {\n text-align: center;\n vertical-align: middle;\n & p {\n margin-top: 1rem;\n }\n }\n }\n\n & .pagination-index {\n align-self: center;\n }\n}\n\nful-sorter {\n display: block;\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n cursor: pointer;\n\n &::before {\n display: inline-block;\n vertical-align: text-top;\n font-family: bootstrap-icons;\n font-style: normal;\n font-weight: 400;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: \"\\f574\";\n }\n\n &:not([order])::before {\n color: #cccccc;\n }\n\n &[order=\"asc\"]::before {\n content: \"\\f574\";\n }\n\n &[order=\"desc\"]::before {\n content: \"\\f575\";\n }\n}\n","ful-filter-text,\nful-filter-instant,\nful-filter-local-date {\n --ful-filter-active-bg: var(--ful-active-bg);\n --ful-filter-active-color: var(--ful-active-color);\n\n display: block;\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n &[required] > .form-label > label::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n .dropdown-item:active {\n color: var(--ful-filter-active-color);\n background-color: var(--ful-filter-active-bg);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fml.css","sources":["../src/ful/elements/errors.css","../src/ful/elements/form.css","../src/ful/elements/files.css","../src/ful/elements/input.css","../src/ful/elements/select.css","../src/ful/elements/radio.css","../src/ful/elements/checkbox.css","../src/ful/elements/spinner.css","../src/ful/elements/table.css","../src/ful/elements/filters.css"],"sourcesContent":["ful-errors {\n --ful-errors-color: var(--ful-error-color);\n --ful-errors-bg: var(--ful-error-bg);\n --ful-errors-border-color: var(--ful-error-border-color);\n\n display: block;\n padding: 1rem;\n margin-bottom: 1rem;\n color: var(--ful-errors-color);\n background-color: var(--ful-errors-bg);\n border: 1px solid var(--ful-errors-border-color);\n border-radius: var(--ful-border-radius);\n}\n\nful-field-error {\n --ful-field-error-invalid-color: var(--ful-invalid-color);\n display: none;\n\n :invalid & {\n display: block;\n margin-top: 0.25rem;\n color: var(--ful-field-error-invalid-color);\n }\n}\n\nful-field-warnings {\n display: none;\n &:not(:empty) {\n display: block;\n }\n}\n\nful-field-warning {\n display: block;\n margin: 0.5rem 0;\n padding: 15px;\n color: var(--ful-warning-color);\n background-color: var(--ful-warning-bg);\n border-color: var(--ful-warning-border-color);\n border-radius: 8px;\n animation: show-and-hide 5s ease forwards;\n animation-composition: initial;\n}\n\n@keyframes show-and-hide {\n 0% {\n opacity: 0;\n display: block;\n }\n\n 3% {\n opacity: 1;\n }\n\n 90% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n display: none;\n }\n}\n",":root {\n --ful-color: var(--bs-body-color, #212529);\n --ful-bg: var(--bs-body-bg, #fff);\n\n --ful-border-width: var(--bs-border-width, 1px);\n --ful-border-radius: var(--bs-border-radius, 0.375rem);\n --ful-border-color: var(--bs-border-color, #dee2e6);\n\n --ful-disabled-bg: var(--bs-secondary-bg, #e9ecef);\n --ful-selected-bg: var(--bs-tertiary-bg, #f8f9fa);\n\n --ful-active-color: white;\n --ful-active-bg: #007376;\n\n --ful-focus-border-color: #86b7fe;\n --ful-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n\n --ful-invalid-color: var(--bs-form-invalid-color, #dc3545);\n --ful-invalid-border-color: var(--bs-form-invalid-border-color, #dc3545);\n --ful-invalid-box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n\n --ful-error-color: var(--bs-danger-text-emphasis, #58151c);\n --ful-error-bg: var(--bs-danger-bg-subtle, #f8d7da);\n --ful-error-border-color: var(--bs-danger-border-subtle, #f1aeb5);\n\n --ful-warning-color: var(--bs-warning-text-emphasis, #664d03);\n --ful-warning-bg: var(--bs-warning-bg-subtle, #fff3cd);\n --ful-warning-border-color: var(--bs-warning-border-subtle, #ffe69c);\n\n --ful-scrollbar-bg: var(--bs-secondary-bg, #e9ecef);\n --ful-scrollbar-thumb-bg: var(--ful-active-bg);\n --ful-scrollbar-width: 12px;\n --ful-scrollbar-border-width: 1px;\n\n --ful-inputs-bg: var(--ful-bg);\n --ful-inputs-border-width: var(--ful-border-width);\n --ful-inputs-border-radius: var(--ful-border-radius);\n --ful-inputs-border-color: var(--ful-border-color);\n}\n\n[hidden] {\n /* biome-ignore lint/complexity/noImportantStyles: must beat an element's own display */\n display: none !important;\n}\n","ful-input-file {\n & > .default-dropzone {\n border: 5px solid blue;\n min-height: 100px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n }\n\n &[noinput] > .input-group {\n display: none;\n }\n\n &:not([dropzone]) > .default-dropzone,\n &:not([dropzone]) > .dropzone {\n display: none;\n }\n\n &:not([itemlist]) > ful-item-list {\n display: none;\n }\n\n &[readonly] {\n & > .default-dropzone,\n & > .dropzone {\n pointer-events: none;\n }\n\n & > .input-group > input {\n pointer-events: none;\n }\n }\n}\n","ful-input,\n.ful-input,\nful-input-file,\nful-input-local-date,\nful-input-local-time,\nful-input-instant {\n display: block;\n\n &[uppercase] input,\n &[uppercase] textarea {\n text-transform: uppercase;\n }\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n &[required] > .form-label > label::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n & textarea:focus,\n & input:focus {\n border-color: var(--ful-focus-border-color);\n box-shadow: var(--ful-focus-box-shadow);\n }\n\n &:invalid textarea,\n &:invalid input {\n border-color: var(--ful-invalid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n }\n\n &:invalid textarea:focus,\n &:invalid input:focus {\n border-color: var(--ful-invalid-border-color);\n box-shadow: var(--ful-invalid-box-shadow);\n }\n}\n\nful-item-list {\n --ful-item-list-item-color: var(--ful-active-color);\n --ful-item-list-item-border-radius: var(--ful-border-radius);\n --ful-item-list-item-bg: var(--ful-active-bg);\n\n display: grid;\n grid-template-columns: 1fr auto;\n gap: 4px;\n\n &:has(> ful-item > *:nth-child(3):last-child) {\n grid-template-columns: 1fr auto auto;\n }\n\n & > ful-item:first-child {\n margin-top: 6px;\n }\n\n & > ful-item:last-child {\n margin-bottom: 6px;\n }\n\n & > ful-item {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: subgrid;\n align-items: center;\n text-align: right;\n line-height: 21px;\n\n & > *:first-child {\n text-align: left;\n min-width: 30px;\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding: 5px 0.5rem;\n color: var(--ful-item-list-item-color);\n border-radius: var(--ful-item-list-item-border-radius);\n background-color: var(--ful-item-list-item-bg);\n }\n\n & > *:last-child {\n text-align: left;\n }\n }\n}\n","ful-select {\n --ful-select-border-width: var(--ful-inputs-border-width);\n --ful-select-border-radius: var(--ful-inputs-border-radius);\n --ful-select-border-color: var(--ful-inputs-border-color);\n --ful-select-bg: var(--ful-inputs-bg);\n\n --ful-select-badge-color: var(--ful-active-color);\n --ful-select-badge-bg: var(--ful-active-bg);\n --ful-select-badge-border-radius: var(--ful-border-radius);\n --ful-select-focus-border-color: var(--ful-focus-border-color);\n --ful-select-focus-box-shadow: var(--ful-focus-box-shadow);\n\n display: block;\n cursor: pointer;\n\n badges {\n display: flex;\n flex-wrap: nowrap;\n gap: 3px;\n overflow: hidden;\n\n &:has(badge) {\n min-width: 2em;\n }\n }\n\n &[itemlist] badges {\n display: none;\n }\n\n &:not([itemlist]) > ful-item-list {\n display: none;\n }\n\n badge {\n padding: 5px 7px;\n margin: 5px 0;\n color: var(--ful-select-badge-color);\n white-space: nowrap;\n border-radius: var(--ful-select-badge-border-radius);\n background-color: var(--ful-select-badge-bg);\n display: flex;\n align-items: center;\n line-height: 1em;\n }\n\n .ful-select-input-container {\n position: relative;\n display: block;\n flex: 1 1 auto;\n width: 1%;\n border: var(--ful-select-border-width) solid var(--ful-select-border-color);\n border-radius: var(--ful-select-border-radius);\n\n &:has(input:focus) {\n border-color: var(--ful-select-focus-border-color);\n outline: 0;\n box-shadow: var(--ful-select-focus-box-shadow);\n }\n }\n\n .ful-select-input {\n display: flex;\n flex: 1 1 auto;\n padding-left: 5px;\n padding-right: 2.25rem;\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n background-position: right 0.75rem center;\n background-repeat: no-repeat;\n background-size: 16px 12px;\n background-color: var(--ful-select-bg);\n overflow: hidden;\n z-index: 5;\n border-radius: var(--ful-select-border-radius);\n }\n\n .ful-select-input-container:not(:first-child) .ful-select-input {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .ful-select-input-container:not(:last-child) .ful-select-input {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n &:invalid .ful-select-input-container {\n border-color: var(--ful-invalid-border-color);\n }\n\n &:disabled .ful-select-input {\n background-size: 0;\n background-color: var(--ful-disabled-bg);\n }\n\n &[readonly] .ful-select-input {\n background-size: 0;\n }\n\n &[itemlist][readonly],\n &[itemlist]:disabled {\n & > .input-group {\n display: none;\n }\n & > ful-item-list > ful-item:first-child {\n margin-top: 0;\n }\n & > ful-item-list > ful-item {\n & > *:first-child {\n grid-column: 1 / -1;\n }\n & > *:last-child {\n display: none;\n }\n }\n }\n\n &[required] > .form-label > label::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n input {\n border: 0;\n margin: 0;\n outline: 0;\n padding: 0.375rem 0 0.375rem 7px;\n line-height: 1.5;\n flex: 1 1 auto;\n min-width: 1em;\n width: 1em;\n background-color: transparent;\n }\n}\n\nful-dropdown {\n --ful-dropdown-color: var(--ful-color);\n --ful-dropdown-selected-bg: var(--ful-selected-bg);\n --ful-dropdown-active-bg: var(--ful-active-bg);\n --ful-dropdown-border-width: var(--ful-border-width);\n --ful-dropdown-border-radius: var(--ful-border-radius);\n --ful-dropdown-border-color: var(--ful-border-color);\n --ful-dropdown-background-color: var(--ful-bg);\n --ful-dropdown-scrollbar-width: var(--ful-scrollbar-width);\n --ful-dropdown-scrollbar-border-width: var(--ful-scrollbar-border-width);\n --ful-dropdown-scrollbar-bg: var(--ful-scrollbar-bg);\n --ful-dropdown-scrollbar-thumb-bg: var(--ful-scrollbar-thumb-bg);\n\n display: block;\n position: absolute;\n z-index: 1000;\n padding: 0.5rem 0;\n top: 100%;\n margin-top: 2px;\n\n background-color: var(--ful-dropdown-background-color);\n background-clip: padding-box;\n border: var(--ful-dropdown-border-width) solid var(--ful-dropdown-border-color);\n border-radius: var(--ful-dropdown-border-radius);\n width: 100%;\n\n menu {\n height: auto;\n max-height: 200px;\n overflow-y: auto;\n padding: 0;\n margin: 0;\n\n &:not(:has(*))::before {\n font-family: bootstrap-icons;\n display: block;\n content: \"\\f8c3\";\n margin: auto;\n width: 1rem;\n }\n\n &::-webkit-scrollbar {\n width: 12px;\n }\n\n &::-webkit-scrollbar-track {\n background-color: var(--ful-dropdown-scrollbar-bg);\n border-radius: var(--ful-dropdown-scrollbar-width);\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: var(--ful-dropdown-scrollbar-width);\n background-color: var(--ful-dropdown-active-bg);\n border: var(--ful-dropdown-scrollbar-border-width) solid var(--ful-dropdown-scrollbar-bg);\n }\n }\n\n li {\n padding: 0.5rem 0.751rem;\n color: var(--ful-dropdown-color);\n display: block;\n border: 0;\n cursor: pointer;\n }\n\n li:hover,\n li[selected] {\n color: var(--ful-dropdown-color);\n background-color: var(--ful-dropdown-selected-bg);\n }\n\n li:active {\n color: #fff;\n background-color: var(--ful-dropdown-active-bg);\n }\n}\n","ful-radio-group {\n --ful-radio-group-label-border-color: var(--ful-border-color);\n --ful-radio-group-label-bg: inherit;\n --ful-radio-group-label-checked-border-color: var(--ful-active-bg);\n --ful-radio-group-label-checked-bg: #eefbfb;\n --ful-radio-group-label-disabled-border-color: var(--ful-border-color);\n --ful-radio-group-label-disabled-bg: var(--ful-disabled-bg);\n --ful-radio-group-active-bg: var(--ful-active-bg);\n\n display: block;\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n &[required] > fieldset > legend::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n & > fieldset {\n & > legend {\n font-size: 16px;\n margin: 0;\n }\n\n & > section {\n display: grid;\n gap: 10px;\n grid-template-columns: 1fr;\n\n & label {\n display: flex;\n align-items: center;\n border: 1px solid var(--ful-radio-group-label-border-color);\n background-color: var(--ful-radio-group-label-bg);\n border-radius: 4px;\n padding: 8px 10px;\n height: 100%;\n cursor: pointer;\n\n & > div {\n flex: 1;\n }\n }\n\n & label:has(input[type=\"radio\"]:checked) {\n background-color: var(--ful-radio-group-label-checked-bg);\n border-color: var(--ful-radio-group-label-checked-border-color);\n }\n\n & label:has(input[type=\"radio\"]:disabled) {\n background-color: var(--ful-radio-group-label-disabled-bg);\n border-color: var(--ful-radio-group-label-disabled-border-color);\n }\n\n & input[type=\"radio\"] {\n margin-left: 8px;\n margin-right: 12px;\n height: 16px;\n width: 16px;\n vertical-align: text-bottom;\n accent-color: var(--ful-radio-group-label-checked-border-color);\n }\n }\n }\n\n &.horizontal > fieldset > section {\n gap: 16px;\n grid-template-columns: 1fr 1fr;\n }\n\n &:invalid > fieldset > section label {\n border-color: var(--ful-radio-group-active-bg);\n }\n}\n\nful-radio {\n display: none;\n}\n","ful-checkbox {\n --ful-checkbox-active-bg: var(--ful-active-bg);\n\n display: block;\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n &[required] > .form-check > .form-check-label > label::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n & input[type=\"checkbox\"]:checked {\n background-color: var(--ful-checkbox-active-bg);\n border-color: var(--ful-checkbox-active-bg);\n }\n\n &:invalid input[type=\"checkbox\"] {\n border-color: var(--ful-invalid-border-color);\n\n &:checked {\n background-color: var(--ful-invalid-color);\n }\n\n &:focus {\n box-shadow: var(--ful-invalid-box-shadow);\n }\n }\n}\n","ful-spinner {\n --ful-spinner-icon-width: 1rem;\n --ful-spinner-icon-height: 1rem;\n --ful-spinner-icon-border-width: 0.2em;\n --ful-spinner-icon-vertical-align: -0.125em;\n --ful-spinner-icon-animation-speed: 0.75s;\n --ful-spinner-icon-animation-name: spinner-border;\n --ful-spinner-icon-color: currentcolor;\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n &.centered {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n &.big {\n --ful-spinner-icon-width: 2rem;\n --ful-spinner-icon-height: 2rem;\n --ful-spinner-icon-border-width: 0.25em;\n }\n\n &.bigger {\n --ful-spinner-icon-width: 4rem;\n --ful-spinner-icon-height: 4rem;\n --ful-spinner-icon-border-width: 0.5em;\n }\n\n &.backdrop {\n --ful-spinner-icon-width: 4rem;\n --ful-spinner-icon-height: 4rem;\n --ful-spinner-icon-border-width: 0.5em;\n\n z-index: 2000;\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n overflow-x: hidden;\n overflow-y: auto;\n outline: 0;\n background-color: rgb(167 167 167 / 80%);\n display: flex;\n align-items: center;\n justify-content: center;\n\n & > .ful-spinner-wrapper {\n padding: 2rem;\n background-color: white;\n border-radius: 1rem;\n }\n }\n\n & > .ful-spinner-wrapper {\n display: inline;\n\n & > .ful-spinner-icon {\n display: inline-block;\n width: var(--ful-spinner-icon-width);\n height: var(--ful-spinner-icon-height);\n vertical-align: var(--ful-spinner-icon-vertical-align);\n border-radius: 50%;\n border: var(--ful-spinner-icon-border-width) solid var(--ful-spinner-icon-color);\n border-right-color: transparent;\n animation: var(--ful-spinner-icon-animation-speed) linear infinite var(--ful-spinner-icon-animation-name);\n }\n }\n}\n\nbody:has(ful-spinner.backdrop:not([hidden])) {\n overflow: hidden;\n}\n","ful-pagination {\n display: block;\n margin-top: auto;\n &:not(:defined) {\n visibility: hidden;\n }\n\n & i.bi::before {\n line-height: 24px;\n }\n & .reload {\n display: flex;\n align-items: center;\n font-size: 24px;\n }\n}\n\nful-table {\n display: block;\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n & tbody[data-ref=\"initial\"],\n & tbody[data-ref=\"loading\"],\n & tbody[data-ref=\"feedback\"] {\n height: 360px;\n padding: 1.5rem;\n & td {\n text-align: center;\n vertical-align: middle;\n & p {\n margin-top: 1rem;\n }\n }\n }\n\n & .pagination-index {\n align-self: center;\n }\n}\n\nful-sorter {\n display: block;\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n cursor: pointer;\n\n &::before {\n display: inline-block;\n vertical-align: text-top;\n font-family: bootstrap-icons;\n font-style: normal;\n font-weight: 400;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: \"\\f574\";\n }\n\n &:not([order])::before {\n color: #cccccc;\n }\n\n &[order=\"asc\"]::before {\n content: \"\\f574\";\n }\n\n &[order=\"desc\"]::before {\n content: \"\\f575\";\n }\n}\n","ful-filter-text,\nful-filter-instant,\nful-filter-local-date {\n --ful-filter-active-bg: var(--ful-active-bg);\n --ful-filter-active-color: var(--ful-active-color);\n\n display: block;\n\n &:not(:defined) {\n visibility: hidden;\n }\n\n &[required] > .form-label > label::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n .dropdown-item:active {\n color: var(--ful-filter-active-color);\n background-color: var(--ful-filter-active-bg);\n }\n}\n"],"names":[],"mappings":"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"}
|
package/dist/fml.d.mts
CHANGED
|
@@ -351,7 +351,30 @@ declare class ParsedElement extends HTMLElement {
|
|
|
351
351
|
template(name?: string): any;
|
|
352
352
|
connectedCallback(): void;
|
|
353
353
|
attributeChangedCallback(attr: any, oldValue: any, newValue: any): void;
|
|
354
|
-
|
|
354
|
+
/**
|
|
355
|
+
* The disabled protocol follows the semantics of a native form control:
|
|
356
|
+
*
|
|
357
|
+
* - the `disabled` attribute on the host is the field's own claim, and nothing
|
|
358
|
+
* but its author ever writes or removes it, in markup or through the property.
|
|
359
|
+
* The framework never claims on the form's behalf, so there is nothing to
|
|
360
|
+
* unclaim and nothing to lose: a field declared disabled inside a disabled
|
|
361
|
+
* `<fieldset>` stays disabled when the fieldset comes back, exactly like a
|
|
362
|
+
* native input keeps its attribute.
|
|
363
|
+
* - the effective state is the claim OR a disabled fieldset ancestry, which the
|
|
364
|
+
* platform maintains on its own: `:disabled` matches both, a disabled field is
|
|
365
|
+
* left out of the submitted values, and the inner native controls are reached
|
|
366
|
+
* by the ancestry as descendants of the fieldset.
|
|
367
|
+
* - the `disabled` property reflects the claim only, like a native input's: a
|
|
368
|
+
* field disabled by its ancestry reads `false` while `matches(':disabled')`
|
|
369
|
+
* tells the effective state. Un-claiming inside a disabled fieldset cannot
|
|
370
|
+
* enable the field.
|
|
371
|
+
* - the inner controls mirror the claim and nothing else: the ancestry state is
|
|
372
|
+
* never written anywhere, so it can never go stale, and the browser composes
|
|
373
|
+
* the two on its own when it disables and re-enables a fieldset's descendants.
|
|
374
|
+
*
|
|
375
|
+
* Because of this, formDisabledCallback carries nothing the framework needs to
|
|
376
|
+
* apply, and the protocol does not define it.
|
|
377
|
+
*/
|
|
355
378
|
upgrade(): Promise<void>;
|
|
356
379
|
render(c: any): void;
|
|
357
380
|
reflect(fn: any): void;
|
|
@@ -899,8 +922,8 @@ declare class Input extends ParsedElement {
|
|
|
899
922
|
set value(value: any);
|
|
900
923
|
get readonly(): any;
|
|
901
924
|
set readonly(v: any);
|
|
902
|
-
get disabled():
|
|
903
|
-
set disabled(d:
|
|
925
|
+
get disabled(): boolean;
|
|
926
|
+
set disabled(d: boolean);
|
|
904
927
|
get required(): boolean;
|
|
905
928
|
set required(d: boolean);
|
|
906
929
|
get placeholder(): any;
|
|
@@ -1086,8 +1109,8 @@ declare class Select extends ParsedElement {
|
|
|
1086
1109
|
set value(vs: any);
|
|
1087
1110
|
get value(): any;
|
|
1088
1111
|
get entry(): [any, any][] | [any, any];
|
|
1089
|
-
get disabled():
|
|
1090
|
-
set disabled(d:
|
|
1112
|
+
get disabled(): boolean;
|
|
1113
|
+
set disabled(d: boolean);
|
|
1091
1114
|
get readonly(): any;
|
|
1092
1115
|
set readonly(v: any);
|
|
1093
1116
|
get required(): boolean;
|
|
@@ -1114,8 +1137,8 @@ declare class RadioGroup extends ParsedElement {
|
|
|
1114
1137
|
set value(value: string | boolean | null);
|
|
1115
1138
|
get readonly(): any;
|
|
1116
1139
|
set readonly(v: any);
|
|
1117
|
-
get disabled():
|
|
1118
|
-
set disabled(d:
|
|
1140
|
+
get disabled(): boolean;
|
|
1141
|
+
set disabled(d: boolean);
|
|
1119
1142
|
get required(): boolean;
|
|
1120
1143
|
set required(d: boolean);
|
|
1121
1144
|
focus(options: any): void;
|
|
@@ -1138,8 +1161,8 @@ declare class Checkbox extends ParsedElement {
|
|
|
1138
1161
|
set value(value: any);
|
|
1139
1162
|
get readonly(): any;
|
|
1140
1163
|
set readonly(v: any);
|
|
1141
|
-
get disabled():
|
|
1142
|
-
set disabled(d:
|
|
1164
|
+
get disabled(): boolean;
|
|
1165
|
+
set disabled(d: boolean);
|
|
1143
1166
|
get required(): boolean;
|
|
1144
1167
|
set required(d: boolean);
|
|
1145
1168
|
focus(options: any): void;
|
|
@@ -1266,8 +1289,8 @@ declare class InstantFilter extends Input {
|
|
|
1266
1289
|
set value(v: any[] | undefined);
|
|
1267
1290
|
get readonly(): any;
|
|
1268
1291
|
set readonly(v: any);
|
|
1269
|
-
get disabled():
|
|
1270
|
-
set disabled(d:
|
|
1292
|
+
get disabled(): boolean;
|
|
1293
|
+
set disabled(d: boolean);
|
|
1271
1294
|
}
|
|
1272
1295
|
declare class LocalDateFilter extends Input {
|
|
1273
1296
|
#private;
|
|
@@ -1278,8 +1301,8 @@ declare class LocalDateFilter extends Input {
|
|
|
1278
1301
|
set value(v: any[] | undefined);
|
|
1279
1302
|
get readonly(): any;
|
|
1280
1303
|
set readonly(v: any);
|
|
1281
|
-
get disabled():
|
|
1282
|
-
set disabled(d:
|
|
1304
|
+
get disabled(): boolean;
|
|
1305
|
+
set disabled(d: boolean);
|
|
1283
1306
|
}
|
|
1284
1307
|
declare class TextFilter extends Input {
|
|
1285
1308
|
#private;
|
package/dist/fml.iife.js
CHANGED
|
@@ -4381,25 +4381,38 @@ var fml = (function (exports) {
|
|
|
4381
4381
|
);
|
|
4382
4382
|
});
|
|
4383
4383
|
}
|
|
4384
|
+
#finished = new Map();
|
|
4384
4385
|
enqueue(el) {
|
|
4385
4386
|
if (this.#q.has(el)) {
|
|
4386
4387
|
//already upgrading, can happen when disconnecting an element
|
|
4387
4388
|
//while it's already queued for upgrade (e.g.: ful-form)
|
|
4388
4389
|
return;
|
|
4389
4390
|
}
|
|
4391
|
+
//settling waits on a signal that only ever resolves, so nothing here attaches a
|
|
4392
|
+
//rejection handler to the upgrade itself: a component that fails is still
|
|
4393
|
+
//reported the way it always was
|
|
4394
|
+
const { promise: finished, resolve: markFinished } = /** @type {PromiseWithResolvers<void>} */ (
|
|
4395
|
+
Promise.withResolvers()
|
|
4396
|
+
);
|
|
4390
4397
|
const promise = Nodes.waitParsed(el)
|
|
4391
4398
|
.then(() => el.upgrade())
|
|
4392
|
-
.finally(() =>
|
|
4399
|
+
.finally(() => {
|
|
4400
|
+
this.#q.delete(el);
|
|
4401
|
+
this.#finished.delete(el);
|
|
4402
|
+
markFinished();
|
|
4403
|
+
});
|
|
4393
4404
|
this.#q.set(el, promise);
|
|
4405
|
+
this.#finished.set(el, finished);
|
|
4394
4406
|
}
|
|
4395
4407
|
/**
|
|
4396
|
-
* Waits for every queued upgrade, including the ones enqueued while
|
|
4397
|
-
* a component is only queued once its parent connects it, so a single pass
|
|
4398
|
-
* miss everything nested.
|
|
4408
|
+
* Waits for every queued upgrade to settle, including the ones enqueued while
|
|
4409
|
+
* waiting: a component is only queued once its parent connects it, so a single pass
|
|
4410
|
+
* would miss everything nested. A component that fails to upgrade does not hold the
|
|
4411
|
+
* others back, readiness means the queue drained rather than that everything worked.
|
|
4399
4412
|
*/
|
|
4400
4413
|
async settle() {
|
|
4401
|
-
while (this.#
|
|
4402
|
-
await Promise.all(Array.from(this.#
|
|
4414
|
+
while (this.#finished.size !== 0) {
|
|
4415
|
+
await Promise.all(Array.from(this.#finished.values()));
|
|
4403
4416
|
}
|
|
4404
4417
|
}
|
|
4405
4418
|
get entries() {
|
|
@@ -4684,14 +4697,30 @@ var fml = (function (exports) {
|
|
|
4684
4697
|
}
|
|
4685
4698
|
this[attr] = this.unmarshal(attr, newValue);
|
|
4686
4699
|
}
|
|
4687
|
-
|
|
4688
|
-
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
|
|
4692
|
-
|
|
4693
|
-
|
|
4694
|
-
|
|
4700
|
+
/**
|
|
4701
|
+
* The disabled protocol follows the semantics of a native form control:
|
|
4702
|
+
*
|
|
4703
|
+
* - the `disabled` attribute on the host is the field's own claim, and nothing
|
|
4704
|
+
* but its author ever writes or removes it, in markup or through the property.
|
|
4705
|
+
* The framework never claims on the form's behalf, so there is nothing to
|
|
4706
|
+
* unclaim and nothing to lose: a field declared disabled inside a disabled
|
|
4707
|
+
* `<fieldset>` stays disabled when the fieldset comes back, exactly like a
|
|
4708
|
+
* native input keeps its attribute.
|
|
4709
|
+
* - the effective state is the claim OR a disabled fieldset ancestry, which the
|
|
4710
|
+
* platform maintains on its own: `:disabled` matches both, a disabled field is
|
|
4711
|
+
* left out of the submitted values, and the inner native controls are reached
|
|
4712
|
+
* by the ancestry as descendants of the fieldset.
|
|
4713
|
+
* - the `disabled` property reflects the claim only, like a native input's: a
|
|
4714
|
+
* field disabled by its ancestry reads `false` while `matches(':disabled')`
|
|
4715
|
+
* tells the effective state. Un-claiming inside a disabled fieldset cannot
|
|
4716
|
+
* enable the field.
|
|
4717
|
+
* - the inner controls mirror the claim and nothing else: the ancestry state is
|
|
4718
|
+
* never written anywhere, so it can never go stale, and the browser composes
|
|
4719
|
+
* the two on its own when it disables and re-enables a fieldset's descendants.
|
|
4720
|
+
*
|
|
4721
|
+
* Because of this, formDisabledCallback carries nothing the framework needs to
|
|
4722
|
+
* apply, and the protocol does not define it.
|
|
4723
|
+
*/
|
|
4695
4724
|
async upgrade() {
|
|
4696
4725
|
if (this.#parsed) {
|
|
4697
4726
|
return;
|
|
@@ -4704,8 +4733,9 @@ var fml = (function (exports) {
|
|
|
4704
4733
|
this.unmarshal(attribute, this.getAttribute(attribute)),
|
|
4705
4734
|
]),
|
|
4706
4735
|
);
|
|
4707
|
-
|
|
4708
|
-
|
|
4736
|
+
//the declared claim is what render receives: the ancestry state is not
|
|
4737
|
+
//passed around, it is already where it needs to be
|
|
4738
|
+
await this.render({ slots, observed, disabled: this.hasAttribute('disabled') });
|
|
4709
4739
|
}
|
|
4710
4740
|
render(c) {}
|
|
4711
4741
|
reflect(fn) {
|
|
@@ -6302,15 +6332,17 @@ var fml = (function (exports) {
|
|
|
6302
6332
|
});
|
|
6303
6333
|
}
|
|
6304
6334
|
get disabled() {
|
|
6305
|
-
|
|
6335
|
+
//the claim only, like a native input: the effective state, claim or disabled
|
|
6336
|
+
//ancestry, is what :disabled matches
|
|
6337
|
+
return this.hasAttribute('disabled');
|
|
6306
6338
|
}
|
|
6307
6339
|
set disabled(d) {
|
|
6308
|
-
|
|
6309
|
-
//also on the host: a form associated element only matches :disabled through its
|
|
6310
|
-
//own attribute, and that is what keeps it out of the submitted values. no reflect
|
|
6311
|
-
//is needed, disabled is deliberately not observed: the platform delivers it
|
|
6312
|
-
//through formDisabledCallback, which also covers a disabled ancestor fieldset
|
|
6340
|
+
//the claim belongs to the author alone, nothing else ever writes it
|
|
6313
6341
|
Attributes.toggle(this, 'disabled', d);
|
|
6342
|
+
//the inner control carries the claim as a native input would: a disabled
|
|
6343
|
+
//fieldset ancestry is left to the browser, which reaches the inner control
|
|
6344
|
+
//as a descendant of the fieldset and re-enables it on its own
|
|
6345
|
+
Attributes.toggle(this._input, 'disabled', d);
|
|
6314
6346
|
}
|
|
6315
6347
|
get required() {
|
|
6316
6348
|
return this._input.getAttribute('aria-required') === 'true';
|
|
@@ -7230,7 +7262,9 @@ var fml = (function (exports) {
|
|
|
7230
7262
|
if (e.target.matches('input')) {
|
|
7231
7263
|
return;
|
|
7232
7264
|
}
|
|
7233
|
-
|
|
7265
|
+
//badges and other chrome are not form controls, the guard must ask the
|
|
7266
|
+
//effective state
|
|
7267
|
+
if (this.matches(':disabled') || this.readonly) {
|
|
7234
7268
|
return;
|
|
7235
7269
|
}
|
|
7236
7270
|
if (this.#ddmenu.shown) {
|
|
@@ -7246,7 +7280,7 @@ var fml = (function (exports) {
|
|
|
7246
7280
|
if (!e.target.closest('button')) {
|
|
7247
7281
|
return;
|
|
7248
7282
|
}
|
|
7249
|
-
if (this.disabled || this.readonly) {
|
|
7283
|
+
if (this.matches(':disabled') || this.readonly) {
|
|
7250
7284
|
return;
|
|
7251
7285
|
}
|
|
7252
7286
|
const idx = [...this.#items.children].indexOf(e.target.closest('ful-item'));
|
|
@@ -7259,7 +7293,7 @@ var fml = (function (exports) {
|
|
|
7259
7293
|
});
|
|
7260
7294
|
this.#badges.addEventListener('click', (e) => {
|
|
7261
7295
|
e.stopPropagation();
|
|
7262
|
-
if (this.disabled || this.readonly) {
|
|
7296
|
+
if (this.matches(':disabled') || this.readonly) {
|
|
7263
7297
|
return;
|
|
7264
7298
|
}
|
|
7265
7299
|
const idx = [...this.#badges.children].indexOf(e.target);
|
|
@@ -7284,7 +7318,7 @@ var fml = (function (exports) {
|
|
|
7284
7318
|
this.#input.value = '';
|
|
7285
7319
|
});
|
|
7286
7320
|
this.#input.addEventListener('keydown', (e) => {
|
|
7287
|
-
if (this.disabled || this.readonly) {
|
|
7321
|
+
if (this.matches(':disabled') || this.readonly) {
|
|
7288
7322
|
return;
|
|
7289
7323
|
}
|
|
7290
7324
|
switch (e.code) {
|
|
@@ -7337,7 +7371,7 @@ var fml = (function (exports) {
|
|
|
7337
7371
|
});
|
|
7338
7372
|
this.#input.addEventListener('input', (e) => {
|
|
7339
7373
|
e.stopPropagation();
|
|
7340
|
-
if (this.disabled || this.readonly) {
|
|
7374
|
+
if (this.matches(':disabled') || this.readonly) {
|
|
7341
7375
|
return;
|
|
7342
7376
|
}
|
|
7343
7377
|
dload();
|
|
@@ -7347,7 +7381,7 @@ var fml = (function (exports) {
|
|
|
7347
7381
|
if (!this.#multiple) {
|
|
7348
7382
|
this.#values.clear();
|
|
7349
7383
|
}
|
|
7350
|
-
this.#values.set(e.detail.data[0], e.detail.data.slice(1));
|
|
7384
|
+
this.#values.set(this.#coerceKey(e.detail.data[0]), e.detail.data.slice(1));
|
|
7351
7385
|
this.#changed();
|
|
7352
7386
|
this.#syncBadges();
|
|
7353
7387
|
this.#input.focus();
|
|
@@ -7398,10 +7432,36 @@ var fml = (function (exports) {
|
|
|
7398
7432
|
this.#items.replaceChildren();
|
|
7399
7433
|
this.template('items').withOverlay({ entries: this.#values.entries() }).renderTo(this.#items);
|
|
7400
7434
|
}
|
|
7435
|
+
/**
|
|
7436
|
+
* Coerces a key to the type declared by `k-type`. Keys reach the element from
|
|
7437
|
+
* both worlds: the `value` attribute is text, a loader returns whatever its
|
|
7438
|
+
* endpoint carries. One canonical type keeps the internal Map, which compares
|
|
7439
|
+
* keys strictly, consistent. A key that does not decode is left as it is.
|
|
7440
|
+
*/
|
|
7441
|
+
#coerceKey(k) {
|
|
7442
|
+
switch (this.getAttribute('k-type')) {
|
|
7443
|
+
case 'number': {
|
|
7444
|
+
const n = k === '' ? Number.NaN : Number(k);
|
|
7445
|
+
return Number.isNaN(n) ? k : n;
|
|
7446
|
+
}
|
|
7447
|
+
case 'boolean': {
|
|
7448
|
+
if (k === true || k === 'true') {
|
|
7449
|
+
return true;
|
|
7450
|
+
}
|
|
7451
|
+
if (k === false || k === 'false') {
|
|
7452
|
+
return false;
|
|
7453
|
+
}
|
|
7454
|
+
return k;
|
|
7455
|
+
}
|
|
7456
|
+
default:
|
|
7457
|
+
return String(k);
|
|
7458
|
+
}
|
|
7459
|
+
}
|
|
7460
|
+
|
|
7401
7461
|
set value(vs) {
|
|
7402
7462
|
//the csvm mapper yields [] for a missing multiple value, an empty string is
|
|
7403
7463
|
//left alone: it is a usable key for an <option value="">
|
|
7404
|
-
const keys = vs == null ? [] : Array.isArray(vs) ? vs : [vs];
|
|
7464
|
+
const keys = (vs == null ? [] : Array.isArray(vs) ? vs : [vs]).map((k) => this.#coerceKey(k));
|
|
7405
7465
|
//the keys are known synchronously and are all `value` reads, so they are applied
|
|
7406
7466
|
//now: only the labels need the loader, until then a key stands in for its own
|
|
7407
7467
|
this.#values = new Map(keys.map((k) => [k, [k]]));
|
|
@@ -7424,7 +7484,8 @@ var fml = (function (exports) {
|
|
|
7424
7484
|
}
|
|
7425
7485
|
//label the keys that are still selected: a removal made while the lookup was in
|
|
7426
7486
|
//flight must not be undone by it, and a key the loader does not know is dropped
|
|
7427
|
-
|
|
7487
|
+
//the loader keys are coerced too, so they line up with the assigned ones
|
|
7488
|
+
const resolved = new Map(entries.map((e) => [this.#coerceKey(e[0]), e.slice(1)]));
|
|
7428
7489
|
for (const key of keys) {
|
|
7429
7490
|
if (!this.#values.has(key)) {
|
|
7430
7491
|
continue;
|
|
@@ -7450,15 +7511,17 @@ var fml = (function (exports) {
|
|
|
7450
7511
|
return [...this.#values.entries()][0] ?? null;
|
|
7451
7512
|
}
|
|
7452
7513
|
get disabled() {
|
|
7453
|
-
|
|
7514
|
+
//the claim only, like a native input: the effective state, claim or disabled
|
|
7515
|
+
//ancestry, is what :disabled matches
|
|
7516
|
+
return this.hasAttribute('disabled');
|
|
7454
7517
|
}
|
|
7455
7518
|
set disabled(d) {
|
|
7456
|
-
|
|
7457
|
-
//also on the host: a form associated element only matches :disabled through its
|
|
7458
|
-
//own attribute, and that is what keeps it out of the submitted values. no reflect
|
|
7459
|
-
//is needed, disabled is deliberately not observed: the platform delivers it
|
|
7460
|
-
//through formDisabledCallback, which also covers a disabled ancestor fieldset
|
|
7519
|
+
//the claim belongs to the author alone, nothing else ever writes it
|
|
7461
7520
|
Attributes.toggle(this, 'disabled', d);
|
|
7521
|
+
//the inner control carries the claim as a native input would: a disabled
|
|
7522
|
+
//fieldset ancestry is left to the browser, which reaches the inner control
|
|
7523
|
+
//as a descendant of the fieldset and re-enables it on its own
|
|
7524
|
+
Attributes.toggle(this.#input, 'disabled', d);
|
|
7462
7525
|
}
|
|
7463
7526
|
get readonly() {
|
|
7464
7527
|
return this.#input.readOnly;
|
|
@@ -7606,15 +7669,17 @@ var fml = (function (exports) {
|
|
|
7606
7669
|
});
|
|
7607
7670
|
}
|
|
7608
7671
|
get disabled() {
|
|
7609
|
-
|
|
7672
|
+
//the claim only, like a native input: the effective state, claim or disabled
|
|
7673
|
+
//ancestry, is what :disabled matches
|
|
7674
|
+
return this.hasAttribute('disabled');
|
|
7610
7675
|
}
|
|
7611
7676
|
set disabled(d) {
|
|
7612
|
-
|
|
7613
|
-
//also on the host: a form associated element only matches :disabled through its
|
|
7614
|
-
//own attribute, and that is what keeps it out of the submitted values. no reflect
|
|
7615
|
-
//is needed, disabled is deliberately not observed: the platform delivers it
|
|
7616
|
-
//through formDisabledCallback, which also covers a disabled ancestor fieldset
|
|
7677
|
+
//the claim belongs to the author alone, nothing else ever writes it
|
|
7617
7678
|
Attributes.toggle(this, 'disabled', d);
|
|
7679
|
+
//the group disables through its own fieldset, which carries the claim like
|
|
7680
|
+
//a native input would: a disabled outer ancestry is left to the browser,
|
|
7681
|
+
//which reaches the radios as descendants and re-enables them on its own
|
|
7682
|
+
this.#fieldset.disabled = d;
|
|
7618
7683
|
}
|
|
7619
7684
|
get required() {
|
|
7620
7685
|
return this.#fieldset.getAttribute('aria-required') === 'true';
|
|
@@ -7689,7 +7754,8 @@ var fml = (function (exports) {
|
|
|
7689
7754
|
const label = fragment.querySelector('label');
|
|
7690
7755
|
label.addEventListener('click', () => {
|
|
7691
7756
|
this.focus();
|
|
7692
|
-
|
|
7757
|
+
//a label is not a form control, the guard must ask the effective state
|
|
7758
|
+
if (this.matches(':disabled') || this.readonly) {
|
|
7693
7759
|
return;
|
|
7694
7760
|
}
|
|
7695
7761
|
this.value = !this.value;
|
|
@@ -7724,15 +7790,17 @@ var fml = (function (exports) {
|
|
|
7724
7790
|
});
|
|
7725
7791
|
}
|
|
7726
7792
|
get disabled() {
|
|
7727
|
-
|
|
7793
|
+
//the claim only, like a native input: the effective state, claim or disabled
|
|
7794
|
+
//ancestry, is what :disabled matches
|
|
7795
|
+
return this.hasAttribute('disabled');
|
|
7728
7796
|
}
|
|
7729
7797
|
set disabled(d) {
|
|
7730
|
-
|
|
7731
|
-
//also on the host: a form associated element only matches :disabled through its
|
|
7732
|
-
//own attribute, and that is what keeps it out of the submitted values. no reflect
|
|
7733
|
-
//is needed, disabled is deliberately not observed: the platform delivers it
|
|
7734
|
-
//through formDisabledCallback, which also covers a disabled ancestor fieldset
|
|
7798
|
+
//the claim belongs to the author alone, nothing else ever writes it
|
|
7735
7799
|
Attributes.toggle(this, 'disabled', d);
|
|
7800
|
+
//the inner control carries the claim as a native input would: a disabled
|
|
7801
|
+
//fieldset ancestry is left to the browser, which reaches the inner control
|
|
7802
|
+
//as a descendant of the fieldset and re-enables it on its own
|
|
7803
|
+
Attributes.toggle(this.#input, 'disabled', d);
|
|
7736
7804
|
}
|
|
7737
7805
|
get required() {
|
|
7738
7806
|
return this.#input.getAttribute('aria-required') === 'true';
|
|
@@ -8370,8 +8438,10 @@ var fml = (function (exports) {
|
|
|
8370
8438
|
return super.disabled;
|
|
8371
8439
|
}
|
|
8372
8440
|
set disabled(d) {
|
|
8373
|
-
|
|
8441
|
+
//the claim and the first operand are the base's, the second operand mirrors
|
|
8442
|
+
//the claim like the first one does
|
|
8374
8443
|
super.disabled = d;
|
|
8444
|
+
Attributes.toggle(this.#value2, 'disabled', d);
|
|
8375
8445
|
}
|
|
8376
8446
|
}
|
|
8377
8447
|
|
|
@@ -8486,8 +8556,10 @@ var fml = (function (exports) {
|
|
|
8486
8556
|
return super.disabled;
|
|
8487
8557
|
}
|
|
8488
8558
|
set disabled(d) {
|
|
8489
|
-
|
|
8559
|
+
//the claim and the first operand are the base's, the second operand mirrors
|
|
8560
|
+
//the claim like the first one does
|
|
8490
8561
|
super.disabled = d;
|
|
8562
|
+
Attributes.toggle(this.#value2, 'disabled', d);
|
|
8491
8563
|
}
|
|
8492
8564
|
}
|
|
8493
8565
|
|