@3t-transform/threeteeui 0.2.74 → 0.2.76

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.
Files changed (72) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/tttx-button.cjs.entry.js +2 -2
  3. package/dist/cjs/tttx-form.cjs.entry.js +78 -49
  4. package/dist/cjs/tttx-keyvalue-block.cjs.entry.js +17 -14
  5. package/dist/cjs/tttx-list.cjs.entry.js +1 -1
  6. package/dist/cjs/tttx-multiselect-box.cjs.entry.js +130 -0
  7. package/dist/cjs/tttx-standalone-input.cjs.entry.js +8 -3
  8. package/dist/cjs/tttx-tag.cjs.entry.js +1 -1
  9. package/dist/cjs/tttx.cjs.js +1 -1
  10. package/dist/collection/collection-manifest.json +2 -1
  11. package/dist/collection/components/atoms/tttx-button/tttx-button.css +1 -1
  12. package/dist/collection/components/atoms/tttx-button/tttx-button.js +1 -2
  13. package/dist/collection/components/atoms/tttx-button/tttx-button.stories.js +1 -1
  14. package/dist/collection/components/atoms/tttx-icon/tttx-icon.js +0 -1
  15. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.css +14 -5
  16. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.js +46 -18
  17. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.js +85 -29
  18. package/dist/collection/components/atoms/tttx-tag/tttx-tag.css +1 -1
  19. package/dist/collection/components/atoms/tttx-tag/tttx-tag.js +0 -1
  20. package/dist/collection/components/atoms/tttx-tag/tttx-tag.stories.js +1 -1
  21. package/dist/collection/components/molecules/tttx-form/lib/setErrorState.js +14 -3
  22. package/dist/collection/components/molecules/tttx-form/lib/validityCheck.js +15 -13
  23. package/dist/collection/components/molecules/tttx-form/tttx-form.css +107 -177
  24. package/dist/collection/components/molecules/tttx-form/tttx-form.js +56 -36
  25. package/dist/collection/components/molecules/tttx-list/tttx-list.css +1 -1
  26. package/dist/collection/components/molecules/tttx-multiselect-box/tttx-multiselect-box.css +135 -0
  27. package/dist/collection/components/molecules/tttx-multiselect-box/tttx-multiselect-box.js +339 -0
  28. package/dist/collection/components/molecules/tttx-multiselect-box/tttx-multiselect-box.stories.js +201 -0
  29. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.css +102 -198
  30. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.js +7 -2
  31. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.js +23 -5
  32. package/dist/components/index.d.ts +1 -0
  33. package/dist/components/index.js +1 -0
  34. package/dist/components/tttx-button2.js +2 -2
  35. package/dist/components/tttx-form.js +79 -50
  36. package/dist/components/tttx-keyvalue-block.js +21 -16
  37. package/dist/components/tttx-list.js +1 -1
  38. package/dist/components/tttx-multiselect-box.d.ts +11 -0
  39. package/dist/components/tttx-multiselect-box.js +172 -0
  40. package/dist/components/tttx-standalone-input2.js +8 -3
  41. package/dist/components/tttx-tag.js +1 -1
  42. package/dist/esm/loader.js +1 -1
  43. package/dist/esm/tttx-button.entry.js +2 -2
  44. package/dist/esm/tttx-form.entry.js +78 -49
  45. package/dist/esm/tttx-keyvalue-block.entry.js +17 -14
  46. package/dist/esm/tttx-list.entry.js +1 -1
  47. package/dist/esm/tttx-multiselect-box.entry.js +126 -0
  48. package/dist/esm/tttx-standalone-input.entry.js +8 -3
  49. package/dist/esm/tttx-tag.entry.js +1 -1
  50. package/dist/esm/tttx.js +1 -1
  51. package/dist/tttx/p-09b92178.entry.js +1 -0
  52. package/dist/tttx/{p-750cf31b.entry.js → p-129df5a2.entry.js} +1 -1
  53. package/dist/tttx/{p-a6582ab0.entry.js → p-25acdd4c.entry.js} +1 -1
  54. package/dist/tttx/{p-5b7b8539.entry.js → p-4ade2866.entry.js} +1 -1
  55. package/dist/tttx/p-77fed2a6.entry.js +1 -0
  56. package/dist/tttx/p-b30a1025.entry.js +1 -0
  57. package/dist/tttx/p-d1ff1456.entry.js +1 -0
  58. package/dist/tttx/tttx.esm.js +1 -1
  59. package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.d.ts +7 -1
  60. package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.d.ts +6 -4
  61. package/dist/types/components/molecules/tttx-form/lib/setErrorState.d.ts +3 -2
  62. package/dist/types/components/molecules/tttx-form/lib/validityCheck.d.ts +5 -7
  63. package/dist/types/components/molecules/tttx-form/tttx-form.d.ts +74 -29
  64. package/dist/types/components/molecules/tttx-multiselect-box/interfaces.d.ts +6 -0
  65. package/dist/types/components/molecules/tttx-multiselect-box/tttx-multiselect-box.d.ts +38 -0
  66. package/dist/types/components/molecules/tttx-multiselect-box/tttx-multiselect-box.stories.d.ts +15 -0
  67. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.d.ts +7 -0
  68. package/dist/types/components.d.ts +46 -8
  69. package/package.json +1 -1
  70. package/dist/tttx/p-6fe0af4e.entry.js +0 -1
  71. package/dist/tttx/p-818574fe.entry.js +0 -1
  72. package/dist/tttx/p-895526aa.entry.js +0 -1
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter } from '../../../stencil-public-runtime';
2
+ export type FormField = HTMLButtonElement | HTMLInputElement | HTMLOutputElement | HTMLSelectElement | HTMLTextAreaElement;
2
3
  export declare class TttxForm {
3
4
  private form;
4
5
  private fieldset;
@@ -6,23 +7,23 @@ export declare class TttxForm {
6
7
  private template;
7
8
  private _formSchema;
8
9
  private _data;
9
- formschema: any;
10
+ formschema: Record<string, any> | string;
10
11
  data: any;
11
12
  dataSubmitted: EventEmitter<FormData>;
12
13
  dataChanged: EventEmitter<{
13
14
  name: string;
14
15
  value: any;
15
16
  }>;
16
- onFormSchemaChange(newValue: any): void;
17
+ onFormSchemaChange(newValue: Record<string, any> | string): void;
17
18
  onDataChange(newValue: any): void;
18
19
  /**
19
20
  * Handles the focus event for a form field and emits a "dataChanged" event
20
21
  * to the parent component with the field name and its new value.
21
22
  *
22
- * @param {ChangeEvent} event - The focus event triggered by the field.
23
+ * @param {KeyboardEvent | Event} event - The focus event triggered by the field.
23
24
  * @return {void}
24
25
  */
25
- fieldChanged(event: any): void;
26
+ fieldChanged(event: KeyboardEvent | Event): void;
26
27
  submit(): Promise<void>;
27
28
  /**
28
29
  * Submits the form data to the server.
@@ -43,62 +44,108 @@ export declare class TttxForm {
43
44
  * Creates a new HTMLSelectElement with a set of options.
44
45
  *
45
46
  * @param {string} formKey - The name of the dropdown field, as specified in the form schema.
46
- * @param {Object} formProperties - An object containing additional properties, such as the field type and options properties.
47
+ * @param {object} formProperties - An object containing additional properties, such as the field type and options properties.
47
48
  * @param {'select'} formProperties.type - The type of form field. In this case, it will always be "select".
48
- * @param {Object} formProperties.validation - A set of validation rules for the field.
49
- * @param {Object[]} formProperties.options - A list of properties to pass to the select options.
50
- * @param {string} formProperties.options.label - The visible value of the option.
51
- * @param {string} formProperties.options.value - The actual value of the option.
49
+ * @param {object} formProperties.validation - A set of validation rules for the field.
50
+ * @param {Array<{label:string, value:string, placeholder?:boolean}>} formProperties.options - A list of properties to pass to the select options.
51
+ * @param {string} formProperties.options[].label - The visible value of the option.
52
+ * @param {string} formProperties.options[].value - The actual value of the option.
53
+ * @param {boolean} [formProperties.options[].placeholder]
52
54
  */
53
- createSelect(formKey: string, formProperties: any): HTMLSelectElement;
55
+ createSelect(formKey: string, formProperties: {
56
+ type: 'select';
57
+ validation: object;
58
+ options: Array<{
59
+ label: string;
60
+ value: string;
61
+ placeholder?: boolean;
62
+ }>;
63
+ }): HTMLSelectElement;
54
64
  /**
55
65
  * Appends an option to a select element
56
66
  *
57
67
  * @param {HTMLSelectElement} select - The select elements to attach the option to.
58
- * @param {value} value - The value of the option.
59
- * @param {label} label - The label which will be displayed on the form for the option.
68
+ * @param {Object} optionProperties
69
+ * @param {string} optionProperties.value - The value of the option.
70
+ * @param {string} optionProperties.label - The label which will be displayed on the form for the option.
71
+ * @param {boolean} [optionProperties.placeholder]
60
72
  */
61
- appendOption(select: any, optionProperties: any): void;
73
+ appendOption(select: HTMLSelectElement, optionProperties: {
74
+ value: string;
75
+ label: string;
76
+ placeholder?: boolean;
77
+ }): void;
62
78
  /**
63
79
  * Creates a new HTMLInputElement with the specified name, type, and placeholder (if any),
64
80
  * and sets its autocomplete and autocapitalization properties to off.
65
81
  *
66
82
  * @param {string} formKey - The name of the input field, as specified in the form schema.
67
- * @param {Object} formProperties - An object containing additional properties for the input field, such as its type and placeholder value.
83
+ * @param {Record<string, any>} formProperties - An object containing additional properties for the input field, such as its type and placeholder value.
68
84
  * @param {string} formProperties.type - The type of the input field (e.g., "text", "email", "number", etc.).
69
85
  * @param {string} [formProperties.placeholder] - An optional placeholder value to display in the input field.
70
86
  * @return {HTMLInputElement} - The new input element.
71
87
  */
72
- createInput(formKey: any, formProperties: any): HTMLInputElement;
88
+ createInput(formKey: string, formProperties: Record<string, any>): HTMLInputElement;
73
89
  /**
74
90
  * Applies validation attributes to an input element based on the specified validation object.
75
91
  * If a certain property is present in the object, it will set the corresponding attribute on
76
92
  * the input element (e.g., "required" will set the "required" and "data-required" attributes,
77
93
  * "pattern" will set the "pattern" and "data-pattern" attributes, etc.).
78
94
  *
79
- * @param {HTMLInputElement} input - The input element to apply validation attributes to.
80
- * @param {Object} validation - An object containing the validation rules for the input field.
81
- * @param {Object} [validation.required] - An object containing a "message" property to display if the field is required.
82
- * @param {Object} [validation.pattern] - An object containing a "pattern" property to match against the field value, and a "message" property to display if the pattern doesn't match.
83
- * @param {Object} [validation.badInput] - An object containing a "message" property to display if the field value is invalid.
84
- * @param {Object} [validation.minmax] - An object containing "min" and "max" properties to validate the field value against, and a "message" property to display if the value is out of range.
95
+ * @param {FormField} input - The input element to apply validation attributes to.
96
+ * @param {object} validation - An object containing the validation rules for the input field.
97
+ * @param {object} [validation.required] - An object containing a "message" property to display if the field is required.
98
+ * @param {string} [validation.required.message]
99
+ * @param {object} [validation.pattern] - An object containing a "pattern" property to match against the field value, and a "message" property to display if the pattern doesn't match.
100
+ * @param {string} [validation.pattern.pattern]
101
+ * @param {string} [validation.pattern.message]
102
+ * @param {object} [validation.badInput] - An object containing a "message" property to display if the field value is invalid.
103
+ * @param {string} [validation.badInput.message]
104
+ * @param {object} [validation.minmax] - An object containing "min" and "max" properties to validate the field value against, and a "message" property to display if the value is out of range.
105
+ * @param {string} [validation.minmax.min]
106
+ * @param {string} [validation.minmax.max]
107
+ * @param {string} [validation.minmax.message]
85
108
  * @param {string} [validation.maxlength] - The maximum length of the input field.
86
109
  * @return {void}
87
110
  */
88
- applyValidation(input: any, validation: any): void;
111
+ applyValidation(input: FormField, validation: {
112
+ required?: {
113
+ message?: string;
114
+ };
115
+ pattern?: {
116
+ pattern?: string;
117
+ message?: string;
118
+ };
119
+ badInput?: {
120
+ message?: string;
121
+ };
122
+ minmax?: {
123
+ min?: string;
124
+ max?: string;
125
+ message?: string;
126
+ };
127
+ maxlength?: string;
128
+ }): void;
89
129
  createErrorBubble(): HTMLDivElement;
90
- appendCheckboxInput(formProperties: any, input: any, label: any): void;
130
+ /**
131
+ *
132
+ * @param {Record<string, any>} formProperties
133
+ * @param {HTMLInputElement | HTMLSelectElement} input
134
+ * @param {HTMLLabelElement} label
135
+ * @returns {void}
136
+ */
137
+ appendCheckboxInput(formProperties: Record<string, any>, input: HTMLInputElement | HTMLSelectElement, label: HTMLLabelElement): void;
91
138
  /**
92
139
  * Creates a new <label> element with the "inputBlock" class and the specified label text,
93
140
  * and appends the input element and error bubble element to it. If the form property has
94
141
  * no validation object, it adds an "optional" span element to the label.
95
142
  *
96
- * @param {Object} formProperties - An object containing properties for the form field, including its label text and validation rules.
97
- * @param {HTMLInputElement} input - The input element to associate with the label.
143
+ * @param {Record<string, any>} formProperties - An object containing properties for the form field, including its label text and validation rules.
144
+ * @param {HTMLInputElement | HTMLSelectElement} input - The input element to associate with the label.
98
145
  * @param {HTMLDivElement} errorBubble - The error bubble element to display error messages in.
99
146
  * @return {HTMLLabelElement} - The new label element.
100
147
  */
101
- createLabel(formProperties: any, input: any, errorBubble: any): HTMLLabelElement;
148
+ createLabel(formProperties: Record<string, any>, input: HTMLInputElement | HTMLSelectElement, errorBubble: HTMLDivElement): HTMLLabelElement;
102
149
  /**
103
150
  * Populates the form template with input fields and labels based on the properties of the
104
151
  * current form schema. For each property in the schema, it creates an input element, applies
@@ -118,15 +165,13 @@ export declare class TttxForm {
118
165
  * @return {void}
119
166
  */
120
167
  componentDidRender(): void;
121
- validityCheckWrapper(event: any): void;
168
+ validityCheckWrapper(event: Event | FocusEvent): void;
122
169
  /**
123
170
  * Renders the component's template as a form element with a fieldset container. The form's
124
171
  * "onSubmit" event is bound to the "doSubmit" function, which handles the form submission
125
172
  * and emits a "dataSubmitted" event with the form data. The fieldset element is assigned
126
173
  * to the "fieldset" instance variable using a ref, so it can be populated with form elements
127
174
  * later on.
128
- *
129
- * @return {JSX.Element} - The rendered form template as a JSX element.
130
175
  */
131
176
  render(): any;
132
177
  }
@@ -0,0 +1,6 @@
1
+ export interface SelectItem {
2
+ value: string;
3
+ label: string;
4
+ html?: string;
5
+ selected: boolean;
6
+ }
@@ -0,0 +1,38 @@
1
+ import { EventEmitter } from '../../../stencil-public-runtime';
2
+ import { SelectItem } from './interfaces';
3
+ export declare class TttxMultiselectBox {
4
+ optionsData: string | SelectItem[];
5
+ label: string;
6
+ inline: boolean;
7
+ placeholder: string;
8
+ searchEnabled: boolean;
9
+ htmlVisibleValue: boolean;
10
+ visibleValue: string;
11
+ open: boolean;
12
+ unsavedSelectedItems: SelectItem[];
13
+ searchTerm: string;
14
+ private _optionsData;
15
+ private bodyOffset;
16
+ el: any;
17
+ selectItemEvent: EventEmitter<SelectItem>;
18
+ toggleOpen: EventEmitter<boolean>;
19
+ changesApplied: EventEmitter<SelectItem[]>;
20
+ handleCloseSelectBox(): void;
21
+ handleBlur(): void;
22
+ /**
23
+ * We want to generally clone instances of optionsData, _optionsData and unsavedSelectedItems
24
+ * This is because they may be assigned from each other, but have different purposes
25
+ * If we don't clone them, changing one may propagate to the others
26
+ * JSON.parse/stringify will deep clone them, so the references of the array elements will also change
27
+ */
28
+ safelyCloneArray(arr: Array<any>): any;
29
+ onDropdownClicked(): void;
30
+ onCancel(): void;
31
+ applyChanges(): void;
32
+ onItemSelected(option: SelectItem): void;
33
+ dropdownSelectorContent(): any;
34
+ dropdownOption(option: SelectItem): any;
35
+ handleSearchInput(event: InputEvent): void;
36
+ calculateDropdownMenuOffset(): void;
37
+ render(): any;
38
+ }
@@ -0,0 +1,15 @@
1
+ declare const _default: {
2
+ title: string;
3
+ component: string;
4
+ parameters: {
5
+ actions: {
6
+ handles: string[];
7
+ };
8
+ };
9
+ decorators: (<T extends import("@storybook/types").Renderer>(storyFn: import("@storybook/types").PartialStoryFn<T, import("@storybook/types").Args>) => T["storyResult"])[];
10
+ };
11
+ export default _default;
12
+ export declare const BasicMultiselectBox: any;
13
+ export declare const HtmlVisibleValueWrap: any;
14
+ export declare const HtmlVisibleValue: any;
15
+ export declare const DialogBoxWithDropdown: any;
@@ -1,6 +1,12 @@
1
1
  declare const _default: {
2
2
  title: string;
3
3
  component: string;
4
+ parameters: {
5
+ actions: {
6
+ handles: string[];
7
+ };
8
+ };
9
+ decorators: (<T extends import("@storybook/types").Renderer>(storyFn: import("@storybook/types").PartialStoryFn<T, import("@storybook/types").Args>) => T["storyResult"])[];
4
10
  argTypes: {
5
11
  iconleft: {
6
12
  options: string[];
@@ -141,3 +147,4 @@ declare const _default: {
141
147
  export default _default;
142
148
  export declare const InputField: any;
143
149
  export declare const searchField: any;
150
+ export declare const dateField: any;
@@ -7,8 +7,10 @@
7
7
  import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
8
  import { DialogItems } from "./components/molecules/tttx-dialog-box/interfaces";
9
9
  import { FilterChangeEvent, FilterSettings } from "./components/molecules/tttx-filter/tttx-filter";
10
+ import { KeyBlockValues } from "./components/atoms/tttx-keyvalue-block/tttx-keyvalue-block";
10
11
  import { ListItem } from "./components/molecules/tttx-list/interfaces";
11
- import { SelectItem } from "./components/molecules/tttx-select-box/interfaces";
12
+ import { SelectItem } from "./components/molecules/tttx-multiselect-box/interfaces";
13
+ import { SelectItem as SelectItem1 } from "./components/molecules/tttx-select-box/interfaces";
12
14
  import { SorterChangeEvent, SorterData } from "./components/molecules/tttx-sorter/interfaces";
13
15
  import { MinMaxDates } from "./components/molecules/tttx-standalone-input/tttx-standalone-input";
14
16
  import { Tab } from "./components/molecules/tttx-tabs/interfaces";
@@ -40,7 +42,7 @@ export namespace Components {
40
42
  }
41
43
  interface TttxForm {
42
44
  "data": any;
43
- "formschema": any;
45
+ "formschema": Record<string, any> | string;
44
46
  "submit": () => Promise<void>;
45
47
  }
46
48
  interface TttxIcon {
@@ -49,7 +51,8 @@ export namespace Components {
49
51
  }
50
52
  interface TttxKeyvalueBlock {
51
53
  "horizontal": boolean;
52
- "keyvalues": any | any[] | string;
54
+ "keyvalues": KeyBlockValues | KeyBlockValues[] | string;
55
+ "spacedout": boolean;
53
56
  }
54
57
  interface TttxList {
55
58
  "data": string | ListItem[];
@@ -59,6 +62,15 @@ export namespace Components {
59
62
  "loadingMessage": boolean;
60
63
  "size": 'small' | 'large';
61
64
  }
65
+ interface TttxMultiselectBox {
66
+ "htmlVisibleValue": boolean;
67
+ "inline": boolean;
68
+ "label": string;
69
+ "optionsData": string | SelectItem[];
70
+ "placeholder": string;
71
+ "searchEnabled": boolean;
72
+ "visibleValue": string;
73
+ }
62
74
  interface TttxQrcode {
63
75
  "link": string;
64
76
  "size": number;
@@ -66,7 +78,7 @@ export namespace Components {
66
78
  interface TttxSelectBox {
67
79
  "inline": boolean;
68
80
  "label": string;
69
- "optionsData": string | SelectItem[];
81
+ "optionsData": string | SelectItem1[];
70
82
  "placeholder": string;
71
83
  "searchEnabled": boolean;
72
84
  "selectedValue": string;
@@ -155,6 +167,10 @@ export interface TttxListCustomEvent<T> extends CustomEvent<T> {
155
167
  detail: T;
156
168
  target: HTMLTttxListElement;
157
169
  }
170
+ export interface TttxMultiselectBoxCustomEvent<T> extends CustomEvent<T> {
171
+ detail: T;
172
+ target: HTMLTttxMultiselectBoxElement;
173
+ }
158
174
  export interface TttxSelectBoxCustomEvent<T> extends CustomEvent<T> {
159
175
  detail: T;
160
176
  target: HTMLTttxSelectBoxElement;
@@ -224,6 +240,12 @@ declare global {
224
240
  prototype: HTMLTttxLoadingSpinnerElement;
225
241
  new (): HTMLTttxLoadingSpinnerElement;
226
242
  };
243
+ interface HTMLTttxMultiselectBoxElement extends Components.TttxMultiselectBox, HTMLStencilElement {
244
+ }
245
+ var HTMLTttxMultiselectBoxElement: {
246
+ prototype: HTMLTttxMultiselectBoxElement;
247
+ new (): HTMLTttxMultiselectBoxElement;
248
+ };
227
249
  interface HTMLTttxQrcodeElement extends Components.TttxQrcode, HTMLStencilElement {
228
250
  }
229
251
  var HTMLTttxQrcodeElement: {
@@ -281,6 +303,7 @@ declare global {
281
303
  "tttx-keyvalue-block": HTMLTttxKeyvalueBlockElement;
282
304
  "tttx-list": HTMLTttxListElement;
283
305
  "tttx-loading-spinner": HTMLTttxLoadingSpinnerElement;
306
+ "tttx-multiselect-box": HTMLTttxMultiselectBoxElement;
284
307
  "tttx-qrcode": HTMLTttxQrcodeElement;
285
308
  "tttx-select-box": HTMLTttxSelectBoxElement;
286
309
  "tttx-sorter": HTMLTttxSorterElement;
@@ -322,7 +345,7 @@ declare namespace LocalJSX {
322
345
  }
323
346
  interface TttxForm {
324
347
  "data"?: any;
325
- "formschema"?: any;
348
+ "formschema"?: Record<string, any> | string;
326
349
  "onDataChanged"?: (event: TttxFormCustomEvent<{ name: string; value: any }>) => void;
327
350
  "onDataSubmitted"?: (event: TttxFormCustomEvent<FormData>) => void;
328
351
  }
@@ -332,7 +355,8 @@ declare namespace LocalJSX {
332
355
  }
333
356
  interface TttxKeyvalueBlock {
334
357
  "horizontal"?: boolean;
335
- "keyvalues"?: any | any[] | string;
358
+ "keyvalues"?: KeyBlockValues | KeyBlockValues[] | string;
359
+ "spacedout"?: boolean;
336
360
  }
337
361
  interface TttxList {
338
362
  "data"?: string | ListItem[];
@@ -344,6 +368,18 @@ declare namespace LocalJSX {
344
368
  "loadingMessage"?: boolean;
345
369
  "size"?: 'small' | 'large';
346
370
  }
371
+ interface TttxMultiselectBox {
372
+ "htmlVisibleValue"?: boolean;
373
+ "inline"?: boolean;
374
+ "label"?: string;
375
+ "onChangesApplied"?: (event: TttxMultiselectBoxCustomEvent<SelectItem[]>) => void;
376
+ "onSelectItemEvent"?: (event: TttxMultiselectBoxCustomEvent<SelectItem>) => void;
377
+ "onToggleOpen"?: (event: TttxMultiselectBoxCustomEvent<boolean>) => void;
378
+ "optionsData"?: string | SelectItem[];
379
+ "placeholder"?: string;
380
+ "searchEnabled"?: boolean;
381
+ "visibleValue"?: string;
382
+ }
347
383
  interface TttxQrcode {
348
384
  "link"?: string;
349
385
  "size"?: number;
@@ -351,9 +387,9 @@ declare namespace LocalJSX {
351
387
  interface TttxSelectBox {
352
388
  "inline"?: boolean;
353
389
  "label"?: string;
354
- "onSelectItemEvent"?: (event: TttxSelectBoxCustomEvent<SelectItem>) => void;
390
+ "onSelectItemEvent"?: (event: TttxSelectBoxCustomEvent<SelectItem1>) => void;
355
391
  "onToggleOpen"?: (event: TttxSelectBoxCustomEvent<boolean>) => void;
356
- "optionsData"?: string | SelectItem[];
392
+ "optionsData"?: string | SelectItem1[];
357
393
  "placeholder"?: string;
358
394
  "searchEnabled"?: boolean;
359
395
  "selectedValue"?: string;
@@ -447,6 +483,7 @@ declare namespace LocalJSX {
447
483
  "tttx-keyvalue-block": TttxKeyvalueBlock;
448
484
  "tttx-list": TttxList;
449
485
  "tttx-loading-spinner": TttxLoadingSpinner;
486
+ "tttx-multiselect-box": TttxMultiselectBox;
450
487
  "tttx-qrcode": TttxQrcode;
451
488
  "tttx-select-box": TttxSelectBox;
452
489
  "tttx-sorter": TttxSorter;
@@ -469,6 +506,7 @@ declare module "@stencil/core" {
469
506
  "tttx-keyvalue-block": LocalJSX.TttxKeyvalueBlock & JSXBase.HTMLAttributes<HTMLTttxKeyvalueBlockElement>;
470
507
  "tttx-list": LocalJSX.TttxList & JSXBase.HTMLAttributes<HTMLTttxListElement>;
471
508
  "tttx-loading-spinner": LocalJSX.TttxLoadingSpinner & JSXBase.HTMLAttributes<HTMLTttxLoadingSpinnerElement>;
509
+ "tttx-multiselect-box": LocalJSX.TttxMultiselectBox & JSXBase.HTMLAttributes<HTMLTttxMultiselectBoxElement>;
472
510
  "tttx-qrcode": LocalJSX.TttxQrcode & JSXBase.HTMLAttributes<HTMLTttxQrcodeElement>;
473
511
  "tttx-select-box": LocalJSX.TttxSelectBox & JSXBase.HTMLAttributes<HTMLTttxSelectBoxElement>;
474
512
  "tttx-sorter": LocalJSX.TttxSorter & JSXBase.HTMLAttributes<HTMLTttxSorterElement>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3t-transform/threeteeui",
3
- "version": "0.2.74",
3
+ "version": "0.2.76",
4
4
  "description": "3t Design System",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -1 +0,0 @@
1
- import{r as t,h as i,H as l}from"./p-3f1b6013.js";const d=class{constructor(i){t(this,i),this.keyvalues=void 0,this.horizontal=void 0}renderSingleElements(t){const l=Object.keys(t),d=[],o=(100/l.length).toString()+"%";for(let r=0;r<l.length;r++)this.horizontal?d.push(i("div",{style:{maxWidth:o}},i("dt",null,l[r]),i("dd",null,t[l[r]]))):(d.push(i("dt",null,l[r])),d.push(i("dd",null,t[l[r]])));return d}renderArrayElements(t){const l=[],d=(100/t.length).toString()+"%";for(let o=0;o<t.length;o++){const r=t[o];this.horizontal?l.push(i("div",{style:{maxWidth:d}},i("dt",{class:"mainTitle"},r.title),i("dt",{class:"subTitle"},r.subTitle),i("dd",null,r.data))):(l.push(i("dt",{class:"mainTitle"},r.title)),l.push(i("dt",{class:"subTitle"},r.subTitle)),l.push(i("dd",null,r.data)))}return l}render(){if(!this.keyvalues)return;let t,d;return t="string"==typeof this.keyvalues?JSON.parse(this.keyvalues):this.keyvalues,d=Array.isArray(t)?this.renderArrayElements(t):this.renderSingleElements(t),i(l,null,i("dl",{class:this.horizontal?"horizontal":null},d))}};d.style=':host{display:block}dl{margin:0;padding:0;font-family:"Roboto", sans-serif;cursor:default}dt{font-weight:400;line-height:21px;font-size:16px}dt,dt.subTitle{color:#757575}dt.mainTitle{color:#212121}dt,dd{overflow-wrap:anywhere}dd{margin:0;font-weight:400;font-size:16px;color:#212121;line-height:21px;margin-bottom:18px}dl.horizontal{display:flex;flex-direction:row;width:100%}dl.horizontal div{flex-grow:1}@media (max-width: 769px){dl.horizontal{flex-wrap:wrap}dl.horizontal div{width:50%;max-width:50% !important}}@media (max-width: 600px){dl.horizontal div{width:100%;max-width:100% !important}}';export{d as tttx_keyvalue_block}
@@ -1 +0,0 @@
1
- import{r as t,c as i,h as n,H as s}from"./p-3f1b6013.js";const o=class{constructor(n){t(this,n),this.valueChanged=i(this,"valueChanged",7),this.focusChanged=i(this,"focusChanged",7),this.blurChanged=i(this,"blurChanged",7),this.invalidChanged=i(this,"invalidChanged",7),this.inputIconClick=i(this,"inputIconClick",7),this.leftIconClick=i(this,"leftIconClick",7),this.rightIconClick=i(this,"rightIconClick",7),this.label=void 0,this.secondarylabel=void 0,this.showerrormsg=void 0,this.showerrorbubble=!0,this.errormsg=void 0,this.iconleft=void 0,this.iconleftcolor="grey",this.iconright=void 0,this.iconrightcolor="grey",this.inputicon=void 0,this.inputiconcolor="grey",this.inline=void 0,this.inputautocapitalize=void 0,this.inputautofocus=void 0,this.inputkeyhint=void 0,this.inputindex=void 0,this.inputtitle=void 0,this.autocomplete=void 0,this.checked=void 0,this.disabled=void 0,this.max=void 0,this.maxlength=void 0,this.min=void 0,this.minlength=void 0,this.name=void 0,this.pattern=void 0,this.placeholder=void 0,this.readonly=void 0,this.required=void 0,this.step=void 0,this.type="text",this.value=void 0}handleChange(t){const i=t.target;this.value=i.value,this.valueChanged.emit(i.value)}handleFocus(t){this.focusChanged.emit(t.target.value)}handleBlur(t){this.blurChanged.emit(t.target.value)}handleInvalid(t){t.preventDefault(),this.invalidChanged.emit(t.target.value)}handleInputIconClick(t){t.preventDefault(),this.inputIconClick.emit()}handleLeftIconClick(t){t.preventDefault(),this.leftIconClick.emit()}handleRightIconClick(t){t.preventDefault(),this.rightIconClick.emit()}render(){const t=["standalone",this.showerrormsg?"invalid":""].join(" ");return n(s,null,n("label",{class:this.inline?"inputInline":"inputBlock"},this.label,this.required?"":n("span",{class:"optional"}," (optional)"),n("div",{class:"input-container"},this.inputicon&&n("tttx-icon",{class:"input-icon",icon:this.inputicon,color:this.inputiconcolor,onClick:this.handleInputIconClick.bind(this)}),this.iconleft&&n("tttx-icon",{id:"icon-left",icon:this.iconleft,color:this.iconleftcolor,onClick:this.handleLeftIconClick.bind(this)}),this.iconright&&n("tttx-icon",{id:"icon-right",icon:this.iconright,color:this.iconrightcolor,onClick:this.handleRightIconClick.bind(this)}),n("input",{class:t,autocapitalize:this.inputautocapitalize,autofocus:this.inputautofocus,enterkeyhint:this.inputkeyhint,tabindex:this.inputindex,title:this.inputtitle,autocomplete:this.autocomplete,checked:this.checked,disabled:this.disabled,max:this.max,maxlength:this.maxlength,min:this.min,minlength:this.minlength,name:this.name,pattern:this.pattern,placeholder:this.placeholder,readonly:this.readonly,required:this.required,step:this.step,type:this.type,value:this.value,onBlur:this.handleBlur.bind(this),onFocus:this.handleFocus.bind(this),onInput:this.handleChange.bind(this),onInvalid:this.handleInvalid.bind(this)}),this.secondarylabel&&n("span",{class:"secondarylabel"},this.secondarylabel),this.showerrorbubble&&n("span",{class:["errorBubble",this.showerrormsg&&this.errormsg?"visible":""].join(" ")},n("span",{class:"material-symbols-rounded validationicon"},"warning")," ",this.errormsg))))}};o.style='.material-symbols-rounded.sc-tttx-standalone-input{font-variation-settings:"FILL" 1, "wght" 400, "GRAD" 0, "opsz" 24}.material-symbols-rounded.sc-tttx-standalone-input{font-variation-settings:"FILL" 1, "wght" 400, "GRAD" 0, "opsz" 24}.material-symbols-rounded.sc-tttx-standalone-input{font-family:"Material Symbols Rounded", sans-serif;font-weight:normal;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}.icon-left.sc-tttx-standalone-input,.icon-right.sc-tttx-standalone-input{flex-basis:24px}.icon-left.sc-tttx-standalone-input span.sc-tttx-standalone-input,.icon-right.sc-tttx-standalone-input span.sc-tttx-standalone-input{font-size:24px;line-height:24px;text-align:center;display:block;width:24px;height:24px;margin-top:4px}.icon-left.sc-tttx-standalone-input span.sc-tttx-standalone-input{margin-left:4px}.icon-right.sc-tttx-standalone-input span.sc-tttx-standalone-input{margin-right:4px}.icon-right.sc-tttx-standalone-input{margin-top:5px}.icon-left.sc-tttx-standalone-input{margin-top:5px;margin-left:4px}.iconleft.sc-tttx-standalone-input .input.sc-tttx-standalone-input{padding-left:4px}.iconright.sc-tttx-standalone-input .input.sc-tttx-standalone-input{padding-right:4px}.input-icon.sc-tttx-standalone-input{position:absolute;margin-top:9px;margin-left:4px}.errormsg.sc-tttx-standalone-input{display:flex;justify-content:center;align-items:center;float:left;margin-bottom:16px;box-sizing:border-box;background-color:transparent;height:26px;font-size:14px;line-height:16px;border-radius:none;z-index:2;color:#dc0000}.errormsg.sc-tttx-standalone-input .validationicon.sc-tttx-standalone-input{width:16px;height:16px;font-size:16px;line-height:19px;margin-right:4px;vertical-align:middle;color:#dc0000}.danger.sc-tttx-standalone-input{color:#dc0000}.optional.sc-tttx-standalone-input{color:#757575;font-weight:normal}label.inputBlock.sc-tttx-standalone-input{display:block;position:relative;line-height:21px}label.inputInline.sc-tttx-standalone-input{display:flex;white-space:nowrap;align-items:center}label.inputInline.sc-tttx-standalone-input .input-container.sc-tttx-standalone-input{margin:0 4px;width:100%;display:flex;align-items:center;gap:4px;position:relative}label.sc-tttx-standalone-input{font-weight:500;font-size:16px;line-height:19px;margin-bottom:16px}input.sc-tttx-standalone-input:not([type=submit]){font-family:"Roboto", serif;box-sizing:border-box;width:100%;height:36px;padding:0 16px;font-size:16px;line-height:19px;border:1px solid #d5d5d5;border-radius:4px;margin-top:4px}input[type=date].sc-tttx-standalone-input{background:white;display:block;min-width:calc(100% - 18px);line-height:37px}@media (max-width: 600px){input[type=date].sc-tttx-standalone-input{padding-top:6px}}input.invalid.sc-tttx-standalone-input:invalid,input.standalone.invalid.sc-tttx-standalone-input{border:1px solid #dc0000}.input-icon.sc-tttx-standalone-input~input.sc-tttx-standalone-input{padding:0 32px}input.sc-tttx-standalone-input~.errorBubble.sc-tttx-standalone-input{position:relative;font-size:14px;line-height:16px;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}input.sc-tttx-standalone-input~.errorBubble.sc-tttx-standalone-input:not(.visible){display:none}input.sc-tttx-standalone-input~.errorBubble.sc-tttx-standalone-input span.sc-tttx-standalone-input{color:#dc0000;font-size:16px;margin-right:4px}input.invalid.sc-tttx-standalone-input:invalid~.errorBubble.sc-tttx-standalone-input{position:relative;font-size:14px;font-weight:normal;width:100%;font-family:"Roboto", sans-serif;color:#dc0000}input.sc-tttx-standalone-input:focus{border-color:#1479c6}input.sc-tttx-standalone-input:focus-visible{outline:none}.secondarylabel.sc-tttx-standalone-input{color:#757575;font-size:14px;line-height:16px;font-weight:normal;display:flex;margin-top:4px}label.inputBlock.readonly.sc-tttx-standalone-input{pointer-events:none;user-select:none;color:gray}input[readonly].sc-tttx-standalone-input{cursor:default;pointer-events:none;user-select:none;color:gray}.sc-tttx-standalone-input-h{display:block}.input-container.sc-tttx-standalone-input{position:relative}#icon-left.sc-tttx-standalone-input{position:absolute;left:8px;top:10px}#icon-left.sc-tttx-standalone-input~input.sc-tttx-standalone-input{padding-left:36px}#icon-right.sc-tttx-standalone-input{position:absolute;right:8px;top:10px}#icon-right.sc-tttx-standalone-input~input.sc-tttx-standalone-input{padding-right:36px}';export{o as tttx_standalone_input}
@@ -1 +0,0 @@
1
- import{r as e,c as i,h as t,H as o}from"./p-3f1b6013.js";import{p as n,d as r}from"./p-5ed38d61.js";import"./p-112455b1.js";function a(e,i,t){const o=e.parentElement.querySelector(".errorBubble");if(i){e.classList.add("invalid"),o.classList.add("visible");const i=document.createElement("span");i.className="material-symbols-rounded",i.textContent="warning",o.innerHTML="",o.append(i),o.append(t)}else o.classList.remove("visible"),e.classList.remove("invalid"),o.innerHTML=""}const l=class{constructor(t){e(this,t),this.dataSubmitted=i(this,"dataSubmitted",7),this.dataChanged=i(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((i=>[i,e.get(i)])))}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()}doSubmit(e){e.preventDefault();const i=new FormData(e.target);this.dataSubmitted.emit(i)}componentWillLoad(){this.onFormSchemaChange(this.formschema),this.data&&this.onDataChange(this.data)}componentWillRender(){this.template=document.createElement("template"),this.populateFormFromSchema()}createSelect(e,i){const t=document.createElement("select");return t.setAttribute("name",e),i.options.forEach((e=>{this.appendOption(t,e)})),this._data&&this._data[e]&&t.classList.remove("placeholder"),t}appendOption(e,i){const t=document.createElement("option");t.setAttribute("value",i.value),i.placeholder&&(t.setAttribute("disabled",""),t.setAttribute("selected",""),t.setAttribute("hidden",""),e.classList.add("placeholder")),i.label&&(t.innerHTML=n.sanitize(i.label,r)),e.appendChild(t)}createInput(e,i){var t;const o=document.createElement("input");return o.name=e,o.type=i.type,o.placeholder=null!==(t=i.placeholder)&&void 0!==t?t:"",o.autocomplete="off",o.autocapitalize="off",i.readonly&&(o.readOnly=!0),o}applyValidation(e,i){var t,o;i.required&&(e.setAttribute("required",""),e.setAttribute("data-required",null!==(t=i.required.message)&&void 0!==t?t:"")),i.pattern&&(e.setAttribute("pattern",i.pattern.pattern),e.setAttribute("data-pattern",null!==(o=i.pattern.message)&&void 0!==o?o:"")),i.badInput&&e.setAttribute("data-badinput",i.badInput.message),i.minmax&&(e.setAttribute("min",i.minmax.min),e.setAttribute("max",i.minmax.max),e.setAttribute("data-range",i.minmax.message)),i.maxlength&&e.setAttribute("maxlength",i.maxlength)}createErrorBubble(){const e=document.createElement("div");return e.className="errorBubble",e}appendCheckboxInput(e,i,t){if(e.label){const e=document.createElement("br");t.appendChild(e)}if(t.appendChild(i),!e.inlineLabel)return;const o=document.createElement("span");o.className="inlineLabel",o.textContent=e.inlineLabel,t.appendChild(o)}createLabel(e,i,t){const o=document.createElement("label");if(o.className="inputBlock",o.innerText=e.label,!e.validation){const e=document.createElement("span");e.className="optional",e.innerHTML="&nbsp;(optional)",o.appendChild(e)}return e.readonly&&o.classList.add("readonly"),"checkbox"===e.type?(o.className+=" inlineBlock",this.appendCheckboxInput(e,i,o)):o.appendChild(i),o.appendChild(t),o}populateFormFromSchema(){if(!this._formSchema)return;const e=this._formSchema.properties;Object.keys(e).forEach((i=>{const t=e[i].form,o="select"===t.type?this.createSelect(i,t):this.createInput(i,t);t.validation&&this.applyValidation(o,t.validation);const n=this.createErrorBubble(),r=this.createLabel(t,o,n);this.template.content.append(r)}))}componentDidRender(){if(!this._formSchema)return;const e=this.template.content.cloneNode(!0),i=this._formSchema.properties;Object.keys(i).forEach((t=>{var o;const n=e.querySelector(`[name=${t}]`);if(n.oninvalid=this.validityCheckWrapper.bind(this),n.onblur=this.validityCheckWrapper.bind(this),n.onkeyup=this.fieldChanged.bind(this),n.onchange=this.fieldChanged.bind(this),this._data&&null!=this._data[t]&&(n.value=this._data[t]),null===(o=i[t].form.validation)||void 0===o?void 0:o.invalid){const e=i[t].form.validation.invalid.message;n.setCustomValidity(e),a(n,!0,e)}"select"===i[t].form.type&&n.classList.contains("placeholder")&&n.addEventListener("change",(()=>{n.classList.remove("placeholder")}))})),this.fieldset.replaceChildren(e)}validityCheckWrapper(e){const{target:i,hasError:t,errorMessage:o}=function(e){var i,t,o,n;e.preventDefault();const r=e.target;let a=!0,l="";switch(!0){case r.validity.valueMissing:l=null!==(i=r.dataset.required)&&void 0!==i?i:"This field is required";break;case r.validity.patternMismatch:l=null!==(t=r.dataset.pattern)&&void 0!==t?t:"Incorrect format";break;case r.validity.badInput:l=null!==(o=r.dataset.badinput)&&void 0!==o?o:"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(i,t,o)}render(){return t(o,null,t("form",{ref:e=>this.form=e,onSubmit:this.doSubmit.bind(this)},t("fieldset",{ref:e=>this.fieldset=e}),t("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}.material-symbols-rounded{font-family:"Material Symbols Rounded", sans-serif;font-weight:normal;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}.icon-left,.icon-right{flex-basis:24px}.icon-left span,.icon-right span{font-size:24px;line-height:24px;text-align:center;display:block;width:24px;height:24px;margin-top:4px}.icon-left span{margin-left:4px}.icon-right span{margin-right:4px}.icon-right{margin-top:5px}.icon-left{margin-top:5px;margin-left:4px}.iconleft .input{padding-left:4px}.iconright .input{padding-right:4px}.input-icon{position:absolute;margin-top:9px;margin-left:4px}.errormsg{display:flex;justify-content:center;align-items:center;float:left;margin-bottom:16px;box-sizing:border-box;background-color:transparent;height:26px;font-size:14px;line-height:16px;border-radius:none;z-index:2;color:#dc0000}.errormsg .validationicon{width:16px;height:16px;font-size:16px;line-height:19px;margin-right:4px;vertical-align:middle;color:#dc0000}.danger{color:#dc0000}.optional{color:#757575;font-weight:normal}label.inputBlock{display:block;position:relative;line-height:21px}label.inputInline{display:flex;white-space:nowrap;align-items:center}label.inputInline .input-container{margin:0 4px;width:100%;display:flex;align-items:center;gap:4px;position:relative}label{font-weight:500;font-size:16px;line-height:19px;margin-bottom:16px}input:not([type=submit]){font-family:"Roboto", serif;box-sizing:border-box;width:100%;height:36px;padding:0 16px;font-size:16px;line-height:19px;border:1px solid #d5d5d5;border-radius:4px;margin-top:4px}input[type=date]{background:white;display:block;min-width:calc(100% - 18px);line-height:37px}@media (max-width: 600px){input[type=date]{padding-top:6px}}input.invalid:invalid,input.standalone.invalid{border:1px solid #dc0000}.input-icon~input{padding:0 32px}input~.errorBubble{position:relative;font-size:14px;line-height:16px;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}input~.errorBubble:not(.visible){display:none}input~.errorBubble span{color:#dc0000;font-size:16px;margin-right:4px}input.invalid:invalid~.errorBubble{position:relative;font-size:14px;font-weight:normal;width:100%;font-family:"Roboto", sans-serif;color:#dc0000}input:focus{border-color:#1479c6}input:focus-visible{outline:none}.secondarylabel{color:#757575;font-size:14px;line-height:16px;font-weight:normal;display:flex;margin-top:4px}label.inputBlock.readonly{pointer-events:none;user-select:none;color:gray}input[readonly]{cursor:default;pointer-events:none;user-select:none;color:gray}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:400}.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.inputBlock.inlineBlock{display:inline-block}.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}';export{l as tttx_form}