@3t-transform/threeteeui 0.2.115 → 0.2.116
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/cjs/loader.cjs.js +1 -1
- package/dist/cjs/tttx-form.cjs.entry.js +42 -15
- package/dist/cjs/tttx-select-box.cjs.entry.js +17 -4
- package/dist/cjs/tttx.cjs.js +1 -1
- package/dist/collection/components/molecules/tttx-form/tttx-form.js +45 -15
- package/dist/collection/components/molecules/tttx-select-box/tttx-select-box.js +43 -4
- package/dist/components/tttx-form.js +61 -16
- package/dist/components/tttx-select-box.js +1 -155
- package/dist/components/tttx-select-box2.js +171 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/tttx-form.entry.js +42 -15
- package/dist/esm/tttx-select-box.entry.js +17 -4
- package/dist/esm/tttx.js +1 -1
- package/dist/tttx/p-a144a5ec.entry.js +1 -0
- package/dist/tttx/p-e6514754.entry.js +1 -0
- package/dist/tttx/tttx.esm.js +1 -1
- package/dist/types/components/molecules/tttx-form/tttx-form.d.ts +6 -2
- package/dist/types/components/molecules/tttx-select-box/tttx-select-box.d.ts +2 -0
- package/dist/types/components.d.ts +1 -0
- package/package.json +1 -1
- package/dist/tttx/p-64d61284.entry.js +0 -1
- package/dist/tttx/p-ae4e3fe8.entry.js +0 -1
|
@@ -190,7 +190,7 @@ const TttxForm = class {
|
|
|
190
190
|
*/
|
|
191
191
|
async setSelectOptions(fieldname, options) {
|
|
192
192
|
const select = this.fieldset.querySelector(`[name=${fieldname}]`);
|
|
193
|
-
|
|
193
|
+
const tttxSelect = this.fieldset.querySelector(`[name=overlay-${fieldname}]`);
|
|
194
194
|
const fragment = new DocumentFragment();
|
|
195
195
|
for (const option of options) {
|
|
196
196
|
const o = document.createElement('option');
|
|
@@ -198,7 +198,10 @@ const TttxForm = class {
|
|
|
198
198
|
o.value = option.value;
|
|
199
199
|
fragment.appendChild(o);
|
|
200
200
|
}
|
|
201
|
-
select.
|
|
201
|
+
select.replaceChildren(fragment);
|
|
202
|
+
tttxSelect.optionsData = options;
|
|
203
|
+
//await tttxSelect.setOptionsData(options);
|
|
204
|
+
await tttxSelect.setSelectedItem(options[0].value);
|
|
202
205
|
}
|
|
203
206
|
/**
|
|
204
207
|
* Submits the form data to the server.
|
|
@@ -255,7 +258,7 @@ const TttxForm = class {
|
|
|
255
258
|
* @param {boolean} [formProperties.options[].placeholder]
|
|
256
259
|
*/
|
|
257
260
|
createSelect(formKey, formProperties) {
|
|
258
|
-
var _a;
|
|
261
|
+
var _a, _b, _c, _d;
|
|
259
262
|
const select = document.createElement('select');
|
|
260
263
|
select.setAttribute('name', formKey);
|
|
261
264
|
formProperties.options.forEach(optionProperties => {
|
|
@@ -263,7 +266,22 @@ const TttxForm = class {
|
|
|
263
266
|
});
|
|
264
267
|
if ((_a = this._data) === null || _a === void 0 ? void 0 : _a[formKey])
|
|
265
268
|
select.classList.remove('placeholder');
|
|
266
|
-
|
|
269
|
+
const tttxSelect = document.createElement('tttx-select-box');
|
|
270
|
+
tttxSelect.optionsData = (_b = formProperties.options) === null || _b === void 0 ? void 0 : _b.filter(o => !o.placeholder);
|
|
271
|
+
tttxSelect.placeholder = (_d = (_c = formProperties.options) === null || _c === void 0 ? void 0 : _c.filter(o => o.placeholder)[0]) === null || _d === void 0 ? void 0 : _d.label;
|
|
272
|
+
tttxSelect.inline = false;
|
|
273
|
+
tttxSelect.searchEnabled = true;
|
|
274
|
+
tttxSelect.style.width = '100%';
|
|
275
|
+
tttxSelect.style.marginTop = '6px';
|
|
276
|
+
tttxSelect.setAttribute('name', 'overlay-' + formKey);
|
|
277
|
+
const fragment = document.createDocumentFragment();
|
|
278
|
+
fragment.append(tttxSelect);
|
|
279
|
+
select.style.display = 'none';
|
|
280
|
+
tttxSelect.addEventListener('selectItemEvent', function (ev) {
|
|
281
|
+
select.value = ev.detail.value;
|
|
282
|
+
select.onblur({ target: select });
|
|
283
|
+
});
|
|
284
|
+
return { input: select, overlay: fragment };
|
|
267
285
|
}
|
|
268
286
|
/**
|
|
269
287
|
* Appends an option to a select element
|
|
@@ -491,10 +509,11 @@ const TttxForm = class {
|
|
|
491
509
|
*
|
|
492
510
|
* @param {Record<string, any>} formProperties - An object containing properties for the form field, including its label text and validation rules.
|
|
493
511
|
* @param {HTMLInputElement | HTMLSelectElement} input - The input element to associate with the label.
|
|
512
|
+
* @param {never} overlay - The Child Element which will be rendered atop the standard HTML5 element
|
|
494
513
|
* @param {HTMLDivElement} errorBubble - The error bubble element to display error messages in.
|
|
495
514
|
* @return {HTMLLabelElement} - The new label element.
|
|
496
515
|
*/
|
|
497
|
-
createLabel(formProperties, input, errorBubble) {
|
|
516
|
+
createLabel(formProperties, input, overlay, errorBubble) {
|
|
498
517
|
var _a;
|
|
499
518
|
const outerContainer = document.createElement('div');
|
|
500
519
|
let outerContainerClassName = 'outer-container inputBlock';
|
|
@@ -520,6 +539,9 @@ const TttxForm = class {
|
|
|
520
539
|
}
|
|
521
540
|
else {
|
|
522
541
|
// Append the input element and error bubble element to the outerContainer
|
|
542
|
+
if (overlay) {
|
|
543
|
+
outerContainer.appendChild(overlay);
|
|
544
|
+
}
|
|
523
545
|
outerContainer.appendChild(input);
|
|
524
546
|
}
|
|
525
547
|
if (formProperties.type !== 'checkbox') {
|
|
@@ -589,33 +611,33 @@ const TttxForm = class {
|
|
|
589
611
|
this.template.content.append(end);
|
|
590
612
|
continue;
|
|
591
613
|
}
|
|
592
|
-
let
|
|
614
|
+
let fragments = {};
|
|
593
615
|
switch (formProperties.type) {
|
|
594
616
|
case 'select':
|
|
595
|
-
|
|
617
|
+
fragments = this.createSelect(formKey, formProperties);
|
|
596
618
|
break;
|
|
597
619
|
case 'radio':
|
|
598
|
-
input = this.createRadio(formKey, formProperties);
|
|
620
|
+
fragments.input = this.createRadio(formKey, formProperties);
|
|
599
621
|
break;
|
|
600
622
|
case 'textarea':
|
|
601
|
-
input = this.createTextArea(formKey, formProperties);
|
|
623
|
+
fragments.input = this.createTextArea(formKey, formProperties);
|
|
602
624
|
break;
|
|
603
625
|
default:
|
|
604
|
-
input = this.createInput(formKey, formProperties);
|
|
626
|
+
fragments.input = this.createInput(formKey, formProperties);
|
|
605
627
|
}
|
|
606
628
|
// If the form property has validation, apply it to the input
|
|
607
629
|
if (formProperties.validation &&
|
|
608
630
|
formProperties.type !== 'radio') {
|
|
609
|
-
this.applyValidation(input, formProperties.validation);
|
|
631
|
+
this.applyValidation(fragments.input, formProperties.validation);
|
|
610
632
|
}
|
|
611
633
|
// Create an error bubble and label element for the input
|
|
612
634
|
const errorBubble = this.createErrorBubble();
|
|
613
|
-
const label = this.createLabel(formProperties, input, errorBubble);
|
|
635
|
+
const label = this.createLabel(formProperties, fragments.input, fragments.overlay, errorBubble);
|
|
614
636
|
// If explicitly setting input as invalid, set invalid state and error message on render
|
|
615
637
|
if ((_a = formProperties.validation) === null || _a === void 0 ? void 0 : _a.invalid) {
|
|
616
638
|
const errorMessage = formProperties.validation.invalid.message;
|
|
617
|
-
input.setCustomValidity(errorMessage); // Prevents the invalid styling from resetting on blur
|
|
618
|
-
setErrorState(input, true, errorMessage);
|
|
639
|
+
fragments.input.setCustomValidity(errorMessage); // Prevents the invalid styling from resetting on blur
|
|
640
|
+
setErrorState(fragments.input, true, errorMessage);
|
|
619
641
|
}
|
|
620
642
|
// Append the label element to the form template
|
|
621
643
|
this.template.content.append(label);
|
|
@@ -636,7 +658,7 @@ const TttxForm = class {
|
|
|
636
658
|
return;
|
|
637
659
|
}
|
|
638
660
|
// Clone the template's content and store it in a variable
|
|
639
|
-
const formItems = this.template.content
|
|
661
|
+
const formItems = this.template.content;
|
|
640
662
|
// Bind event listeners to form elements
|
|
641
663
|
const properties = this._formSchema.properties;
|
|
642
664
|
const propertyKeys = Object.keys(properties);
|
|
@@ -684,6 +706,11 @@ const TttxForm = class {
|
|
|
684
706
|
formItem.checked = true;
|
|
685
707
|
}
|
|
686
708
|
break;
|
|
709
|
+
case 'select':
|
|
710
|
+
case 'select-one':
|
|
711
|
+
formItems.querySelector(`[name=overlay-${key}]`).selectedValue = this._data[key];
|
|
712
|
+
formItem.value = this._data[key];
|
|
713
|
+
break;
|
|
687
714
|
default:
|
|
688
715
|
formItem.value = this._data[key];
|
|
689
716
|
}
|
|
@@ -22,12 +22,23 @@ const TttxSelectBox = class {
|
|
|
22
22
|
}
|
|
23
23
|
async componentWillLoad() {
|
|
24
24
|
if (this.optionsData) {
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
const matchingItems = parsedOptionsData.filter((item) => { return item.value == this.selectedValue; });
|
|
25
|
+
this.setOptionsData();
|
|
26
|
+
const matchingItems = this._optionsData.filter((item) => { return item.value == this.selectedValue; });
|
|
28
27
|
this.selectedItem = (matchingItems.length > 0) ? matchingItems[0] : undefined;
|
|
29
28
|
}
|
|
30
29
|
}
|
|
30
|
+
async setOptionsData() {
|
|
31
|
+
this._optionsData = typeof this.optionsData === 'string' ? JSON.parse(this.optionsData) : this.optionsData;
|
|
32
|
+
}
|
|
33
|
+
async setSelectedItem(value) {
|
|
34
|
+
if (!value)
|
|
35
|
+
return;
|
|
36
|
+
const item = this._optionsData.find(x => x.value.toLowerCase() === value.toLowerCase());
|
|
37
|
+
if (!item)
|
|
38
|
+
return;
|
|
39
|
+
this.selectedValue = item.value;
|
|
40
|
+
this.selectedItem = item;
|
|
41
|
+
}
|
|
31
42
|
handleCloseSelectBox() {
|
|
32
43
|
this.open = false;
|
|
33
44
|
}
|
|
@@ -107,7 +118,6 @@ const TttxSelectBox = class {
|
|
|
107
118
|
render() {
|
|
108
119
|
if (!this.optionsData)
|
|
109
120
|
return;
|
|
110
|
-
this._optionsData = typeof this.optionsData === 'string' ? JSON.parse(this.optionsData) : this.optionsData;
|
|
111
121
|
return (h(Host, { class: this.inline ? 'inline' : 'block' }, this.label && h("div", { class: "label" }, this.label), h("div", { tabindex: "0", class: "dropdown-container" }, h("div", { class: "dropdown-selector", ref: (el) => this.dropdownSelector = el, onClick: this.onDropdownClicked.bind(this) }, this.dropdownSelectorContent()), this.open && (h("div", { class: "dropdown-body-container" }, h("div", { class: "dropdown-body", style: Object.assign({ width: `${this.dropdownSelector.offsetWidth}px` }, this.bodyOffset) }, this.searchEnabled &&
|
|
112
122
|
/* istanbul ignore next */
|
|
113
123
|
h("div", { class: "searchbox" }, h("tttx-standalone-input", { type: "text", label: "", required: true, showerrorbubble: false, iconleft: 'search', onInput: this.handleSearchInput.bind(this) })), h("div", { class: "dropdown-options-list" }, this._optionsData.map((option) => {
|
|
@@ -115,6 +125,9 @@ const TttxSelectBox = class {
|
|
|
115
125
|
}))))))));
|
|
116
126
|
}
|
|
117
127
|
get el() { return getElement(this); }
|
|
128
|
+
static get watchers() { return {
|
|
129
|
+
"optionsData": ["setOptionsData"]
|
|
130
|
+
}; }
|
|
118
131
|
};
|
|
119
132
|
TttxSelectBox.style = tttxSelectBoxCss;
|
|
120
133
|
|
package/dist/esm/tttx.js
CHANGED
|
@@ -14,5 +14,5 @@ const patchBrowser = () => {
|
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
patchBrowser().then(options => {
|
|
17
|
-
return bootstrapLazy([["tttx-data-pattern",[[1,"tttx-data-pattern",{"data":[1],"sorteroptions":[1],"filteroptions":[1],"filterheader":[1]}]]],["tttx-multiselect-box",[[1,"tttx-multiselect-box",{"optionsData":[1,"options-data"],"label":[1],"inline":[4],"placeholder":[1],"searchEnabled":[4,"search-enabled"],"htmlVisibleValue":[4,"html-visible-value"],"visibleValue":[1,"visible-value"],"open":[32],"unsavedSelectedItems":[32],"searchTerm":[32]},[[0,"closeSelectBox","handleCloseSelectBox"],[0,"blur","handleBlur"]]]]],["tttx-dialog-box",[[1,"tttx-dialog-box",{"data":[1025],"size":[1],"open":[1028],"allowOverflow":[4,"allow-overflow"],"elementSize":[32]},[[9,"resize","handleResize"]]]]],["tttx-
|
|
17
|
+
return bootstrapLazy([["tttx-data-pattern",[[1,"tttx-data-pattern",{"data":[1],"sorteroptions":[1],"filteroptions":[1],"filterheader":[1]}]]],["tttx-form",[[1,"tttx-form",{"formschema":[1025],"data":[1032],"submit":[64],"setSelectOptions":[64]}]]],["tttx-multiselect-box",[[1,"tttx-multiselect-box",{"optionsData":[1,"options-data"],"label":[1],"inline":[4],"placeholder":[1],"searchEnabled":[4,"search-enabled"],"htmlVisibleValue":[4,"html-visible-value"],"visibleValue":[1,"visible-value"],"open":[32],"unsavedSelectedItems":[32],"searchTerm":[32]},[[0,"closeSelectBox","handleCloseSelectBox"],[0,"blur","handleBlur"]]]]],["tttx-dialog-box",[[1,"tttx-dialog-box",{"data":[1025],"size":[1],"open":[1028],"allowOverflow":[4,"allow-overflow"],"elementSize":[32]},[[9,"resize","handleResize"]]]]],["tttx-tree-view",[[1,"tttx-tree-view",{"data":[1040],"firstSelected":[1028,"first-selected"],"treeData":[32],"selectedId":[32]}]]],["tttx-checkbox",[[0,"tttx-checkbox",{"checkboxId":[1,"checkbox-id"],"label":[1],"inline":[4],"indeterminate":[4],"checked":[4]}]]],["tttx-dialog",[[1,"tttx-dialog",{"header":[1],"type":[1],"size":[1],"open":[4],"allowOverflow":[4,"allow-overflow"],"closeEnabled":[4,"close-enabled"],"elementSize":[32]},[[9,"resize","handleResize"]]]]],["tttx-expander",[[1,"tttx-expander",{"name":[1],"open":[4],"lefticon":[1],"lefticoncolor":[1],"isExpanded":[32]}]]],["tttx-tabs",[[2,"tttx-tabs",{"tabsName":[1,"tabs-name"],"navigation":[4],"wide":[4],"tabs":[1],"_tabs":[32]},[[0,"keydown","handleKeyDown"]]]]],["tttx-checkbox-group",[[1,"tttx-checkbox-group"]]],["tttx-checkbox-group-caption",[[4,"tttx-checkbox-group-caption"]]],["tttx-checkbox-group-heading",[[4,"tttx-checkbox-group-heading"]]],["tttx-keyvalue-block",[[1,"tttx-keyvalue-block",{"keyvalues":[1],"horizontal":[4],"spacedout":[4],"_elements":[32]}]]],["tttx-loading-spinner",[[1,"tttx-loading-spinner",{"loadingMessage":[1028,"loading-message"],"size":[1025]}]]],["tttx-percentage-bar",[[2,"tttx-percentage-bar",{"percentage":[8],"thresholds":[1],"color":[1],"min":[1],"labelid":[1],"_percentage":[32],"_ranges":[32],"_min":[32]}]]],["tttx-qrcode",[[1,"tttx-qrcode",{"link":[1025],"size":[1026]}]]],["tttx-tag",[[1,"tttx-tag",{"text":[1],"color":[1],"textColor":[1,"text-color"]}]]],["tttx-textarea",[[2,"tttx-textarea",{"label":[1],"secondarylabel":[1],"showerrormsg":[4],"showerrorbubble":[4],"errormsg":[1],"rows":[2],"textareaautofocus":[4],"inputkeyhint":[1],"inputindex":[8],"inputtitle":[1],"disabled":[4],"maxlength":[8],"name":[1],"placeholder":[1],"readonly":[8],"required":[4],"value":[1032]}]]],["tttx-icon",[[1,"tttx-icon",{"icon":[1],"color":[1]}]]],["tttx-select-box",[[1,"tttx-select-box",{"optionsData":[1,"options-data"],"label":[1],"inline":[4],"placeholder":[1],"searchEnabled":[4,"search-enabled"],"selectedValue":[1,"selected-value"],"open":[32],"selectedItem":[32],"searchTerm":[32],"setSelectedItem":[64]},[[0,"closeSelectBox","handleCloseSelectBox"],[0,"blur","handleBlur"]]]]],["tttx-filter_4",[[1,"tttx-filter",{"filterKey":[1,"filter-key"],"filterOptions":[1,"filter-options"],"showSelectAll":[4,"show-select-all"],"showSearchField":[4,"show-search-field"],"showOptionIcons":[4,"show-option-icons"],"filterButtonStyle":[1,"filter-button-style"],"filterHeader":[1,"filter-header"],"defaultFilterOptions":[1,"default-filter-options"],"popoverWidth":[1,"popover-width"],"showPopover":[32],"displayedFilterSettings":[32],"selectedFilters":[32],"filterSearchTerm":[32],"allSelected":[32]},[[0,"closeFilter","handleCloseFilter"]]],[1,"tttx-list",{"data":[1025],"name":[1],"_data":[32]}],[1,"tttx-sorter",{"sorterKey":[1,"sorter-key"],"defaultSortDirection":[1,"default-sort-direction"],"fieldOptionsData":[1,"field-options-data"],"defaultOption":[1,"default-option"],"selectedField":[32],"sortDirection":[32],"dropdownExpand":[32],"dropdownOptions":[32]},[[0,"closeSorter","handleCloseSorter"]]],[1,"tttx-toolbar",{"border":[4],"viewSize":[32]},[[9,"resize","handleResize"]]]]],["tttx-button",[[1,"tttx-button",{"notext":[4],"icon":[1],"iconposition":[1],"iconcolor":[1025],"design":[1]}]]],["tttx-standalone-input",[[2,"tttx-standalone-input",{"label":[1],"secondarylabel":[1],"showerrormsg":[4],"showerrorbubble":[4],"errormsg":[1],"iconleft":[1],"iconleftcolor":[1],"iconright":[1],"iconrightcolor":[1],"inputicon":[1],"inputiconcolor":[1],"inline":[4],"inputautocapitalize":[1],"inputautofocus":[4],"inputkeyhint":[1],"inputindex":[8],"inputtitle":[1],"autocomplete":[1],"checked":[4],"disabled":[4],"max":[8],"maxlength":[8],"min":[8],"minlength":[8],"name":[1],"pattern":[1],"placeholder":[1],"readonly":[8],"required":[4],"step":[8],"type":[1],"value":[1032]}]]]], options);
|
|
18
18
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,c as t,h as o,H as i}from"./p-65bb4035.js";import{p as n,d as r}from"./p-88ee2406.js";import"./p-112455b1.js";function a(e,t,o,i){let n;if(n=void 0!==i?i.querySelector(".errorBubble"):"label"===e.parentElement.nodeName.toLowerCase()?e.parentElement.querySelector(".errorBubble"):e.parentElement.parentElement.querySelector(".errorBubble"),n)if(t){e.classList.add("invalid"),n.classList.add("visible");const t=document.createElement("span");t.className="material-symbols-rounded",t.textContent="warning",n.innerHTML="",n.append(t),n.append(o)}else n.classList.remove("visible"),e.classList.remove("invalid"),n.innerHTML=""}const l=class{constructor(o){e(this,o),this.dataSubmitted=t(this,"dataSubmitted",7),this.dataChanged=t(this,"dataChanged",7),this.template=document.createElement("template"),this.formschema=void 0,this.data=void 0}onFormSchemaChange(e){if(!this.data&&this.form&&this._formSchema){const e=new FormData(this.form);this._data=Object.fromEntries(Object.keys(this._formSchema.properties).map((t=>[t,e.get(t)])))}this._formSchema="string"==typeof e?JSON.parse(e):e}onDataChange(e){this._data="string"==typeof e?JSON.parse(e):e}fieldChanged(e){this.dataChanged.emit({name:e.target.name,value:e.target.value})}async submit(){this.submitButton.click()}async setSelectOptions(e,t){const o=this.fieldset.querySelector(`[name=${e}]`),i=this.fieldset.querySelector(`[name=overlay-${e}]`),n=new DocumentFragment;for(const e of t){const t=document.createElement("option");t.innerText=e.label,t.value=e.value,n.appendChild(t)}o.replaceChildren(n),i.optionsData=t,await i.setSelectedItem(t[0].value)}doSubmit(e){e.preventDefault();const t=new FormData(e.target),o=this._formSchema.properties;for(const e of Object.keys(o))"checkbox"!==o[e].form.type||t.has(e)||t.append(e,"off");this.dataSubmitted.emit(t)}componentWillLoad(){this.onFormSchemaChange(this.formschema),this.data&&this.onDataChange(this.data)}componentWillRender(){this.template=document.createElement("template"),this.populateFormFromSchema()}createSelect(e,t){var o,i,n,r;const a=document.createElement("select");a.setAttribute("name",e),t.options.forEach((e=>{this.appendOption(a,e)})),(null===(o=this._data)||void 0===o?void 0:o[e])&&a.classList.remove("placeholder");const l=document.createElement("tttx-select-box");l.optionsData=null===(i=t.options)||void 0===i?void 0:i.filter((e=>!e.placeholder)),l.placeholder=null===(r=null===(n=t.options)||void 0===n?void 0:n.filter((e=>e.placeholder))[0])||void 0===r?void 0:r.label,l.inline=!1,l.searchEnabled=!0,l.style.width="100%",l.style.marginTop="6px",l.setAttribute("name","overlay-"+e);const s=document.createDocumentFragment();return s.append(l),a.style.display="none",l.addEventListener("selectItemEvent",(function(e){a.value=e.detail.value,a.onblur({target:a})})),{input:a,overlay:s}}appendOption(e,t){const o=document.createElement("option");o.setAttribute("value",t.value),t.placeholder&&(o.setAttribute("disabled",""),o.setAttribute("selected",""),o.setAttribute("hidden",""),e.classList.add("placeholder")),t.label&&(o.innerHTML=n.sanitize(t.label,r)),e.appendChild(o)}createInput(e,t){var o;const i=document.createElement("input");return i.type=t.type,i.name=e,i.placeholder=null!==(o=t.placeholder)&&void 0!==o?o:"",i.autocomplete="off",i.autocapitalize="off",t.readonly&&(i.readOnly=!0),i}createTextArea(e,t){var o;const i=document.createElement("textarea");return i.name=e,i.placeholder=null!==(o=t.placeholder)&&void 0!==o?o:"",i.autocomplete="off",i.autocapitalize="off",t.readonly&&(i.readOnly=!0),i}createStartEndDateComponent(e,t){const o=document.createElement("input"),i=document.createElement("input");let n,r;o.type=i.type="date",o.name=`${e}-startdate`,i.name=`${e}-enddate`,o.setAttribute("data-formkey",e),i.setAttribute("data-formkey",e),t.readonly&&(o.readOnly=!0,i.readOnly=!0),this.applyValidation(o,{required:{message:"Please enter a start date"},dateCompare:{to:i.name}}),this.applyValidation(i,{required:{message:"Please enter an end date"},dateCompare:{with:o.name,message:"End date cannot be before the start date"}}),t.includeTime&&(n=document.createElement("input"),r=document.createElement("input"),n.type=r.type="time",n.name=`${e}-starttime`,r.name=`${e}-endtime`,n.setAttribute("data-formkey",e),r.setAttribute("data-formkey",e),t.readonly&&(n.readOnly=!0,r.readOnly=!0),this.applyValidation(n,{required:{message:"Please enter a start time"}}),this.applyValidation(r,{required:{message:"Please enter an end time"}}));const a=document.createElement("label");a.innerText="Start date";const l=document.createElement("label");l.innerText="End date";const s=document.createElement("div"),d=document.createElement("div");return s.className=d.className="outer-container inputBlock",a.className=l.className="flex-label",s.append(o),n&&s.append(n),a.append(s),a.append(this.createErrorBubble()),d.append(i),r&&d.append(r),l.append(d),l.append(this.createErrorBubble()),{start:a,end:l}}applyValidation(e,t){var o,i;t.required&&(e.setAttribute("required",""),e.setAttribute("data-required",null!==(o=t.required.message)&&void 0!==o?o:"")),t.pattern&&(e.setAttribute("pattern",t.pattern.pattern),e.setAttribute("data-pattern",null!==(i=t.pattern.message)&&void 0!==i?i:"")),t.badInput&&e.setAttribute("data-badinput",t.badInput.message),t.minmax&&(e.setAttribute("min",t.minmax.min),e.setAttribute("max",t.minmax.max),e.setAttribute("data-range",t.minmax.message)),t.maxlength&&e.setAttribute("maxlength",t.maxlength),t.dateCompare&&(t.dateCompare.message&&t.dateCompare.with&&(e.setAttribute("data-compare",t.dateCompare.message),e.setAttribute("data-compare-with",t.dateCompare.with)),t.dateCompare.to&&e.setAttribute("data-compare-to",t.dateCompare.to))}createErrorBubble(){const e=document.createElement("div");return e.className="errorBubble",e}appendCheckboxInput(e,t,o){if(e.label){const e=document.createElement("br");o.appendChild(e)}if(o.appendChild(t),!e.inlineLabel)return;const i=document.createElement("span");i.className="inlineLabel",i.textContent=e.inlineLabel,o.appendChild(i)}createLabel(e,t,o,i){var n;const r=document.createElement("div");let a="outer-container inputBlock";const l=document.createElement("label");if(l.innerText=e.label,!(null===(n=e.validation)||void 0===n?void 0:n.required)&&e.label){const e=document.createElement("span");e.className="optional",e.innerHTML=" (optional)",l.appendChild(e)}return"radio"===e.type&&(a+=" radioBlock"),r.className=a,e.readonly&&l.classList.add("readonly"),"checkbox"===e.type?this.appendCheckboxInput(e,t,l):(o&&r.appendChild(o),r.appendChild(t)),"checkbox"!==e.type&&l.appendChild(r),l.appendChild(i),l}createRadio(e,t){var o,i;const n=new DocumentFragment;for(const r of t.options){const a=document.createElement("input");a.type="radio",a.name=e,a.value=r.value,(null===(o=null==t?void 0:t.validation)||void 0===o?void 0:o.required)&&(a.setAttribute("required","required"),a.setAttribute("data-required",null!==(i=t.validation.required.message)&&void 0!==i?i:""));const l=document.createElement("span");l.innerText=r.label,n.appendChild(a),n.appendChild(l),n.appendChild(document.createElement("br"))}return n}populateFormFromSchema(){var e;if(!this._formSchema)return;const t=this._formSchema.properties,o=Object.keys(t);for(const i of o){const o=t[i].form;if("startenddate"===o.type){const{start:e,end:t}=this.createStartEndDateComponent(i,o);this.template.content.append(e),this.template.content.append(t);continue}let n={};switch(o.type){case"select":n=this.createSelect(i,o);break;case"radio":n.input=this.createRadio(i,o);break;case"textarea":n.input=this.createTextArea(i,o);break;default:n.input=this.createInput(i,o)}o.validation&&"radio"!==o.type&&this.applyValidation(n.input,o.validation);const r=this.createErrorBubble(),l=this.createLabel(o,n.input,n.overlay,r);if(null===(e=o.validation)||void 0===e?void 0:e.invalid){const e=o.validation.invalid.message;n.input.setCustomValidity(e),a(n.input,!0,e)}this.template.content.append(l)}}componentDidRender(){if(!this._formSchema)return;const e=this.template.content,t=this._formSchema.properties,o=Object.keys(t);for(const i of o){const o=e.querySelectorAll(`[name^=${i}]`);for(const e of o)e.oninvalid=this.validityCheckWrapper.bind(this),e.onblur=this.validityCheckWrapper.bind(this),e.onkeyup=this.fieldChanged.bind(this),e.onchange=this.fieldChanged.bind(this),"select"===t[i].form.type&&e.classList.contains("placeholder")&&e.addEventListener("change",(()=>{e.classList.remove("placeholder")})),"startenddate"===t[i].form.type&&e.hasAttribute("data-compare-with")&&(e.oninvalid=this.endDateComparisonValidator.bind(this),e.onblur=this.endDateComparisonValidator.bind(this)),"startenddate"===t[i].form.type&&"time"===e.type&&(e.oninvalid=this.startEndTimeComparitor.bind(this),e.onblur=this.startEndTimeComparitor.bind(this)),"startenddate"===t[i].form.type&&e.hasAttribute("data-compare-to")&&(e.oninvalid=this.startDateComparisonValidator.bind(this),e.onblur=this.startDateComparisonValidator.bind(this))}if(this._data&&Object.keys(this._data).length>0){const t=Object.keys(this._data);for(const o of t){const t=e.querySelectorAll(`[name=${o}]`);for(const i of t)switch(i.type){case"checkbox":"on"===this._data[o]&&(i.checked=!0);break;case"radio":i.value===this._data[o]&&(i.checked=!0);break;case"select":case"select-one":e.querySelector(`[name=overlay-${o}]`).selectedValue=this._data[o],i.value=this._data[o];break;default:i.value=this._data[o]}}}this.fieldset.replaceChildren(e)}startEndTimeComparitor(e){var t,o;const i=e.target,n=i.getAttribute("data-formkey"),r=Array.from(i.parentElement.parentElement.parentElement.querySelectorAll(`[data-formkey=${n}]`));if(4===r.length){const n=r.find((e=>e.name.endsWith("starttime"))),l=r.find((e=>e.name.endsWith("endtime"))),s=r.find((e=>e.name.endsWith("startdate"))),d=r.find((e=>e.name.endsWith("enddate")));n.valueAsNumber>=l.valueAsNumber&&(null===(t=s.valueAsDate)||void 0===t?void 0:t.valueOf())===(null===(o=d.valueAsDate)||void 0===o?void 0:o.valueOf())?(a(l,!0,"End time cannot be the same or before the start time"),i.name.endsWith("starttime")&&this.validityCheckWrapper(e)):(l.setCustomValidity(""),a(l,!1,null),this.validityCheckWrapper(e))}}clearTimeComparitor(e){const t=e.target,o=t.getAttribute("data-formkey"),i=Array.from(t.parentElement.parentElement.parentElement.querySelectorAll(`[type=time][data-formkey=${o}]`));if(i.length){const e=i.find((e=>e.name.endsWith("endtime")));e.setCustomValidity(""),a(e,!1,null)}}startDateComparisonValidator(e){const t=e.target,o=t.getAttribute("data-compare-to"),i=t.parentElement.parentElement.parentElement.querySelector(`[name=${o}]`);this.endDateComparisonValidator({target:i},!0),this.validityCheckWrapper(e)}endDateComparisonValidator(e,t=!1){var o,i,n,r;const l=e.target;if(!l.value&&t)return;const s=l.getAttribute("data-compare-with"),d=l.parentElement.parentElement.parentElement.querySelector(`[name=${s}]`);(null===(o=l.valueAsDate)||void 0===o?void 0:o.valueOf())<(null===(i=d.valueAsDate)||void 0===i?void 0:i.valueOf())?(l.setCustomValidity(l.getAttribute("data-compare")),a(l,!0,l.getAttribute("data-compare"))):(null===(n=l.valueAsDate)||void 0===n?void 0:n.valueOf())===(null===(r=d.valueAsDate)||void 0===r?void 0:r.valueOf())?(l.setCustomValidity(""),this.validityCheckWrapper(e),this.startEndTimeComparitor(e)):(this.clearTimeComparitor(e),this.validityCheckWrapper(e))}validityCheckWrapper(e){const{target:t,hasError:o,errorMessage:i}=function(e){var t,o,i,n;e.preventDefault&&e.preventDefault();const r=e.target;let a=!0,l="";switch(r.value.length&&!r.value.replace(/\s/g,"").length?(l="This field cannot be left blank",r.setCustomValidity(l)):(l="",r.setCustomValidity&&r.setCustomValidity("")),!0){case r.validity.valueMissing:l=null!==(t=r.dataset.required)&&void 0!==t?t:"This field is required";break;case r.validity.patternMismatch:l=null!==(o=r.dataset.pattern)&&void 0!==o?o:"Incorrect format";break;case r.validity.badInput:l=null!==(i=r.dataset.badinput)&&void 0!==i?i:"Wrong input type";break;case r.validity.rangeOverflow||r.validity.rangeUnderflow:l=null!==(n=r.dataset.range)&&void 0!==n?n:"Invalid value";break;case r.validity.customError:l=r.validationMessage;break;default:a=!1}return{target:r,hasError:a,errorMessage:l}}(e);a(t,o,i)}render(){return o(i,null,o("form",{ref:e=>this.form=e,onSubmit:this.doSubmit.bind(this)},o("fieldset",{ref:e=>this.fieldset=e}),o("input",{type:"submit",ref:e=>this.submitButton=e,style:{display:"none"}})))}static get watchers(){return{formschema:["onFormSchemaChange"],data:["onDataChange"]}}};l.style='.material-symbols-rounded{font-variation-settings:"FILL" 1, "wght" 400, "GRAD" 0, "opsz" 24}.material-symbols-rounded{font-variation-settings:"FILL" 1, "wght" 400, "GRAD" 0, "opsz" 24}label{font-weight:500;font-size:16px;line-height:18.752px;color:#212121}label .optional{color:#757575;font-weight:normal}label .outer-container{position:relative}label .outer-container .left-icons,label .outer-container .right-icons{display:flex;position:absolute;height:24px;gap:8px}label .outer-container .left-icons tttx-icon,label .outer-container .right-icons tttx-icon{height:24px;width:24px}label .outer-container .left-icons{left:8px}label .outer-container .right-icons{right:8px}label .outer-container input,label .outer-container textarea{color:#212121;box-sizing:border-box;border:1px solid #d5d5d5;border-radius:4px;padding:0;padding-left:16px;padding-right:16px;margin-top:4px;}label .outer-container input.has-input-icon,label .outer-container textarea.has-input-icon{padding-left:40px}label .outer-container input.has-input-icon.has-left-icon,label .outer-container textarea.has-input-icon.has-left-icon{padding-left:72px}label .outer-container input.has-left-icon,label .outer-container textarea.has-left-icon{padding-left:40px}label .outer-container input.has-right-icon,label .outer-container textarea.has-right-icon{padding-right:40px}label .outer-container input.invalid,label .outer-container textarea.invalid{border:1px solid #dc0000}label .outer-container input:not([type=submit]),label .outer-container textarea:not([type=submit]){font-family:"Roboto", serif;width:100%;height:36px;font-size:16px;line-height:18.752px}label .outer-container input[type=radio],label .outer-container textarea[type=radio]{width:20px;height:20px}label .outer-container input[type=date],label .outer-container textarea[type=date]{background:white;display:block;min-width:calc(100% - 18px);line-height:37px}label .outer-container input[readonly],label .outer-container textarea[readonly]{cursor:default;pointer-events:none;user-select:none;color:gray}label .outer-container input:focus,label .outer-container textarea:focus{border-color:#1479c6}label .outer-container input:focus-visible,label .outer-container textarea:focus-visible{outline:none}label .outer-container textarea{padding:8px;height:auto;min-height:100px;resize:vertical}label .outer-container.inputBlock{display:flex;align-items:center;line-height:21px}label .outer-container.inputBlock .left-icons,label .outer-container.inputBlock .right-icons{margin-top:4px}label .outer-container.inputBlock.readonly{pointer-events:none;user-select:none;color:gray}label .outer-container.inputBlock.radioBlock{display:block}label .outer-container.inputInline{display:flex;white-space:nowrap;align-items:center;margin:0}label .outer-container.inputInline input{margin-top:0}label .secondarylabel{color:#757575;font-size:14px;line-height:16.408px;font-weight:normal;display:flex;margin-top:4px}label .errorBubble{position:relative;font-size:14px;line-height:16.408px;font-weight:normal;width:100%;font-family:"Roboto", sans-serif;color:#dc0000;display:flex;align-content:center;align-items:center;justify-items:center;margin-top:4px}label .errorBubble:not(.visible){display:none}label .errorBubble span{color:#dc0000;font-size:16px;margin-right:4px}.material-symbols-rounded{font-family:"Material Symbols Rounded", sans-serif;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:#9e9e9e}button{cursor:pointer}.button{font-family:Roboto, serif;box-sizing:border-box;height:36px;min-width:36px;padding:0;margin:0;background:transparent;color:#212121;border:1px solid #c8c8c8;border-radius:4px;text-transform:uppercase;display:flex;justify-content:left;align-items:center;font-size:14px;font-weight:500}.button-content{display:block;padding:0 16px}.icon-left,.icon-right{margin-top:4px}.iconleft{padding-left:8px}.iconleft .button-content{padding-left:4px}.iconright{padding-right:8px}.iconright .button-content{padding-right:4px}.notext{padding:0 6px}.button:active{background:rgba(17, 17, 17, 0.2);border:1px solid #d5d5d5}.primary{background:#1479c6;border:1px solid #1479c6;color:white}.primary:active{background:#1464a2;border:1px solid #1464a2}.borderless{background:transparent;border:none;color:#212121}.borderless:active{background:rgba(17, 17, 17, 0.2);border:none}.borderless-circle{background:transparent;border:none;color:#212121;border-radius:50%}.borderless-circle:active{border:none}.borderless-circle:focus{border-color:transparent}.danger{background:#dc0000;border:1px solid #dc0000;color:white}.danger:active{background:#b00000;border:1px solid #b00000}.disabled{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}.disabled:active{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}@media (hover: hover){.button:hover{background:rgba(17, 17, 17, 0.1);border:1px solid #d5d5d5}.primary:hover{background:#146eb3;border:1px solid #146eb3}.borderless:hover{background:rgba(17, 17, 17, 0.1);border:none}.borderless-circle:hover{background:rgba(17, 17, 17, 0.1);border:none}.danger:hover{background:#c60000;border:1px solid #c60000}.disabled:hover{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}}:host{display:block}fieldset{margin:0;padding:0;border:none}label{display:block;position:relative;margin-bottom:16px}.inlineLabel{font-weight:400;display:inline-block;vertical-align:top;padding-top:4px}input[type=checkbox]{width:18px;height:18px}input~label{font-weight:400}select{font-family:"Roboto", serif;box-sizing:border-box;width:100%;height:36px;padding:0 16px;font-size:16px;border:1px solid #d5d5d5;border-radius:4px;margin-top:4px}.placeholder{color:#9e9e9e}.placeholder option{color:initial}select.invalid:invalid{border:1px solid #dc0000}select~.errorBubble{position:relative;font-size:14px;font-weight:normal;width:100%;font-family:"Roboto", sans-serif;color:#dc0000;display:flex;align-content:center;align-items:center;justify-items:center}select~.errorBubble:not(.visible){visibility:hidden}select~.errorBubble span{color:#dc0000;font-size:16px;margin-right:4px;height:16px}select.invalid:invalid~.errorBubble{position:relative;font-size:14px;font-weight:normal;width:100%;font-family:"Roboto", sans-serif;color:#dc0000;visibility:visible}select:focus{border-color:#1479c6}select:focus-visible{outline:none}.button{padding:0 16px}.footer{display:flex;gap:16px;flex-direction:row-reverse}label.flex-label{display:flex;flex-direction:column;width:300px;box-sizing:border-box}label.flex-label input[type=date]{flex-grow:1;min-width:auto}label.flex-label input[type=time]{min-width:auto;text-align:center;width:180px;margin-left:16px}';export{l as tttx_form}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,c as o,h as i,F as e,H as s,g as n}from"./p-65bb4035.js";import{p as d,d as r}from"./p-88ee2406.js";import"./p-112455b1.js";const l=class{constructor(i){t(this,i),this.selectItemEvent=o(this,"selectItemEvent",3),this.toggleOpen=o(this,"toggleOpen",3),this.bodyOffset={},this.optionsData=null,this.label=void 0,this.inline=void 0,this.placeholder="",this.searchEnabled=void 0,this.selectedValue=void 0,this.open=!1,this.selectedItem=void 0,this.searchTerm=""}async componentWillLoad(){if(this.optionsData){this.setOptionsData();const t=this._optionsData.filter((t=>t.value==this.selectedValue));this.selectedItem=t.length>0?t[0]:void 0}}async setOptionsData(){this._optionsData="string"==typeof this.optionsData?JSON.parse(this.optionsData):this.optionsData}async setSelectedItem(t){if(!t)return;const o=this._optionsData.find((o=>o.value.toLowerCase()===t.toLowerCase()));o&&(this.selectedValue=o.value,this.selectedItem=o)}handleCloseSelectBox(){this.open=!1}handleBlur(){this.open=!1,this.toggleOpen.emit(!1)}onDropdownClicked(){this.open=!this.open,this.searchTerm="",this.calculateDropdownMenuOffset(),this.toggleOpen.emit(this.open)}onItemSelected(t){this.selectedItem=t,this.selectItemEvent.emit(this.selectedItem),this.handleBlur()}dropdownSelectorContent(){let t,o;const s=i("tttx-icon",{icon:this.open?"expand_less":"expand_more",color:"black"});let n=i("div",{class:"dropdown-selector-chevron"},s);return this.selectedItem?this.selectedItem.html?(t=i("div",{title:this.selectedItem.label,class:"truncated-text",innerHTML:this.selectedItem.html}),i(e,null,t,n)):(t=i("div",{title:this.selectedItem.label,class:"truncated-text"},this.selectedItem.label),this.selectedItem.description&&(o=i("div",{class:"description"},i("p",null,this.selectedItem.description)),n=i("div",{class:"dropdown-selector-chevron-offset"},s)),i(e,null,i("div",{class:"left-wrapper"},t,o),n)):(t=i("div",{class:"placeholder"},this.placeholder),i(e,null,t,n))}dropdownOption(t){const o=this.searchEnabled&&-1===t.label.toLowerCase().indexOf(this.searchTerm.toLowerCase()),e=this.selectedItem&&t.value===this.selectedItem.value;if(t.html){const s=d.sanitize(t.html,r);return i("div",{class:`dropdown-option ${o?"hidden":""} ${e?"selected":""}`,onClick:this.onItemSelected.bind(this,t),key:t.label,innerHTML:s})}return t.description?i("div",{class:`dropdown-option ${o?"hidden":""} ${e?"selected":""}`,onClick:this.onItemSelected.bind(this,t),key:t.label},t.label,i("div",{class:"description-dd"},i("p",null,t.description))):i("div",{class:`dropdown-option ${o?"hidden":""} ${e?"selected":""}`,onClick:this.onItemSelected.bind(this,t),key:t.label},t.label)}handleSearchInput(t){this.searchTerm=t.target.value}calculateDropdownMenuOffset(){const t=this.el.shadowRoot.querySelector(".dropdown-selector"),o=this.dropdownSelector.getBoundingClientRect().bottom;let i=Math.min(368,36*this._optionsData.length)+8;this.searchEnabled&&(i+=52);const e=t.getBoundingClientRect();this.bodyOffset=o+i>window.innerHeight?{top:window.innerHeight-(i+16)+"px",position:"fixed",width:`${t.offsetWidth}px`,zIndex:"10"}:{position:"fixed",left:e.left,top:e.top,width:e.width-2+"px",zIndex:"10"}}render(){if(this.optionsData)return i(s,{class:this.inline?"inline":"block"},this.label&&i("div",{class:"label"},this.label),i("div",{tabindex:"0",class:"dropdown-container"},i("div",{class:"dropdown-selector",ref:t=>this.dropdownSelector=t,onClick:this.onDropdownClicked.bind(this)},this.dropdownSelectorContent()),this.open&&i("div",{class:"dropdown-body-container"},i("div",{class:"dropdown-body",style:Object.assign({width:`${this.dropdownSelector.offsetWidth}px`},this.bodyOffset)},this.searchEnabled&&i("div",{class:"searchbox"},i("tttx-standalone-input",{type:"text",label:"",required:!0,showerrorbubble:!1,iconleft:"search",onInput:this.handleSearchInput.bind(this)})),i("div",{class:"dropdown-options-list"},this._optionsData.map((t=>this.dropdownOption(t))))))))}get el(){return n(this)}static get watchers(){return{optionsData:["setOptionsData"]}}};l.style='.material-symbols-rounded{font-variation-settings:"FILL" 1, "wght" 400, "GRAD" 0, "opsz" 24}:host{display:flex;gap:4px}.label{font-size:16px;font-weight:500;line-height:18.752px;color:#212121}:host(.inline) .label{padding-top:8px}:host(.block){flex-direction:column}.dropdown-container{position:relative;display:flex;flex-direction:column;width:100%}.dropdown-container:focus-visible{outline:none}.dropdown-container:focus .dropdown-selector{border:1px solid #1479c6}.dropdown-selector,.dropdown-body{display:flex;border-radius:4px;background-color:white}.dropdown-selector{min-height:36px;box-sizing:border-box;align-items:center;gap:8px;padding:4px 8px 4px 16px;cursor:pointer;justify-content:space-between;border:1px solid #d5d5d5;display:flex;flex-direction:row}.dropdown-selector>.left-wrapper{flex:1;min-width:0}.description{color:#757575;font-size:14px;line-height:16.408px}.description>p{margin:0}.description-dd{color:#757575;font-size:14px;line-height:16.408px}.description-dd>p{margin:0}.truncated-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#212121;font-size:16px;line-height:18.752px}.dropdown-selector-chevron{height:24px}.dropdown-selector-chevron-offset{height:24px}.dropdown-selector-chevron>tttx-icon{cursor:pointer}.dropdown-body-container{position:relative;z-index:2}.dropdown-body{position:absolute;flex-direction:column;box-shadow:0px 1px 5px #1111114D;padding-bottom:8px;border:1px solid #d5d5d5}.dropdown-options-list{display:flex;flex-direction:column;overflow-y:auto;max-height:368px}.dropdown-option{padding:6px 8px 6px 16px;cursor:pointer}.dropdown-option:hover{background-color:#1111110d}.dropdown-option:active,.dropdown-option.selected{background-color:#ebfbfc}.placeholder{color:#9e9e9e;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}.searchbox{padding:8px 16px}.searchbox tttx-standalone-input{margin-top:-4px}.hidden{display:none}';export{l as tttx_select_box}
|
package/dist/tttx/tttx.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as e,b as t}from"./p-65bb4035.js";export{s as setNonce}from"./p-65bb4035.js";(()=>{const t=import.meta.url,o={};return""!==t&&(o.resourcesUrl=new URL(".",t).href),e(o)})().then((e=>t([["p-7f1452fb",[[1,"tttx-data-pattern",{data:[1],sorteroptions:[1],filteroptions:[1],filterheader:[1]}]]],["p-f8c7f162",[[1,"tttx-multiselect-box",{optionsData:[1,"options-data"],label:[1],inline:[4],placeholder:[1],searchEnabled:[4,"search-enabled"],htmlVisibleValue:[4,"html-visible-value"],visibleValue:[1,"visible-value"],open:[32],unsavedSelectedItems:[32],searchTerm:[32]},[[0,"closeSelectBox","handleCloseSelectBox"],[0,"blur","handleBlur"]]]]],["p-c476e635",[[1,"tttx-dialog-box",{data:[1025],size:[1],open:[1028],allowOverflow:[4,"allow-overflow"],elementSize:[32]},[[9,"resize","handleResize"]]]]],["p-
|
|
1
|
+
import{p as e,b as t}from"./p-65bb4035.js";export{s as setNonce}from"./p-65bb4035.js";(()=>{const t=import.meta.url,o={};return""!==t&&(o.resourcesUrl=new URL(".",t).href),e(o)})().then((e=>t([["p-7f1452fb",[[1,"tttx-data-pattern",{data:[1],sorteroptions:[1],filteroptions:[1],filterheader:[1]}]]],["p-a144a5ec",[[1,"tttx-form",{formschema:[1025],data:[1032],submit:[64],setSelectOptions:[64]}]]],["p-f8c7f162",[[1,"tttx-multiselect-box",{optionsData:[1,"options-data"],label:[1],inline:[4],placeholder:[1],searchEnabled:[4,"search-enabled"],htmlVisibleValue:[4,"html-visible-value"],visibleValue:[1,"visible-value"],open:[32],unsavedSelectedItems:[32],searchTerm:[32]},[[0,"closeSelectBox","handleCloseSelectBox"],[0,"blur","handleBlur"]]]]],["p-c476e635",[[1,"tttx-dialog-box",{data:[1025],size:[1],open:[1028],allowOverflow:[4,"allow-overflow"],elementSize:[32]},[[9,"resize","handleResize"]]]]],["p-888fb9ee",[[1,"tttx-tree-view",{data:[1040],firstSelected:[1028,"first-selected"],treeData:[32],selectedId:[32]}]]],["p-7c3a76f3",[[0,"tttx-checkbox",{checkboxId:[1,"checkbox-id"],label:[1],inline:[4],indeterminate:[4],checked:[4]}]]],["p-20d3d8fb",[[1,"tttx-dialog",{header:[1],type:[1],size:[1],open:[4],allowOverflow:[4,"allow-overflow"],closeEnabled:[4,"close-enabled"],elementSize:[32]},[[9,"resize","handleResize"]]]]],["p-87b6e5a9",[[1,"tttx-expander",{name:[1],open:[4],lefticon:[1],lefticoncolor:[1],isExpanded:[32]}]]],["p-f247443b",[[2,"tttx-tabs",{tabsName:[1,"tabs-name"],navigation:[4],wide:[4],tabs:[1],_tabs:[32]},[[0,"keydown","handleKeyDown"]]]]],["p-c3ca37bb",[[1,"tttx-checkbox-group"]]],["p-0fb0d9eb",[[4,"tttx-checkbox-group-caption"]]],["p-78875ac9",[[4,"tttx-checkbox-group-heading"]]],["p-15b7a577",[[1,"tttx-keyvalue-block",{keyvalues:[1],horizontal:[4],spacedout:[4],_elements:[32]}]]],["p-fe6c321b",[[1,"tttx-loading-spinner",{loadingMessage:[1028,"loading-message"],size:[1025]}]]],["p-be16cf2d",[[2,"tttx-percentage-bar",{percentage:[8],thresholds:[1],color:[1],min:[1],labelid:[1],_percentage:[32],_ranges:[32],_min:[32]}]]],["p-69642b71",[[1,"tttx-qrcode",{link:[1025],size:[1026]}]]],["p-e7b7d2e2",[[1,"tttx-tag",{text:[1],color:[1],textColor:[1,"text-color"]}]]],["p-e0662bf6",[[2,"tttx-textarea",{label:[1],secondarylabel:[1],showerrormsg:[4],showerrorbubble:[4],errormsg:[1],rows:[2],textareaautofocus:[4],inputkeyhint:[1],inputindex:[8],inputtitle:[1],disabled:[4],maxlength:[8],name:[1],placeholder:[1],readonly:[8],required:[4],value:[1032]}]]],["p-bcf3844e",[[1,"tttx-icon",{icon:[1],color:[1]}]]],["p-e6514754",[[1,"tttx-select-box",{optionsData:[1,"options-data"],label:[1],inline:[4],placeholder:[1],searchEnabled:[4,"search-enabled"],selectedValue:[1,"selected-value"],open:[32],selectedItem:[32],searchTerm:[32],setSelectedItem:[64]},[[0,"closeSelectBox","handleCloseSelectBox"],[0,"blur","handleBlur"]]]]],["p-f27adb48",[[1,"tttx-filter",{filterKey:[1,"filter-key"],filterOptions:[1,"filter-options"],showSelectAll:[4,"show-select-all"],showSearchField:[4,"show-search-field"],showOptionIcons:[4,"show-option-icons"],filterButtonStyle:[1,"filter-button-style"],filterHeader:[1,"filter-header"],defaultFilterOptions:[1,"default-filter-options"],popoverWidth:[1,"popover-width"],showPopover:[32],displayedFilterSettings:[32],selectedFilters:[32],filterSearchTerm:[32],allSelected:[32]},[[0,"closeFilter","handleCloseFilter"]]],[1,"tttx-list",{data:[1025],name:[1],_data:[32]}],[1,"tttx-sorter",{sorterKey:[1,"sorter-key"],defaultSortDirection:[1,"default-sort-direction"],fieldOptionsData:[1,"field-options-data"],defaultOption:[1,"default-option"],selectedField:[32],sortDirection:[32],dropdownExpand:[32],dropdownOptions:[32]},[[0,"closeSorter","handleCloseSorter"]]],[1,"tttx-toolbar",{border:[4],viewSize:[32]},[[9,"resize","handleResize"]]]]],["p-61741832",[[1,"tttx-button",{notext:[4],icon:[1],iconposition:[1],iconcolor:[1025],design:[1]}]]],["p-5b8bb736",[[2,"tttx-standalone-input",{label:[1],secondarylabel:[1],showerrormsg:[4],showerrorbubble:[4],errormsg:[1],iconleft:[1],iconleftcolor:[1],iconright:[1],iconrightcolor:[1],inputicon:[1],inputiconcolor:[1],inline:[4],inputautocapitalize:[1],inputautofocus:[4],inputkeyhint:[1],inputindex:[8],inputtitle:[1],autocomplete:[1],checked:[4],disabled:[4],max:[8],maxlength:[8],min:[8],minlength:[8],name:[1],pattern:[1],placeholder:[1],readonly:[8],required:[4],step:[8],type:[1],value:[1032]}]]]],e)));
|
|
@@ -69,7 +69,10 @@ export declare class TttxForm {
|
|
|
69
69
|
value: string;
|
|
70
70
|
placeholder?: boolean;
|
|
71
71
|
}>;
|
|
72
|
-
}):
|
|
72
|
+
}): {
|
|
73
|
+
input: HTMLSelectElement;
|
|
74
|
+
overlay: never;
|
|
75
|
+
};
|
|
73
76
|
/**
|
|
74
77
|
* Appends an option to a select element
|
|
75
78
|
*
|
|
@@ -171,10 +174,11 @@ export declare class TttxForm {
|
|
|
171
174
|
*
|
|
172
175
|
* @param {Record<string, any>} formProperties - An object containing properties for the form field, including its label text and validation rules.
|
|
173
176
|
* @param {HTMLInputElement | HTMLSelectElement} input - The input element to associate with the label.
|
|
177
|
+
* @param {never} overlay - The Child Element which will be rendered atop the standard HTML5 element
|
|
174
178
|
* @param {HTMLDivElement} errorBubble - The error bubble element to display error messages in.
|
|
175
179
|
* @return {HTMLLabelElement} - The new label element.
|
|
176
180
|
*/
|
|
177
|
-
createLabel(formProperties: Record<string, any>, input: HTMLInputElement | HTMLSelectElement, errorBubble: HTMLDivElement): HTMLLabelElement;
|
|
181
|
+
createLabel(formProperties: Record<string, any>, input: HTMLInputElement | HTMLSelectElement, overlay: never, errorBubble: HTMLDivElement): HTMLLabelElement;
|
|
178
182
|
/**
|
|
179
183
|
* Creates a new radio input with a set of options.
|
|
180
184
|
*
|
|
@@ -15,6 +15,8 @@ export declare class TttxSelectBox {
|
|
|
15
15
|
private bodyOffset;
|
|
16
16
|
el: any;
|
|
17
17
|
componentWillLoad(): Promise<void>;
|
|
18
|
+
setOptionsData(): Promise<void>;
|
|
19
|
+
setSelectedItem(value: string): Promise<void>;
|
|
18
20
|
selectItemEvent: EventEmitter<SelectItem>;
|
|
19
21
|
toggleOpen: EventEmitter<boolean>;
|
|
20
22
|
handleCloseSelectBox(): void;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as o,c as t,h as i,F as e,H as s,g as n}from"./p-65bb4035.js";import{p as d,d as r}from"./p-88ee2406.js";import"./p-112455b1.js";const l=class{constructor(i){o(this,i),this.selectItemEvent=t(this,"selectItemEvent",3),this.toggleOpen=t(this,"toggleOpen",3),this.bodyOffset={},this.optionsData=null,this.label=void 0,this.inline=void 0,this.placeholder="",this.searchEnabled=void 0,this.selectedValue=void 0,this.open=!1,this.selectedItem=void 0,this.searchTerm=""}async componentWillLoad(){if(this.optionsData){const o=("string"==typeof this.optionsData?JSON.parse(this.optionsData):this.optionsData).filter((o=>o.value==this.selectedValue));this.selectedItem=o.length>0?o[0]:void 0}}handleCloseSelectBox(){this.open=!1}handleBlur(){this.open=!1,this.toggleOpen.emit(!1)}onDropdownClicked(){this.open=!this.open,this.searchTerm="",this.calculateDropdownMenuOffset(),this.toggleOpen.emit(this.open)}onItemSelected(o){this.selectedItem=o,this.selectItemEvent.emit(this.selectedItem),this.handleBlur()}dropdownSelectorContent(){let o,t;const s=i("tttx-icon",{icon:this.open?"expand_less":"expand_more",color:"black"});let n=i("div",{class:"dropdown-selector-chevron"},s);return this.selectedItem?this.selectedItem.html?(o=i("div",{title:this.selectedItem.label,class:"truncated-text",innerHTML:this.selectedItem.html}),i(e,null,o,n)):(o=i("div",{title:this.selectedItem.label,class:"truncated-text"},this.selectedItem.label),this.selectedItem.description&&(t=i("div",{class:"description"},i("p",null,this.selectedItem.description)),n=i("div",{class:"dropdown-selector-chevron-offset"},s)),i(e,null,i("div",{class:"left-wrapper"},o,t),n)):(o=i("div",{class:"placeholder"},this.placeholder),i(e,null,o,n))}dropdownOption(o){const t=this.searchEnabled&&-1===o.label.toLowerCase().indexOf(this.searchTerm.toLowerCase()),e=this.selectedItem&&o.value===this.selectedItem.value;if(o.html){const s=d.sanitize(o.html,r);return i("div",{class:`dropdown-option ${t?"hidden":""} ${e?"selected":""}`,onClick:this.onItemSelected.bind(this,o),key:o.label,innerHTML:s})}return o.description?i("div",{class:`dropdown-option ${t?"hidden":""} ${e?"selected":""}`,onClick:this.onItemSelected.bind(this,o),key:o.label},o.label,i("div",{class:"description-dd"},i("p",null,o.description))):i("div",{class:`dropdown-option ${t?"hidden":""} ${e?"selected":""}`,onClick:this.onItemSelected.bind(this,o),key:o.label},o.label)}handleSearchInput(o){this.searchTerm=o.target.value}calculateDropdownMenuOffset(){const o=this.el.shadowRoot.querySelector(".dropdown-selector"),t=this.dropdownSelector.getBoundingClientRect().bottom;let i=Math.min(368,36*this._optionsData.length)+8;this.searchEnabled&&(i+=52);const e=o.getBoundingClientRect();this.bodyOffset=t+i>window.innerHeight?{top:window.innerHeight-(i+16)+"px",position:"fixed",width:`${o.offsetWidth}px`,zIndex:"10"}:{position:"fixed",left:e.left,top:e.top,width:e.width-2+"px",zIndex:"10"}}render(){if(this.optionsData)return this._optionsData="string"==typeof this.optionsData?JSON.parse(this.optionsData):this.optionsData,i(s,{class:this.inline?"inline":"block"},this.label&&i("div",{class:"label"},this.label),i("div",{tabindex:"0",class:"dropdown-container"},i("div",{class:"dropdown-selector",ref:o=>this.dropdownSelector=o,onClick:this.onDropdownClicked.bind(this)},this.dropdownSelectorContent()),this.open&&i("div",{class:"dropdown-body-container"},i("div",{class:"dropdown-body",style:Object.assign({width:`${this.dropdownSelector.offsetWidth}px`},this.bodyOffset)},this.searchEnabled&&i("div",{class:"searchbox"},i("tttx-standalone-input",{type:"text",label:"",required:!0,showerrorbubble:!1,iconleft:"search",onInput:this.handleSearchInput.bind(this)})),i("div",{class:"dropdown-options-list"},this._optionsData.map((o=>this.dropdownOption(o))))))))}get el(){return n(this)}};l.style='.material-symbols-rounded{font-variation-settings:"FILL" 1, "wght" 400, "GRAD" 0, "opsz" 24}:host{display:flex;gap:4px}.label{font-size:16px;font-weight:500;line-height:18.752px;color:#212121}:host(.inline) .label{padding-top:8px}:host(.block){flex-direction:column}.dropdown-container{position:relative;display:flex;flex-direction:column;width:100%}.dropdown-container:focus-visible{outline:none}.dropdown-container:focus .dropdown-selector{border:1px solid #1479c6}.dropdown-selector,.dropdown-body{display:flex;border-radius:4px;background-color:white}.dropdown-selector{min-height:36px;box-sizing:border-box;align-items:center;gap:8px;padding:4px 8px 4px 16px;cursor:pointer;justify-content:space-between;border:1px solid #d5d5d5;display:flex;flex-direction:row}.dropdown-selector>.left-wrapper{flex:1;min-width:0}.description{color:#757575;font-size:14px;line-height:16.408px}.description>p{margin:0}.description-dd{color:#757575;font-size:14px;line-height:16.408px}.description-dd>p{margin:0}.truncated-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#212121;font-size:16px;line-height:18.752px}.dropdown-selector-chevron{height:24px}.dropdown-selector-chevron-offset{height:24px}.dropdown-selector-chevron>tttx-icon{cursor:pointer}.dropdown-body-container{position:relative;z-index:2}.dropdown-body{position:absolute;flex-direction:column;box-shadow:0px 1px 5px #1111114D;padding-bottom:8px;border:1px solid #d5d5d5}.dropdown-options-list{display:flex;flex-direction:column;overflow-y:auto;max-height:368px}.dropdown-option{padding:6px 8px 6px 16px;cursor:pointer}.dropdown-option:hover{background-color:#1111110d}.dropdown-option:active,.dropdown-option.selected{background-color:#ebfbfc}.placeholder{color:#9e9e9e;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}.searchbox{padding:8px 16px}.searchbox tttx-standalone-input{margin-top:-4px}.hidden{display:none}';export{l as tttx_select_box}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e,c as t,h as o,H as i}from"./p-65bb4035.js";import{p as n,d as r}from"./p-88ee2406.js";import"./p-112455b1.js";function a(e,t,o,i){let n;if(n=void 0!==i?i.querySelector(".errorBubble"):"label"===e.parentElement.nodeName.toLowerCase()?e.parentElement.querySelector(".errorBubble"):e.parentElement.parentElement.querySelector(".errorBubble"),n)if(t){e.classList.add("invalid"),n.classList.add("visible");const t=document.createElement("span");t.className="material-symbols-rounded",t.textContent="warning",n.innerHTML="",n.append(t),n.append(o)}else n.classList.remove("visible"),e.classList.remove("invalid"),n.innerHTML=""}const l=class{constructor(o){e(this,o),this.dataSubmitted=t(this,"dataSubmitted",7),this.dataChanged=t(this,"dataChanged",7),this.template=document.createElement("template"),this.formschema=void 0,this.data=void 0}onFormSchemaChange(e){if(!this.data&&this.form&&this._formSchema){const e=new FormData(this.form);this._data=Object.fromEntries(Object.keys(this._formSchema.properties).map((t=>[t,e.get(t)])))}this._formSchema="string"==typeof e?JSON.parse(e):e}onDataChange(e){this._data="string"==typeof e?JSON.parse(e):e}fieldChanged(e){this.dataChanged.emit({name:e.target.name,value:e.target.value})}async submit(){this.submitButton.click()}async setSelectOptions(e,t){const o=this.fieldset.querySelector(`[name=${e}]`);o.innerHTML="";const i=new DocumentFragment;for(const e of t){const t=document.createElement("option");t.innerText=e.label,t.value=e.value,i.appendChild(t)}o.appendChild(i)}doSubmit(e){e.preventDefault();const t=new FormData(e.target),o=this._formSchema.properties;for(const e of Object.keys(o))"checkbox"!==o[e].form.type||t.has(e)||t.append(e,"off");this.dataSubmitted.emit(t)}componentWillLoad(){this.onFormSchemaChange(this.formschema),this.data&&this.onDataChange(this.data)}componentWillRender(){this.template=document.createElement("template"),this.populateFormFromSchema()}createSelect(e,t){var o;const i=document.createElement("select");return i.setAttribute("name",e),t.options.forEach((e=>{this.appendOption(i,e)})),(null===(o=this._data)||void 0===o?void 0:o[e])&&i.classList.remove("placeholder"),i}appendOption(e,t){const o=document.createElement("option");o.setAttribute("value",t.value),t.placeholder&&(o.setAttribute("disabled",""),o.setAttribute("selected",""),o.setAttribute("hidden",""),e.classList.add("placeholder")),t.label&&(o.innerHTML=n.sanitize(t.label,r)),e.appendChild(o)}createInput(e,t){var o;const i=document.createElement("input");return i.type=t.type,i.name=e,i.placeholder=null!==(o=t.placeholder)&&void 0!==o?o:"",i.autocomplete="off",i.autocapitalize="off",t.readonly&&(i.readOnly=!0),i}createTextArea(e,t){var o;const i=document.createElement("textarea");return i.name=e,i.placeholder=null!==(o=t.placeholder)&&void 0!==o?o:"",i.autocomplete="off",i.autocapitalize="off",t.readonly&&(i.readOnly=!0),i}createStartEndDateComponent(e,t){const o=document.createElement("input"),i=document.createElement("input");let n,r;o.type=i.type="date",o.name=`${e}-startdate`,i.name=`${e}-enddate`,o.setAttribute("data-formkey",e),i.setAttribute("data-formkey",e),t.readonly&&(o.readOnly=!0,i.readOnly=!0),this.applyValidation(o,{required:{message:"Please enter a start date"},dateCompare:{to:i.name}}),this.applyValidation(i,{required:{message:"Please enter an end date"},dateCompare:{with:o.name,message:"End date cannot be before the start date"}}),t.includeTime&&(n=document.createElement("input"),r=document.createElement("input"),n.type=r.type="time",n.name=`${e}-starttime`,r.name=`${e}-endtime`,n.setAttribute("data-formkey",e),r.setAttribute("data-formkey",e),t.readonly&&(n.readOnly=!0,r.readOnly=!0),this.applyValidation(n,{required:{message:"Please enter a start time"}}),this.applyValidation(r,{required:{message:"Please enter an end time"}}));const a=document.createElement("label");a.innerText="Start date";const l=document.createElement("label");l.innerText="End date";const s=document.createElement("div"),d=document.createElement("div");return s.className=d.className="outer-container inputBlock",a.className=l.className="flex-label",s.append(o),n&&s.append(n),a.append(s),a.append(this.createErrorBubble()),d.append(i),r&&d.append(r),l.append(d),l.append(this.createErrorBubble()),{start:a,end:l}}applyValidation(e,t){var o,i;t.required&&(e.setAttribute("required",""),e.setAttribute("data-required",null!==(o=t.required.message)&&void 0!==o?o:"")),t.pattern&&(e.setAttribute("pattern",t.pattern.pattern),e.setAttribute("data-pattern",null!==(i=t.pattern.message)&&void 0!==i?i:"")),t.badInput&&e.setAttribute("data-badinput",t.badInput.message),t.minmax&&(e.setAttribute("min",t.minmax.min),e.setAttribute("max",t.minmax.max),e.setAttribute("data-range",t.minmax.message)),t.maxlength&&e.setAttribute("maxlength",t.maxlength),t.dateCompare&&(t.dateCompare.message&&t.dateCompare.with&&(e.setAttribute("data-compare",t.dateCompare.message),e.setAttribute("data-compare-with",t.dateCompare.with)),t.dateCompare.to&&e.setAttribute("data-compare-to",t.dateCompare.to))}createErrorBubble(){const e=document.createElement("div");return e.className="errorBubble",e}appendCheckboxInput(e,t,o){if(e.label){const e=document.createElement("br");o.appendChild(e)}if(o.appendChild(t),!e.inlineLabel)return;const i=document.createElement("span");i.className="inlineLabel",i.textContent=e.inlineLabel,o.appendChild(i)}createLabel(e,t,o){var i;const n=document.createElement("div");let r="outer-container inputBlock";const a=document.createElement("label");if(a.innerText=e.label,!(null===(i=e.validation)||void 0===i?void 0:i.required)&&e.label){const e=document.createElement("span");e.className="optional",e.innerHTML=" (optional)",a.appendChild(e)}return"radio"===e.type&&(r+=" radioBlock"),n.className=r,e.readonly&&a.classList.add("readonly"),"checkbox"===e.type?this.appendCheckboxInput(e,t,a):n.appendChild(t),"checkbox"!==e.type&&a.appendChild(n),a.appendChild(o),a}createRadio(e,t){var o,i;const n=new DocumentFragment;for(const r of t.options){const a=document.createElement("input");a.type="radio",a.name=e,a.value=r.value,(null===(o=null==t?void 0:t.validation)||void 0===o?void 0:o.required)&&(a.setAttribute("required","required"),a.setAttribute("data-required",null!==(i=t.validation.required.message)&&void 0!==i?i:""));const l=document.createElement("span");l.innerText=r.label,n.appendChild(a),n.appendChild(l),n.appendChild(document.createElement("br"))}return n}populateFormFromSchema(){var e;if(!this._formSchema)return;const t=this._formSchema.properties,o=Object.keys(t);for(const i of o){const o=t[i].form;if("startenddate"===o.type){const{start:e,end:t}=this.createStartEndDateComponent(i,o);this.template.content.append(e),this.template.content.append(t);continue}let n;switch(o.type){case"select":n=this.createSelect(i,o);break;case"radio":n=this.createRadio(i,o);break;case"textarea":n=this.createTextArea(i,o);break;default:n=this.createInput(i,o)}o.validation&&"radio"!==o.type&&this.applyValidation(n,o.validation);const r=this.createErrorBubble(),l=this.createLabel(o,n,r);if(null===(e=o.validation)||void 0===e?void 0:e.invalid){const e=o.validation.invalid.message;n.setCustomValidity(e),a(n,!0,e)}this.template.content.append(l)}}componentDidRender(){if(!this._formSchema)return;const e=this.template.content.cloneNode(!0),t=this._formSchema.properties,o=Object.keys(t);for(const i of o){const o=e.querySelectorAll(`[name^=${i}]`);for(const e of o)e.oninvalid=this.validityCheckWrapper.bind(this),e.onblur=this.validityCheckWrapper.bind(this),e.onkeyup=this.fieldChanged.bind(this),e.onchange=this.fieldChanged.bind(this),"select"===t[i].form.type&&e.classList.contains("placeholder")&&e.addEventListener("change",(()=>{e.classList.remove("placeholder")})),"startenddate"===t[i].form.type&&e.hasAttribute("data-compare-with")&&(e.oninvalid=this.endDateComparisonValidator.bind(this),e.onblur=this.endDateComparisonValidator.bind(this)),"startenddate"===t[i].form.type&&"time"===e.type&&(e.oninvalid=this.startEndTimeComparitor.bind(this),e.onblur=this.startEndTimeComparitor.bind(this)),"startenddate"===t[i].form.type&&e.hasAttribute("data-compare-to")&&(e.oninvalid=this.startDateComparisonValidator.bind(this),e.onblur=this.startDateComparisonValidator.bind(this))}if(this._data&&Object.keys(this._data).length>0){const t=Object.keys(this._data);for(const o of t){const t=e.querySelectorAll(`[name=${o}]`);for(const e of t)switch(e.type){case"checkbox":"on"===this._data[o]&&(e.checked=!0);break;case"radio":e.value===this._data[o]&&(e.checked=!0);break;default:e.value=this._data[o]}}}this.fieldset.replaceChildren(e)}startEndTimeComparitor(e){var t,o;const i=e.target,n=i.getAttribute("data-formkey"),r=Array.from(i.parentElement.parentElement.parentElement.querySelectorAll(`[data-formkey=${n}]`));if(4===r.length){const n=r.find((e=>e.name.endsWith("starttime"))),l=r.find((e=>e.name.endsWith("endtime"))),s=r.find((e=>e.name.endsWith("startdate"))),d=r.find((e=>e.name.endsWith("enddate")));n.valueAsNumber>=l.valueAsNumber&&(null===(t=s.valueAsDate)||void 0===t?void 0:t.valueOf())===(null===(o=d.valueAsDate)||void 0===o?void 0:o.valueOf())?(a(l,!0,"End time cannot be the same or before the start time"),i.name.endsWith("starttime")&&this.validityCheckWrapper(e)):(l.setCustomValidity(""),a(l,!1,null),this.validityCheckWrapper(e))}}clearTimeComparitor(e){const t=e.target,o=t.getAttribute("data-formkey"),i=Array.from(t.parentElement.parentElement.parentElement.querySelectorAll(`[type=time][data-formkey=${o}]`));if(i.length){const e=i.find((e=>e.name.endsWith("endtime")));e.setCustomValidity(""),a(e,!1,null)}}startDateComparisonValidator(e){const t=e.target,o=t.getAttribute("data-compare-to"),i=t.parentElement.parentElement.parentElement.querySelector(`[name=${o}]`);this.endDateComparisonValidator({target:i},!0),this.validityCheckWrapper(e)}endDateComparisonValidator(e,t=!1){var o,i,n,r;const l=e.target;if(!l.value&&t)return;const s=l.getAttribute("data-compare-with"),d=l.parentElement.parentElement.parentElement.querySelector(`[name=${s}]`);(null===(o=l.valueAsDate)||void 0===o?void 0:o.valueOf())<(null===(i=d.valueAsDate)||void 0===i?void 0:i.valueOf())?(l.setCustomValidity(l.getAttribute("data-compare")),a(l,!0,l.getAttribute("data-compare"))):(null===(n=l.valueAsDate)||void 0===n?void 0:n.valueOf())===(null===(r=d.valueAsDate)||void 0===r?void 0:r.valueOf())?(l.setCustomValidity(""),this.validityCheckWrapper(e),this.startEndTimeComparitor(e)):(this.clearTimeComparitor(e),this.validityCheckWrapper(e))}validityCheckWrapper(e){const{target:t,hasError:o,errorMessage:i}=function(e){var t,o,i,n;e.preventDefault&&e.preventDefault();const r=e.target;let a=!0,l="";switch(r.value.length&&!r.value.replace(/\s/g,"").length?(l="This field cannot be left blank",r.setCustomValidity(l)):(l="",r.setCustomValidity&&r.setCustomValidity("")),!0){case r.validity.valueMissing:l=null!==(t=r.dataset.required)&&void 0!==t?t:"This field is required";break;case r.validity.patternMismatch:l=null!==(o=r.dataset.pattern)&&void 0!==o?o:"Incorrect format";break;case r.validity.badInput:l=null!==(i=r.dataset.badinput)&&void 0!==i?i:"Wrong input type";break;case r.validity.rangeOverflow||r.validity.rangeUnderflow:l=null!==(n=r.dataset.range)&&void 0!==n?n:"Invalid value";break;case r.validity.customError:l=r.validationMessage;break;default:a=!1}return{target:r,hasError:a,errorMessage:l}}(e);a(t,o,i)}render(){return o(i,null,o("form",{ref:e=>this.form=e,onSubmit:this.doSubmit.bind(this)},o("fieldset",{ref:e=>this.fieldset=e}),o("input",{type:"submit",ref:e=>this.submitButton=e,style:{display:"none"}})))}static get watchers(){return{formschema:["onFormSchemaChange"],data:["onDataChange"]}}};l.style='.material-symbols-rounded{font-variation-settings:"FILL" 1, "wght" 400, "GRAD" 0, "opsz" 24}.material-symbols-rounded{font-variation-settings:"FILL" 1, "wght" 400, "GRAD" 0, "opsz" 24}label{font-weight:500;font-size:16px;line-height:18.752px;color:#212121}label .optional{color:#757575;font-weight:normal}label .outer-container{position:relative}label .outer-container .left-icons,label .outer-container .right-icons{display:flex;position:absolute;height:24px;gap:8px}label .outer-container .left-icons tttx-icon,label .outer-container .right-icons tttx-icon{height:24px;width:24px}label .outer-container .left-icons{left:8px}label .outer-container .right-icons{right:8px}label .outer-container input,label .outer-container textarea{color:#212121;box-sizing:border-box;border:1px solid #d5d5d5;border-radius:4px;padding:0;padding-left:16px;padding-right:16px;margin-top:4px;}label .outer-container input.has-input-icon,label .outer-container textarea.has-input-icon{padding-left:40px}label .outer-container input.has-input-icon.has-left-icon,label .outer-container textarea.has-input-icon.has-left-icon{padding-left:72px}label .outer-container input.has-left-icon,label .outer-container textarea.has-left-icon{padding-left:40px}label .outer-container input.has-right-icon,label .outer-container textarea.has-right-icon{padding-right:40px}label .outer-container input.invalid,label .outer-container textarea.invalid{border:1px solid #dc0000}label .outer-container input:not([type=submit]),label .outer-container textarea:not([type=submit]){font-family:"Roboto", serif;width:100%;height:36px;font-size:16px;line-height:18.752px}label .outer-container input[type=radio],label .outer-container textarea[type=radio]{width:20px;height:20px}label .outer-container input[type=date],label .outer-container textarea[type=date]{background:white;display:block;min-width:calc(100% - 18px);line-height:37px}label .outer-container input[readonly],label .outer-container textarea[readonly]{cursor:default;pointer-events:none;user-select:none;color:gray}label .outer-container input:focus,label .outer-container textarea:focus{border-color:#1479c6}label .outer-container input:focus-visible,label .outer-container textarea:focus-visible{outline:none}label .outer-container textarea{padding:8px;height:auto;min-height:100px;resize:vertical}label .outer-container.inputBlock{display:flex;align-items:center;line-height:21px}label .outer-container.inputBlock .left-icons,label .outer-container.inputBlock .right-icons{margin-top:4px}label .outer-container.inputBlock.readonly{pointer-events:none;user-select:none;color:gray}label .outer-container.inputBlock.radioBlock{display:block}label .outer-container.inputInline{display:flex;white-space:nowrap;align-items:center;margin:0}label .outer-container.inputInline input{margin-top:0}label .secondarylabel{color:#757575;font-size:14px;line-height:16.408px;font-weight:normal;display:flex;margin-top:4px}label .errorBubble{position:relative;font-size:14px;line-height:16.408px;font-weight:normal;width:100%;font-family:"Roboto", sans-serif;color:#dc0000;display:flex;align-content:center;align-items:center;justify-items:center;margin-top:4px}label .errorBubble:not(.visible){display:none}label .errorBubble span{color:#dc0000;font-size:16px;margin-right:4px}.material-symbols-rounded{font-family:"Material Symbols Rounded", sans-serif;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:#9e9e9e}button{cursor:pointer}.button{font-family:Roboto, serif;box-sizing:border-box;height:36px;min-width:36px;padding:0;margin:0;background:transparent;color:#212121;border:1px solid #c8c8c8;border-radius:4px;text-transform:uppercase;display:flex;justify-content:left;align-items:center;font-size:14px;font-weight:500}.button-content{display:block;padding:0 16px}.icon-left,.icon-right{margin-top:4px}.iconleft{padding-left:8px}.iconleft .button-content{padding-left:4px}.iconright{padding-right:8px}.iconright .button-content{padding-right:4px}.notext{padding:0 6px}.button:active{background:rgba(17, 17, 17, 0.2);border:1px solid #d5d5d5}.primary{background:#1479c6;border:1px solid #1479c6;color:white}.primary:active{background:#1464a2;border:1px solid #1464a2}.borderless{background:transparent;border:none;color:#212121}.borderless:active{background:rgba(17, 17, 17, 0.2);border:none}.borderless-circle{background:transparent;border:none;color:#212121;border-radius:50%}.borderless-circle:active{border:none}.borderless-circle:focus{border-color:transparent}.danger{background:#dc0000;border:1px solid #dc0000;color:white}.danger:active{background:#b00000;border:1px solid #b00000}.disabled{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}.disabled:active{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}@media (hover: hover){.button:hover{background:rgba(17, 17, 17, 0.1);border:1px solid #d5d5d5}.primary:hover{background:#146eb3;border:1px solid #146eb3}.borderless:hover{background:rgba(17, 17, 17, 0.1);border:none}.borderless-circle:hover{background:rgba(17, 17, 17, 0.1);border:none}.danger:hover{background:#c60000;border:1px solid #c60000}.disabled:hover{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}}:host{display:block}fieldset{margin:0;padding:0;border:none}label{display:block;position:relative;margin-bottom:16px}.inlineLabel{font-weight:400;display:inline-block;vertical-align:top;padding-top:4px}input[type=checkbox]{width:18px;height:18px}input~label{font-weight:400}select{font-family:"Roboto", serif;box-sizing:border-box;width:100%;height:36px;padding:0 16px;font-size:16px;border:1px solid #d5d5d5;border-radius:4px;margin-top:4px}.placeholder{color:#9e9e9e}.placeholder option{color:initial}select.invalid:invalid{border:1px solid #dc0000}select~.errorBubble{position:relative;font-size:14px;font-weight:normal;width:100%;font-family:"Roboto", sans-serif;color:#dc0000;display:flex;align-content:center;align-items:center;justify-items:center}select~.errorBubble:not(.visible){visibility:hidden}select~.errorBubble span{color:#dc0000;font-size:16px;margin-right:4px;height:16px}select.invalid:invalid~.errorBubble{position:relative;font-size:14px;font-weight:normal;width:100%;font-family:"Roboto", sans-serif;color:#dc0000;visibility:visible}select:focus{border-color:#1479c6}select:focus-visible{outline:none}.button{padding:0 16px}.footer{display:flex;gap:16px;flex-direction:row-reverse}label.flex-label{display:flex;flex-direction:column;width:300px;box-sizing:border-box}label.flex-label input[type=date]{flex-grow:1;min-width:auto}label.flex-label input[type=time]{min-width:auto;text-align:center;width:180px;margin-left:16px}';export{l as tttx_form}
|