@optionfactory/ful 0.26.0 → 0.28.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/ful.css CHANGED
@@ -1,2 +1,2 @@
1
- ful-errors:not(:defined),ful-field-error:not(:defined){visibility:hidden}ful-errors,ful-field-error{display:block}ful-input:not(:defined){visibility:hidden}ful-input{display:block}ful-select:not(:defined){visibility:hidden}ful-select{display:block}.form-floating>.ts-wrapper{height:calc(3.5rem + var(--bs-border-width)*2);line-height:1.25;min-height:calc(3.5rem + var(--bs-border-width)*2)}.form-floating>.ts-wrapper>.ts-control{line-height:20px;padding-bottom:.625rem!important;padding-top:1.625rem!important}.form-floating>.ts-wrapper~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.ts-wrapper.multi .ts-control>div{margin:0 3px 0 0;padding:0 5px}ful-spinner:not(:defined){visibility:hidden}ful-wizard:not(:defined){visibility:hidden}ful-wizard,ful-wizard>ol>li.active{display:block}ful-wizard>ol>li,ful-wizard>section{display:none}ful-wizard>section.current{display:block}
1
+ ful-errors:not(:defined),ful-field-error:not(:defined){visibility:hidden}ful-errors,ful-field-error{display:block}ful-input:not(:defined){visibility:hidden}ful-input{display:block}ful-select:not(:defined){visibility:hidden}ful-select{display:block}.form-floating>.ts-wrapper{height:calc(3.5rem + var(--bs-border-width)*2);line-height:1.25;min-height:calc(3.5rem + var(--bs-border-width)*2)}.form-floating>.ts-wrapper>.ts-control{line-height:20px;padding-bottom:.625rem!important;padding-top:1.625rem!important}.form-floating>.ts-wrapper~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.ts-wrapper.multi .ts-control>div{margin:0 3px 0 0;padding:0 5px}ful-radio-group:not(:defined){visibility:hidden}ful-radio{display:none}ful-radio-group{--ful-radio-group-label-border-color:var(--bs-border-color);--ful-radio-group-label-border-color-checked:#46ce95;--ful-radio-group-label-background-color:inherit;--ful-radio-group-label-background-color-checked:#f5fffc;display:block}ful-radio-group>fieldset legend{font-size:16px;line-height:22px;margin:0}ful-radio-group>fieldset>section{display:grid;gap:10px;grid-template-columns:1fr}ful-radio-group.horizontal>fieldset>section{gap:16px;grid-template-columns:1fr 1fr}ful-radio-group>fieldset input[type=radio]{height:16px;margin-left:8px;margin-right:12px;vertical-align:text-bottom;width:16px}ful-radio-group>fieldset label:has(input[type=radio]){background-color:var(--ful-radio-group-label-background-color);border:1px solid var(--ful-radio-group-label-border-color);border-radius:4px;display:block;padding:6px 10px}ful-radio-group>fieldset label:has(input[type=radio].is-invalid){border-color:var(--bs-form-invalid-border-color)}ful-radio-group>fieldset label:has(input[type=radio]:checked){background-color:var(--ful-radio-group-label-background-color-checked);border-color:var(--ful-radio-group-label-border-color-checked)}ful-radio-group:has(.is-invalid) .invalid-feedback{display:block}ful-spinner:not(:defined){visibility:hidden}ful-wizard:not(:defined){visibility:hidden}ful-wizard,ful-wizard>ol>li.active{display:block}ful-wizard>ol>li,ful-wizard>section{display:none}ful-wizard>section.current{display:block}
2
2
  /*# sourceMappingURL=ful.css.map */
package/dist/ful.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["errors.scss","input.scss","select.scss","spinner.scss","wizard.scss"],"names":[],"mappings":"AAAA,uDAEE,iBACF,CAEA,2BAEE,aACF,CCRA,wBACE,iBACF,CAEA,UACE,aACF,CCNA,yBACE,iBACF,CAEA,WACE,aACF,CAEA,2BACE,8CAAiD,CAEjD,gBAAiB,CADjB,kDAEF,CAEA,uCAGE,gBAAiB,CADjB,gCAAmC,CADnC,8BAGF,CAEA,iCACE,wCAA2C,CAC3C,0DACF,CAEA,iDACE,gBAAiB,CACjB,aACF,CC5BA,0BACE,iBACF,CCFA,yBACE,iBACF,CAMA,mCACE,aACF,CAMA,oCACE,YACF,CAEA,2BACE,aACF","file":"ful.css","sourcesContent":["ful-errors:not(:defined),\nful-field-error:not(:defined) {\n visibility: hidden;\n}\n\nful-errors,\nful-field-error {\n display: block;\n}","ful-input:not(:defined) {\n visibility: hidden;\n}\n\nful-input {\n display: block;\n}","ful-select:not(:defined) {\n visibility: hidden;\n}\n\nful-select {\n display: block;\n}\n\n.form-floating > .ts-wrapper {\n height: calc(3.5rem + var(--bs-border-width) * 2);\n min-height: calc(3.5rem + var(--bs-border-width) * 2);\n line-height: 1.25;\n}\n\n.form-floating > .ts-wrapper > .ts-control {\n padding-top: 1.625rem !important;\n padding-bottom: 0.625rem !important;\n line-height: 20px;\n}\n\n.form-floating > .ts-wrapper ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n\n.form-floating > .ts-wrapper.multi .ts-control > div {\n margin: 0 3px 0 0;\n padding: 0px 5px;\n}","ful-spinner:not(:defined) {\n visibility: hidden;\n}","ful-wizard:not(:defined) {\n visibility: hidden;\n}\n\nful-wizard {\n display: block;\n}\n\nful-wizard > ol > li.active {\n display: block;\n}\n\nful-wizard > ol > li {\n display: none;\n}\n\nful-wizard > section {\n display: none;\n}\n\nful-wizard > section.current {\n display: block;\n}"]}
1
+ {"version":3,"sources":["errors.scss","input.scss","select.scss","radio.scss","spinner.scss","wizard.scss"],"names":[],"mappings":"AAAA,uDAEE,iBACF,CAEA,2BAEE,aACF,CCRA,wBACE,iBACF,CAEA,UACE,aACF,CCNA,yBACE,iBACF,CAEA,WACE,aACF,CAEA,2BACE,8CAAiD,CAEjD,gBAAiB,CADjB,kDAEF,CAEA,uCAGE,gBAAiB,CADjB,gCAAmC,CADnC,8BAGF,CAEA,iCACE,wCAA2C,CAC3C,0DACF,CAEA,iDACE,gBAAiB,CACjB,aACF,CC5BA,8BACE,iBACF,CAEA,UACE,YACF,CAEA,gBAEE,2DAA4D,CAC5D,oDAAqD,CACrD,gDAAiD,CACjD,wDAAyD,CAJzD,aAKF,CAEA,gCAEE,cAAe,CADf,gBAAiB,CAEjB,QACF,CAEA,iCACE,YAAa,CACb,QAAS,CACT,yBACF,CAEA,4CACE,QAAS,CACT,6BACF,CAEA,2CAGE,WAAY,CAFZ,eAAgB,CAChB,iBAAkB,CAGlB,0BAA2B,CAD3B,UAEF,CAEA,sDAGE,8DAA+D,CAD/D,0DAA2D,CAE3D,iBAAkB,CAHlB,aAAc,CAId,gBACF,CAEA,iEACE,gDACF,CAEA,8DACE,sEAAuE,CACvE,8DACF,CAEA,mDACE,aACF,CC5DA,0BACE,iBACF,CCFA,yBACE,iBACF,CAMA,mCACE,aACF,CAMA,oCACE,YACF,CAEA,2BACE,aACF","file":"ful.css","sourcesContent":["ful-errors:not(:defined),\nful-field-error:not(:defined) {\n visibility: hidden;\n}\n\nful-errors,\nful-field-error {\n display: block;\n}","ful-input:not(:defined) {\n visibility: hidden;\n}\n\nful-input {\n display: block;\n}","ful-select:not(:defined) {\n visibility: hidden;\n}\n\nful-select {\n display: block;\n}\n\n.form-floating > .ts-wrapper {\n height: calc(3.5rem + var(--bs-border-width) * 2);\n min-height: calc(3.5rem + var(--bs-border-width) * 2);\n line-height: 1.25;\n}\n\n.form-floating > .ts-wrapper > .ts-control {\n padding-top: 1.625rem !important;\n padding-bottom: 0.625rem !important;\n line-height: 20px;\n}\n\n.form-floating > .ts-wrapper ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n\n.form-floating > .ts-wrapper.multi .ts-control > div {\n margin: 0 3px 0 0;\n padding: 0px 5px;\n}","ful-radio-group:not(:defined) {\n visibility: hidden;\n}\n\nful-radio {\n display: none;\n}\n\nful-radio-group {\n display: block;\n --ful-radio-group-label-border-color: var(--bs-border-color);\n --ful-radio-group-label-border-color-checked: #46ce95;\n --ful-radio-group-label-background-color: inherit;\n --ful-radio-group-label-background-color-checked: #f5fffc;\n}\n\nful-radio-group > fieldset legend {\n line-height: 22px;\n font-size: 16px;\n margin: 0;\n}\n\nful-radio-group > fieldset > section {\n display: grid;\n gap: 10px;\n grid-template-columns: 1fr;\n}\n\nful-radio-group.horizontal > fieldset > section {\n gap: 16px;\n grid-template-columns: 1fr 1fr;\n}\n\nful-radio-group > fieldset input[type=radio] {\n margin-left: 8px;\n margin-right: 12px;\n height: 16px;\n width: 16px;\n vertical-align: text-bottom;\n}\n\nful-radio-group > fieldset label:has(input[type=radio]) {\n display: block;\n border: 1px solid var(--ful-radio-group-label-border-color);\n background-color: var(--ful-radio-group-label-background-color);\n border-radius: 4px;\n padding: 6px 10px;\n}\n\nful-radio-group > fieldset label:has(input[type=radio].is-invalid) {\n border-color: var(--bs-form-invalid-border-color);\n}\n\nful-radio-group > fieldset label:has(input[type=radio]:checked) {\n background-color: var(--ful-radio-group-label-background-color-checked);\n border-color: var(--ful-radio-group-label-border-color-checked);\n}\n\nful-radio-group:has(.is-invalid) .invalid-feedback {\n display: block;\n}","ful-spinner:not(:defined) {\n visibility: hidden;\n}","ful-wizard:not(:defined) {\n visibility: hidden;\n}\n\nful-wizard {\n display: block;\n}\n\nful-wizard > ol > li.active {\n display: block;\n}\n\nful-wizard > ol > li {\n display: none;\n}\n\nful-wizard > section {\n display: none;\n}\n\nful-wizard > section.current {\n display: block;\n}"]}
package/dist/ful.iife.js CHANGED
@@ -654,17 +654,19 @@ var ful = (function (exports) {
654
654
 
655
655
  class Slots {
656
656
  static from(el) {
657
- const slotted = Object.fromEntries(Array.from(el.querySelectorAll("[slot]")).map(el => {
658
- el.parentElement.removeChild(el);
659
- const slot = el.getAttribute("slot");
660
- el.removeAttribute("slot");
661
- return [slot, el];
662
- }));
657
+ const namedSlots = Array.from(el.childNodes)
658
+ .filter(el => el.matches('[slot]'))
659
+ .map(el => {
660
+ el.remove();
661
+ const slot = el.getAttribute("slot");
662
+ el.removeAttribute("slot");
663
+ return [slot, el];
664
+ });
665
+ const slotted = Object.fromEntries(namedSlots);
663
666
  slotted.default = new DocumentFragment();
664
667
  slotted.default.append(...el.childNodes);
665
668
  return slotted;
666
669
  }
667
-
668
670
  }
669
671
 
670
672
  const Templated = (SuperClass, template) => {
@@ -702,6 +704,7 @@ var ful = (function (exports) {
702
704
  return this.hasAttribute(flag);
703
705
  },
704
706
  set(value) {
707
+ //see https://developer.mozilla.org/en-US/docs/Web/API/CustomStateSet#using_double_dash_prefixed_idents
705
708
  if (Attributes.asBoolean(value)) {
706
709
  this.internals_.states.add(`--${flag}`);
707
710
  this.setAttribute(flag, '');
@@ -925,9 +928,11 @@ var ful = (function (exports) {
925
928
  }
926
929
  }
927
930
 
928
- const ful_input_ec = globalThis.ec || ftl.EvaluationContext.configure({});
931
+ const ful_input_ec = globalThis.ec || ftl.EvaluationContext.configure({
932
+
933
+ });
929
934
 
930
- const ful_input_template = globalThis.template || ftl.Template.fromHtml(`
935
+ const ful_input_template_ = globalThis.ful_input_template || ftl.Template.fromHtml(`
931
936
  <div data-tpl-if="floating" class="input-group has-validation">
932
937
  <span data-tpl-if="slotted.ibefore" class="input-group-text">{{{{ slotted.ibefore }}}}</span>
933
938
  <div data-tpl-if="slotted.before" data-tpl-remove="tag">{{{{ slotted.before }}}}</div>
@@ -954,7 +959,7 @@ var ful = (function (exports) {
954
959
 
955
960
 
956
961
 
957
- class Input extends Templated(HTMLElement, ful_input_template) {
962
+ class Input extends Templated(HTMLElement, ful_input_template_) {
958
963
  render(slotted, template) {
959
964
  const floating = this.hasAttribute('floating');
960
965
  const input = slotted.input = slotted.input || (() => {
@@ -979,9 +984,11 @@ var ful = (function (exports) {
979
984
  * <script src="tom-select.complete.js"></script>
980
985
  * <link href="tom-select.bootstrap5.css" rel="stylesheet" />
981
986
  */
982
- const ful_select_ec = globalThis.ec || ftl.EvaluationContext.configure({});
987
+ const ful_select_ec = globalThis.ec || ftl.EvaluationContext.configure({
983
988
 
984
- const ful_select_template = globalThis.template || ftl.Template.fromHtml(`
989
+ });
990
+
991
+ const ful_select_template_ = globalThis.ful_select_template || ftl.Template.fromHtml(`
985
992
  <div data-tpl-if="floating" class="input-group has-validation">
986
993
  <span data-tpl-if="slotted.ibefore" class="input-group-text">{{{{ slotted.ibefore }}}}</span>
987
994
  <div data-tpl-if="slotted.before" data-tpl-remove="tag">{{{{ slotted.before }}}}</div>
@@ -1007,7 +1014,7 @@ var ful = (function (exports) {
1007
1014
  `, ful_select_ec);
1008
1015
 
1009
1016
 
1010
- class Select extends Templated(Observable(HTMLElement), ful_select_template) {
1017
+ class Select extends Templated(Observable(HTMLElement), ful_select_template_) {
1011
1018
  constructor(tsConfig) {
1012
1019
  super();
1013
1020
  this.tsConfig = tsConfig;
@@ -1069,6 +1076,53 @@ var ful = (function (exports) {
1069
1076
 
1070
1077
  }
1071
1078
 
1079
+ const ful_radiogroup_ec = globalThis.ec || ftl.EvaluationContext.configure({
1080
+
1081
+ });
1082
+
1083
+ const ful_radiougroup_template_ = globalThis.ful_radiogroup_template || ftl.Template.fromHtml(`
1084
+ <fieldset>
1085
+ <legend class="form-label">
1086
+ {{{{ slotted.default }}}}
1087
+ </legend>
1088
+ <section>
1089
+ <label data-tpl-each="inputsAndLabels" data-tpl-var="ial">
1090
+ {{{{ ial[0] }}}}
1091
+ {{{{ ial[1] }}}}
1092
+ </label>
1093
+ </section>
1094
+ <ful-field-error data-tpl-if="name" data-tpl-field="name"></ful-field-error>
1095
+ </fieldset>
1096
+ `, ful_radiogroup_ec);
1097
+
1098
+
1099
+ class RadioGroup extends Stateful(Templated(HTMLElement, ful_radiougroup_template_), ['readonly']) {
1100
+ render(slotted, template) {
1101
+ const name = this.getAttribute('input-name') || Attributes.uid('ful-radiogroup');
1102
+ const radioEls = Array.from(slotted.default.querySelectorAll('ful-radio'));
1103
+ const inputsAndLabels = radioEls.map(el => {
1104
+ const input = document.createElement('input');
1105
+ input.setAttribute('type', 'radio');
1106
+ Attributes.forward('input-', this, input);
1107
+ Attributes.forward('', el, input);
1108
+ Attributes.defaultValue(input, 'name', name);
1109
+ const label = Fragments.fromChildNodes(el);
1110
+ return [input, label];
1111
+ });
1112
+ radioEls.forEach(el => el.remove());
1113
+
1114
+ const fragment = template.render({
1115
+ name: name,
1116
+ slotted: slotted,
1117
+ inputsAndLabels: inputsAndLabels
1118
+ });
1119
+ return fragment;
1120
+ }
1121
+ static configure() {
1122
+ customElements.define('ful-radio-group', RadioGroup);
1123
+ }
1124
+ }
1125
+
1072
1126
  class Spinner extends Templated(HTMLElement) {
1073
1127
  render(slotted, template) {
1074
1128
  return Fragments.fromHtml(`
@@ -1201,6 +1255,7 @@ var ful = (function (exports) {
1201
1255
  exports.Input = Input;
1202
1256
  exports.LocalStorage = LocalStorage;
1203
1257
  exports.Observable = Observable;
1258
+ exports.RadioGroup = RadioGroup;
1204
1259
  exports.Select = Select;
1205
1260
  exports.SessionStorage = SessionStorage;
1206
1261
  exports.Slots = Slots;