@3t-transform/threeteeui 0.1.7 → 0.1.10

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 (114) hide show
  1. package/dist/cjs/{index-451f61dd.js → index-dc6cc829.js} +83 -2
  2. package/dist/cjs/loader.cjs.js +2 -18
  3. package/dist/cjs/tttx-button.cjs.entry.js +2 -2
  4. package/dist/cjs/tttx-filter.cjs.entry.js +162 -0
  5. package/dist/cjs/tttx-form.cjs.entry.js +1 -1
  6. package/dist/cjs/tttx-icon.cjs.entry.js +1 -1
  7. package/dist/cjs/tttx-keyvalue-block.cjs.entry.js +4 -3
  8. package/dist/cjs/tttx-list.cjs.entry.js +4 -34
  9. package/dist/cjs/tttx-loading-spinner.cjs.entry.js +1 -1
  10. package/dist/cjs/tttx-standalone-input.cjs.entry.js +1 -1
  11. package/dist/cjs/tttx-toolbar.cjs.entry.js +1 -1
  12. package/dist/cjs/tttx.cjs.js +4 -116
  13. package/dist/collection/collection-manifest.json +1 -0
  14. package/dist/collection/components/atoms/tttx-button/tttx-button.css +8 -0
  15. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.css +4 -0
  16. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.js +2 -1
  17. package/dist/collection/components/molecules/tttx-filter/tttx-filter.css +215 -0
  18. package/dist/collection/components/molecules/tttx-filter/tttx-filter.js +325 -0
  19. package/dist/collection/components/molecules/tttx-filter/tttx-filter.stories.js +118 -0
  20. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.js +13 -0
  21. package/dist/collection/components/molecules/tttx-toolbar/tttx-toolbar.stories.js +1 -1
  22. package/dist/components/index.d.ts +1 -0
  23. package/dist/components/index.js +1 -4
  24. package/dist/components/tttx-button.js +1 -1
  25. package/dist/components/tttx-filter.d.ts +11 -0
  26. package/dist/components/tttx-filter.js +195 -0
  27. package/dist/components/tttx-keyvalue-block.js +3 -2
  28. package/dist/components/tttx-list.js +3 -33
  29. package/dist/esm/{index-0350f122.js → index-86faeaab.js} +83 -3
  30. package/dist/esm/loader.js +2 -18
  31. package/dist/esm/tttx-button.entry.js +2 -2
  32. package/dist/esm/tttx-filter.entry.js +158 -0
  33. package/dist/esm/tttx-form.entry.js +1 -1
  34. package/dist/esm/tttx-icon.entry.js +1 -1
  35. package/dist/esm/tttx-keyvalue-block.entry.js +4 -3
  36. package/dist/esm/tttx-list.entry.js +4 -34
  37. package/dist/esm/tttx-loading-spinner.entry.js +1 -1
  38. package/dist/esm/tttx-standalone-input.entry.js +1 -1
  39. package/dist/esm/tttx-toolbar.entry.js +1 -1
  40. package/dist/esm/tttx.js +4 -116
  41. package/dist/tttx/index.esm.js +0 -1
  42. package/dist/tttx/{p-cd1565e0.entry.js → p-12fc0b16.entry.js} +1 -1
  43. package/dist/tttx/p-52a47b7c.js +2 -0
  44. package/dist/tttx/p-603f6ebe.entry.js +1 -0
  45. package/dist/tttx/{p-4f3958fa.entry.js → p-8f3badad.entry.js} +1 -1
  46. package/dist/tttx/{p-0a85dda4.entry.js → p-ae48fe5a.entry.js} +1 -1
  47. package/dist/tttx/{p-cc6644c9.entry.js → p-b0eedc78.entry.js} +1 -1
  48. package/dist/tttx/{p-5cae1beb.entry.js → p-bdb054b2.entry.js} +1 -1
  49. package/dist/tttx/p-dcd78796.entry.js +1 -0
  50. package/dist/tttx/{p-92465671.entry.js → p-e25d5fe2.entry.js} +1 -1
  51. package/dist/tttx/{p-1b015a9d.entry.js → p-f1d7eb35.entry.js} +1 -1
  52. package/dist/tttx/tttx.esm.js +1 -129
  53. package/dist/types/components/molecules/tttx-filter/tttx-filter.d.ts +37 -0
  54. package/dist/types/components/molecules/tttx-filter/tttx-filter.stories.d.ts +43 -0
  55. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.d.ts +1 -0
  56. package/dist/types/components.d.ts +33 -0
  57. package/package.json +1 -1
  58. package/dist/cjs/app-globals-3a1e7e63.js +0 -5
  59. package/dist/cjs/css-shim-211819bc.js +0 -6
  60. package/dist/cjs/dom-9deb26c8.js +0 -75
  61. package/dist/cjs/index-11cfdabe.js +0 -3297
  62. package/dist/cjs/shadow-css-bf3843d2.js +0 -389
  63. package/dist/collection/components/atoms/tttx-button/test/tttx-button.e2e.js +0 -9
  64. package/dist/collection/components/atoms/tttx-button/test/tttx-button.spec.js +0 -83
  65. package/dist/collection/components/atoms/tttx-icon/test/tttx-icon.e2e.js +0 -9
  66. package/dist/collection/components/atoms/tttx-icon/test/tttx-icon.spec.js +0 -16
  67. package/dist/collection/components/atoms/tttx-keyvalue-block/test/tttx-keyvalue-block.spec.js +0 -216
  68. package/dist/collection/components/atoms/tttx-loading-spinner/Test/tttx-loading-spinner.spec.js +0 -64
  69. package/dist/collection/components/molecules/tttx-form/lib/setErrorState.spec.js +0 -38
  70. package/dist/collection/components/molecules/tttx-form/lib/validityCheck.spec.js +0 -214
  71. package/dist/collection/components/molecules/tttx-form/test/tttx-form.e2e.js +0 -9
  72. package/dist/collection/components/molecules/tttx-form/test/tttx-form.spec.js +0 -232
  73. package/dist/collection/components/molecules/tttx-list/test/ttttx-list.spec.e2e.js +0 -26
  74. package/dist/collection/components/molecules/tttx-list/test/tttx-list.spec.js +0 -183
  75. package/dist/collection/components/molecules/tttx-standalone-input/test/tttx-standalone-input.e2e.js +0 -9
  76. package/dist/collection/components/molecules/tttx-standalone-input/test/tttx-standalone-input.spec.js +0 -219
  77. package/dist/collection/components/molecules/tttx-toolbar/test/tttx-toolbar.test.js +0 -0
  78. package/dist/collection/shared/test/domsanitiser.options.spec.js +0 -23
  79. package/dist/esm/app-globals-0f993ce5.js +0 -3
  80. package/dist/esm/css-shim-9d54a2f2.js +0 -4
  81. package/dist/esm/dom-6be6f662.js +0 -73
  82. package/dist/esm/index-dbe25028.js +0 -3262
  83. package/dist/esm/shadow-css-ed4599f8.js +0 -387
  84. package/dist/tttx/app-globals-0f993ce5.js +0 -3
  85. package/dist/tttx/css-shim-9d54a2f2.js +0 -4
  86. package/dist/tttx/dom-6be6f662.js +0 -73
  87. package/dist/tttx/index-dbe25028.js +0 -3262
  88. package/dist/tttx/p-62869344.js +0 -2
  89. package/dist/tttx/p-a0179cb1.entry.js +0 -1
  90. package/dist/tttx/shadow-css-ed4599f8.js +0 -387
  91. package/dist/tttx/tttx-button.entry.js +0 -30
  92. package/dist/tttx/tttx-form.entry.js +0 -373
  93. package/dist/tttx/tttx-icon.entry.js +0 -17
  94. package/dist/tttx/tttx-keyvalue-block.entry.js +0 -63
  95. package/dist/tttx/tttx-list.entry.js +0 -1730
  96. package/dist/tttx/tttx-loading-spinner.entry.js +0 -22
  97. package/dist/tttx/tttx-standalone-input.entry.js +0 -66
  98. package/dist/tttx/tttx-toolbar.entry.js +0 -16
  99. package/dist/types/components/atoms/tttx-button/test/tttx-button.e2e.d.ts +0 -1
  100. package/dist/types/components/atoms/tttx-button/test/tttx-button.spec.d.ts +0 -1
  101. package/dist/types/components/atoms/tttx-icon/test/tttx-icon.e2e.d.ts +0 -1
  102. package/dist/types/components/atoms/tttx-icon/test/tttx-icon.spec.d.ts +0 -1
  103. package/dist/types/components/atoms/tttx-keyvalue-block/test/tttx-keyvalue-block.spec.d.ts +0 -1
  104. package/dist/types/components/atoms/tttx-loading-spinner/Test/tttx-loading-spinner.spec.d.ts +0 -1
  105. package/dist/types/components/molecules/tttx-form/lib/setErrorState.spec.d.ts +0 -1
  106. package/dist/types/components/molecules/tttx-form/lib/validityCheck.spec.d.ts +0 -1
  107. package/dist/types/components/molecules/tttx-form/test/tttx-form.e2e.d.ts +0 -1
  108. package/dist/types/components/molecules/tttx-form/test/tttx-form.spec.d.ts +0 -1
  109. package/dist/types/components/molecules/tttx-list/test/ttttx-list.spec.e2e.d.ts +0 -1
  110. package/dist/types/components/molecules/tttx-list/test/tttx-list.spec.d.ts +0 -1
  111. package/dist/types/components/molecules/tttx-standalone-input/test/tttx-standalone-input.e2e.d.ts +0 -1
  112. package/dist/types/components/molecules/tttx-standalone-input/test/tttx-standalone-input.spec.d.ts +0 -1
  113. package/dist/types/components/molecules/tttx-toolbar/test/tttx-toolbar.test.d.ts +0 -0
  114. package/dist/types/shared/test/domsanitiser.options.spec.d.ts +0 -1
@@ -0,0 +1,195 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+ import { d as defineCustomElement$2 } from './tttx-icon2.js';
3
+
4
+ const tttxFilterCss = ".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: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}.filter-container .filter-button{display:inline-flex;justify-content:center;align-items:center;font-size:14px;font-weight:400;font-family:\"Roboto\", serif;text-transform:uppercase;color:#212121;border:1px solid #d5d5d5;border-radius:4px;background:transparent;height:36px;width:95px;margin:0;padding-right:16px}.filter-container .filter-button .filter-icon{padding-left:8px;padding-right:4px}.filter-container .filter-button.--list-icon{font-size:0;width:36px;height:36px;padding:0}.filter-container .filter-button.--list-icon .filter-icon{padding:0}.filter-container .filter-button.--list-icon:hover{background:#e3e3e3}.filter-container .filter-button.--table-icon{font-size:0;width:36px;height:36px;padding:0;border:none}.filter-container .filter-button.--table-icon .filter-icon{padding:0;width:24px;height:24px}.filter-container .filter-button.--table-icon:hover{background:#e3e3e3;border-radius:50%;width:36px;height:36px}.filter-container .filter-button:hover{background:#e3e3e3}.filter-container .filter-popover-container{display:block;width:196px;border-radius:4px;box-shadow:0px 1px 5px #1111114D;position:absolute}.filter-container .filter-popover-container .filter-header{color:#757575;text-transform:uppercase;font-size:14px;font-weight:500;font-family:\"Roboto\", serif;padding-left:16px;padding-top:12px;padding-bottom:12px;margin:0}.filter-container .filter-popover-container .popover-divider{border:none;width:164px;display:flex;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:8px;height:1px;background-color:#d5d5d5}.filter-container .filter-popover-container .filter-option{display:flex;flex-direction:row;align-items:center;height:36px;padding-left:22px;padding-bottom:4px}.filter-container .filter-popover-container .filter-option .select-all-icon{padding-right:6px}.filter-container .filter-popover-container .filter-option .checkbox-icon{padding-right:8px}.filter-container .filter-popover-container .filter-option .filter-label{padding-left:8px;padding-bottom:3px;font-size:16px;font-weight:500;font-family:\"Roboto\", serif}.filter-container .filter-popover-container .filter-option:first-child{margin-top:8px}.filter-container .filter-popover-container .filter-option:last-child{margin-bottom:8px}.filter-container .filter-popover-container .filter-popover-button-container{display:flex;justify-content:flex-end;align-items:center;padding-bottom:8px}.filter-container .filter-popover-container .filter-popover-button-container .close-button{height:36px;width:74px;background-color:white;border:1px solid #d5d5d5;border-radius:4px;text-transform:uppercase;margin-right:8px;font-size:14px;font-weight:400;font-family:\"Roboto\", serif}.filter-container .filter-popover-container .filter-popover-button-container .apply-button{height:36px;width:73px;background-color:#1479c6;color:white;border-radius:4px;border:none;text-transform:uppercase;margin-right:16px;font-size:14px;font-weight:400;font-family:\"Roboto\", serif}.filter-container .filter-popover-container.--with-search-field{width:252px}.filter-container .filter-popover-container.--with-search-field .popover-divider{width:220px}.filter-container .filter-popover-container.--with-search-field .popover-divider:first-child{top:44px}.filter-container .filter-popover-container.--with-search-field .search-field-container{position:relative;color:#d5d5d5;width:220px;height:36px;padding:0 16px}.filter-container .filter-popover-container.--with-search-field .search-field-container .search-icon{position:absolute;top:50%;padding-left:8px;padding-bottom:9.2px;height:17px;width:17px;transform:translateY(-50%)}.filter-container .filter-popover-container.--with-search-field .search-field-container .search-input{padding-left:36px;border:1px solid #d5d5d5;border-radius:4px;height:36px;width:220px;font-size:16px;font-family:\"Roboto\", serif;font-weight:500;color:#9e9e9e;box-sizing:border-box}.filter-container .filter-popover-container.--with-search-field .search-field-container .search-input:focus-visible,.filter-container .filter-popover-container.--with-search-field .search-field-container .search-input:focus{outline:none;border:1px solid #1479c6}.filter-container .filter-popover-container.--with-search-field .search-field-container .search-input::placeholder{color:#9e9e9e;font-size:16px;font-family:\"Roboto\", serif;font-weight:500}.filter-container .filter-popover-container.--with-search-field .search-field-container .popover-divider{margin-top:8px}.filter-container .filter-popover-container.--with-search-field .filter-option:first-child{padding-top:8px}";
5
+
6
+ const TttxFilter$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ this.__registerHost();
10
+ this.__attachShadow();
11
+ this.filterChangeEvent = createEvent(this, "filterChangeEvent", 7);
12
+ this.filterKey = undefined;
13
+ this.filterOptions = [
14
+ { optionIcon: 'cancel', optionIconColor: 'darkred', optionText: 'Expired' },
15
+ { optionIcon: 'warning', optionIconColor: 'orange', optionText: 'Expiring soon' },
16
+ { optionIcon: 'check_circle', optionIconColor: 'green', optionText: 'Active' },
17
+ ];
18
+ this.showSelectAll = true;
19
+ this.showSearchField = false;
20
+ this.showOptionIcons = true;
21
+ this.filterButtonStyle = 'list filter';
22
+ this.filterHeader = 'Qualification status';
23
+ this.showPopover = false;
24
+ this.selectedFilters = this.filterOptions.map((filterOption) => filterOption.optionText);
25
+ this.filterSearchTerm = '';
26
+ this.displayedFilterSettings = this.filterOptions;
27
+ this.allSelected = true;
28
+ }
29
+ emitFilterEvent() {
30
+ this.filterChangeEvent.emit({
31
+ selectedFilters: this.selectedFilters,
32
+ filterKey: this.filterKey,
33
+ allSelected: this.allSelected,
34
+ });
35
+ }
36
+ onFilterButtonClick() {
37
+ this.togglePopover();
38
+ }
39
+ onCloseButtonClick() {
40
+ this.togglePopover();
41
+ }
42
+ onApplyFilterButtonClick() {
43
+ this.emitFilterEvent();
44
+ this.togglePopover();
45
+ }
46
+ onFilterOptionSelected(selectedOption) {
47
+ this.allSelected = false;
48
+ if (this.selectedFilters.includes(selectedOption)) {
49
+ this.selectedFilters = this.selectedFilters.filter((filter) => filter != selectedOption);
50
+ }
51
+ else {
52
+ this.selectedFilters = [...this.selectedFilters, selectedOption];
53
+ }
54
+ }
55
+ togglePopover() {
56
+ this.showPopover = !this.showPopover;
57
+ // if(!this.showPopover) {
58
+ // // this._focussedElementIndex = -1;
59
+ // }
60
+ }
61
+ // Commented out keyboard interaction for now
62
+ // @Listen('keyup')
63
+ // handleKeyUp(event: KeyboardEvent) {
64
+ // const keyboardEventValue = event.key;
65
+ // if (document.activeElement.id != `filter__${this.filterKey}`) return;
66
+ // if (event.key == " " || event.code == "Space" || event.keyCode == 32) {
67
+ // if (this._focussedElementIndex == 0) {
68
+ // this.onSelectAllClick()
69
+ // } else {
70
+ // const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
71
+ // this.onFilterOptionSelected(options[this._focussedElementIndex].textContent)
72
+ // }
73
+ // return;
74
+ // }
75
+ // switch (keyboardEventValue) {
76
+ // case 'Enter':
77
+ // if(!this.showPopover) {
78
+ // this.showPopover=true
79
+ // } else {
80
+ // this.emitFilterEvent()
81
+ // }
82
+ // break;
83
+ // case 'Escape':
84
+ // this.showPopover = false;
85
+ // this._focussedElementIndex = -1;
86
+ // break;
87
+ // case 'ArrowDown':
88
+ // this.showPopover = true;
89
+ // if (this._focussedElementIndex == -1) {
90
+ // this._focussedElementIndex = 0;
91
+ // } else {
92
+ // const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
93
+ // const currentOption = options[this._focussedElementIndex] as HTMLElement;
94
+ // currentOption.blur();
95
+ // // options[this._focussedElementIndex].focus();
96
+ // this._focussedElementIndex + 1 < options.length ? this._focussedElementIndex++ : (this._focussedElementIndex = 0);
97
+ // }
98
+ // break;
99
+ // case 'ArrowUp':
100
+ // if (this._focussedElementIndex == -1) {
101
+ // this.showPopover = true;
102
+ // this._focussedElementIndex = 0;
103
+ // } else {
104
+ // const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
105
+ // const currentOption = options[this._focussedElementIndex] as HTMLElement;
106
+ // currentOption.blur();
107
+ // // options[this._focussedElementIndex].focus();
108
+ // this._focussedElementIndex > 0 ? this._focussedElementIndex-- : (this._focussedElementIndex = options.length - 1);
109
+ // }
110
+ // break;
111
+ // }
112
+ // }
113
+ handleFilterChange(event) {
114
+ const target = event.target;
115
+ this.filterSearchTerm = target.value;
116
+ const filteredResults = this.filterOptions.filter((filterOption) => {
117
+ const lowercaseOption = filterOption.optionText.toLowerCase();
118
+ const filterTerm = this.filterSearchTerm.toLowerCase();
119
+ return lowercaseOption.includes(filterTerm);
120
+ });
121
+ this.displayedFilterSettings = filteredResults;
122
+ }
123
+ onSelectAllClick() {
124
+ this.allSelected = !this.allSelected;
125
+ if (this.allSelected) {
126
+ this.displayedFilterSettings.forEach((filterSetting) => { this.selectedFilters = [...this.selectedFilters, filterSetting.optionText]; });
127
+ }
128
+ else {
129
+ this.selectedFilters = [];
130
+ }
131
+ }
132
+ getFilterButtonClassName(buttonStyle) {
133
+ switch (buttonStyle) {
134
+ case 'table icon': {
135
+ return '--table-icon';
136
+ }
137
+ case 'list icon': {
138
+ return '--list-icon';
139
+ }
140
+ default: {
141
+ return '';
142
+ }
143
+ }
144
+ }
145
+ render() {
146
+ const filterPopoverContainerClassNameModifier = this.showSearchField ? '--with-search-field' : '';
147
+ const selectAllCheckboxIcon = this.allSelected ? 'check_box' : 'check_box_outline_blank';
148
+ const selectAllCheckboxColor = this.allSelected ? 'blue' : 'grey';
149
+ const buttonStyleClassNameModifier = this.getFilterButtonClassName(this.filterButtonStyle);
150
+ const filterKey = `filter__${this.filterKey}`;
151
+ return (h(Host, { id: filterKey }, h("div", { class: 'filter-container' }, h("button", { class: `filter-button ${buttonStyleClassNameModifier}`, type: 'button', onClick: this.onFilterButtonClick.bind(this) }, h("tttx-icon", { icon: 'filter_list', class: 'filter-icon', color: 'black' }), "Filter"), this.showPopover && (h("div", { class: `filter-popover-container ${filterPopoverContainerClassNameModifier}` }, h("h4", { class: 'filter-header' }, this.filterHeader), h("hr", { class: 'popover-divider' }), this.showSearchField ? (h("div", { class: 'search-field-container' }, h("tttx-icon", { icon: 'search', class: 'search-icon' }), h("input", { type: 'text', class: 'search-input', placeholder: 'Search', value: this.filterSearchTerm, onInput: this.handleFilterChange.bind(this) }), h("hr", { class: 'popover-divider' }))) : (''), h("div", { class: 'filter-options-container' }, this.showSelectAll ? (h("div", { class: 'filter-option', tabIndex: -1, onClick: this.onSelectAllClick.bind(this) }, h("tttx-icon", { icon: selectAllCheckboxIcon, color: selectAllCheckboxColor, class: 'select-all-icon' }), h("label", { class: 'filter-label' }, "Select all"))) : (''), this.displayedFilterSettings.map((option) => {
152
+ const checkboxIcon = this.selectedFilters.includes(option.optionText) ? 'check_box' : 'check_box_outline_blank';
153
+ const checkboxColor = this.selectedFilters.includes(option.optionText) ? 'blue' : 'grey';
154
+ return h("div", { class: 'filter-option', tabIndex: -1, onClick: () => this.onFilterOptionSelected(option.optionText), key: option.optionText }, h("tttx-icon", { icon: checkboxIcon, color: checkboxColor, class: 'checkbox-icon' }), this.showOptionIcons && h("tttx-icon", { icon: option.optionIcon, color: option.optionIconColor }), h("label", { class: 'filter-label' }, option.optionText));
155
+ })), h("hr", { class: 'popover-divider' }), h("div", { class: 'filter-popover-button-container' }, h("button", { type: 'button', class: 'close-button', onClick: this.onCloseButtonClick.bind(this) }, "Close"), h("button", { type: 'button', class: 'apply-button', onClick: this.onApplyFilterButtonClick.bind(this) }, "Apply")))))));
156
+ }
157
+ get el() { return this; }
158
+ static get style() { return tttxFilterCss; }
159
+ }, [1, "tttx-filter", {
160
+ "filterKey": [1, "filter-key"],
161
+ "filterOptions": [16],
162
+ "showSelectAll": [4, "show-select-all"],
163
+ "showSearchField": [4, "show-search-field"],
164
+ "showOptionIcons": [4, "show-option-icons"],
165
+ "filterButtonStyle": [1, "filter-button-style"],
166
+ "filterHeader": [1, "filter-header"],
167
+ "showPopover": [32],
168
+ "selectedFilters": [32],
169
+ "filterSearchTerm": [32],
170
+ "displayedFilterSettings": [32],
171
+ "allSelected": [32]
172
+ }]);
173
+ function defineCustomElement$1() {
174
+ if (typeof customElements === "undefined") {
175
+ return;
176
+ }
177
+ const components = ["tttx-filter", "tttx-icon"];
178
+ components.forEach(tagName => { switch (tagName) {
179
+ case "tttx-filter":
180
+ if (!customElements.get(tagName)) {
181
+ customElements.define(tagName, TttxFilter$1);
182
+ }
183
+ break;
184
+ case "tttx-icon":
185
+ if (!customElements.get(tagName)) {
186
+ defineCustomElement$2();
187
+ }
188
+ break;
189
+ } });
190
+ }
191
+
192
+ const TttxFilter = TttxFilter$1;
193
+ const defineCustomElement = defineCustomElement$1;
194
+
195
+ export { TttxFilter, defineCustomElement };
@@ -1,6 +1,6 @@
1
1
  import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
2
 
3
- const tttxKeyvalueBlockCss = ":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}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%}}@media (max-width: 600px){dl.horizontal div{width:100%}}";
3
+ const tttxKeyvalueBlockCss = ":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%}}@media (max-width: 600px){dl.horizontal div{width:100%}}";
4
4
 
5
5
  const TttxKeyvalueBlock$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
6
6
  constructor() {
@@ -26,10 +26,11 @@ const TttxKeyvalueBlock$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLE
26
26
  }
27
27
  renderArrayElements(values) {
28
28
  const elements = [];
29
+ const divSize = (100 / values.length).toString();
29
30
  for (let i = 0; i < values.length; i++) {
30
31
  const value = values[i];
31
32
  if (this.horizontal) {
32
- elements.push(h("div", null, h("dt", { class: 'mainTitle' }, value.title), h("dt", { class: 'subTitle' }, value.subTitle), h("dd", null, value.data)));
33
+ elements.push(h("div", { style: { maxWidth: divSize } }, h("dt", { class: 'mainTitle' }, value.title), h("dt", { class: 'subTitle' }, value.subTitle), h("dd", null, value.data)));
33
34
  }
34
35
  else {
35
36
  elements.push(h("dt", { class: 'mainTitle' }, value.title));
@@ -3,43 +3,16 @@ import { d as defineCustomElement$2 } from './tttx-icon2.js';
3
3
 
4
4
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
5
5
 
6
- function getDefaultExportFromCjs (x) {
7
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
8
- }
9
-
10
6
  function createCommonjsModule(fn, basedir, module) {
11
7
  return module = {
12
8
  path: basedir,
13
9
  exports: {},
14
10
  require: function (path, base) {
15
- return commonjsRequire(path, (base === undefined || base === null) ? module.path : base);
11
+ return commonjsRequire();
16
12
  }
17
13
  }, fn(module, module.exports), module.exports;
18
14
  }
19
15
 
20
- function getDefaultExportFromNamespaceIfPresent (n) {
21
- return n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;
22
- }
23
-
24
- function getDefaultExportFromNamespaceIfNotNamed (n) {
25
- return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;
26
- }
27
-
28
- function getAugmentedNamespace(n) {
29
- if (n.__esModule) return n;
30
- var a = Object.defineProperty({}, '__esModule', {value: true});
31
- Object.keys(n).forEach(function (k) {
32
- var d = Object.getOwnPropertyDescriptor(n, k);
33
- Object.defineProperty(a, k, d.get ? d : {
34
- enumerable: true,
35
- get: function () {
36
- return n[k];
37
- }
38
- });
39
- });
40
- return a;
41
- }
42
-
43
16
  function commonjsRequire () {
44
17
  throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
45
18
  }
@@ -48,11 +21,8 @@ var purify = createCommonjsModule(function (module, exports) {
48
21
  /*! @license DOMPurify 3.0.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.3/LICENSE */
49
22
 
50
23
  (function (global, factory) {
51
- 'object' === 'object' && 'object' !== 'undefined' ? module.exports = factory() :
52
- typeof undefined === 'function' && undefined.amd ? undefined(factory) :
53
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory());
54
- })(commonjsGlobal, (function () { 'use strict';
55
-
24
+ module.exports = factory() ;
25
+ })(commonjsGlobal, (function () {
56
26
  const {
57
27
  entries,
58
28
  setPrototypeOf,
@@ -54,6 +54,7 @@ const isComplexType = (o) => {
54
54
  // export function h(nodeName: string | d.FunctionalComponent, vnodeData: d.PropsType, ...children: d.ChildType[]): d.VNode;
55
55
  const h = (nodeName, vnodeData, ...children) => {
56
56
  let child = null;
57
+ let key = null;
57
58
  let simple = false;
58
59
  let lastSimple = false;
59
60
  const vNodeChildren = [];
@@ -81,6 +82,10 @@ const h = (nodeName, vnodeData, ...children) => {
81
82
  };
82
83
  walk(children);
83
84
  if (vnodeData) {
85
+ // normalize class / classname attributes
86
+ if (vnodeData.key) {
87
+ key = vnodeData.key;
88
+ }
84
89
  {
85
90
  const classData = vnodeData.className || vnodeData.class;
86
91
  if (classData) {
@@ -98,6 +103,9 @@ const h = (nodeName, vnodeData, ...children) => {
98
103
  if (vNodeChildren.length > 0) {
99
104
  vnode.$children$ = vNodeChildren;
100
105
  }
106
+ {
107
+ vnode.$key$ = key;
108
+ }
101
109
  return vnode;
102
110
  };
103
111
  const newVNode = (tag, text) => {
@@ -111,6 +119,9 @@ const newVNode = (tag, text) => {
111
119
  {
112
120
  vnode.$attrs$ = null;
113
121
  }
122
+ {
123
+ vnode.$key$ = null;
124
+ }
114
125
  return vnode;
115
126
  };
116
127
  const Host = {};
@@ -276,6 +287,33 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
276
287
  classList.remove(...oldClasses.filter((c) => c && !newClasses.includes(c)));
277
288
  classList.add(...newClasses.filter((c) => c && !oldClasses.includes(c)));
278
289
  }
290
+ else if (memberName === 'style') {
291
+ // update style attribute, css properties and values
292
+ {
293
+ for (const prop in oldValue) {
294
+ if (!newValue || newValue[prop] == null) {
295
+ if (prop.includes('-')) {
296
+ elm.style.removeProperty(prop);
297
+ }
298
+ else {
299
+ elm.style[prop] = '';
300
+ }
301
+ }
302
+ }
303
+ }
304
+ for (const prop in newValue) {
305
+ if (!oldValue || newValue[prop] !== oldValue[prop]) {
306
+ if (prop.includes('-')) {
307
+ elm.style.setProperty(prop, newValue[prop]);
308
+ }
309
+ else {
310
+ elm.style[prop] = newValue[prop];
311
+ }
312
+ }
313
+ }
314
+ }
315
+ else if (memberName === 'key')
316
+ ;
279
317
  else if (memberName === 'ref') {
280
318
  // minifier will clean this up
281
319
  if (newValue) {
@@ -525,6 +563,8 @@ const removeVnodes = (vnodes, startIdx, endIdx, vnode, elm) => {
525
563
  const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
526
564
  let oldStartIdx = 0;
527
565
  let newStartIdx = 0;
566
+ let idxInOld = 0;
567
+ let i = 0;
528
568
  let oldEndIdx = oldCh.length - 1;
529
569
  let oldStartVnode = oldCh[0];
530
570
  let oldEndVnode = oldCh[oldEndIdx];
@@ -532,6 +572,7 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
532
572
  let newStartVnode = newCh[0];
533
573
  let newEndVnode = newCh[newEndIdx];
534
574
  let node;
575
+ let elmToMove;
535
576
  while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
536
577
  if (oldStartVnode == null) {
537
578
  // VNode might have been moved left
@@ -598,7 +639,41 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
598
639
  newStartVnode = newCh[++newStartIdx];
599
640
  }
600
641
  else {
642
+ // Here we do some checks to match up old and new nodes based on the
643
+ // `$key$` attribute, which is set by putting a `key="my-key"` attribute
644
+ // in the JSX for a DOM element in the implementation of a Stencil
645
+ // component.
646
+ //
647
+ // First we check to see if there are any nodes in the array of old
648
+ // children which have the same key as the first node in the new
649
+ // children.
650
+ idxInOld = -1;
601
651
  {
652
+ for (i = oldStartIdx; i <= oldEndIdx; ++i) {
653
+ if (oldCh[i] && oldCh[i].$key$ !== null && oldCh[i].$key$ === newStartVnode.$key$) {
654
+ idxInOld = i;
655
+ break;
656
+ }
657
+ }
658
+ }
659
+ if (idxInOld >= 0) {
660
+ // We found a node in the old children which matches up with the first
661
+ // node in the new children! So let's deal with that
662
+ elmToMove = oldCh[idxInOld];
663
+ if (elmToMove.$tag$ !== newStartVnode.$tag$) {
664
+ // the tag doesn't match so we'll need a new DOM element
665
+ node = createElm(oldCh && oldCh[newStartIdx], newVNode, idxInOld);
666
+ }
667
+ else {
668
+ patch(elmToMove, newStartVnode);
669
+ // invalidate the matching old node so that we won't try to update it
670
+ // again later on
671
+ oldCh[idxInOld] = undefined;
672
+ node = elmToMove.$elm$;
673
+ }
674
+ newStartVnode = newCh[++newStartIdx];
675
+ }
676
+ else {
602
677
  // We either didn't find an element in the old children that matches
603
678
  // the key of the first new child OR the build is not using `key`
604
679
  // attributes at all. In either case we need to create a new element
@@ -646,7 +721,10 @@ const isSameVnode = (leftVNode, rightVNode) => {
646
721
  // compare if two vnode to see if they're "technically" the same
647
722
  // need to have the same element tag, and same key to be the same
648
723
  if (leftVNode.$tag$ === rightVNode.$tag$) {
649
- return true;
724
+ // this will be set if components in the build have `key` attrs set on them
725
+ {
726
+ return leftVNode.$key$ === rightVNode.$key$;
727
+ }
650
728
  }
651
729
  return false;
652
730
  };
@@ -1178,7 +1256,9 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
1178
1256
  {
1179
1257
  cmpMeta.$watchers$ = {};
1180
1258
  }
1181
- const tagName = cmpMeta.$tagName$;
1259
+ const tagName = options.transformTagName
1260
+ ? options.transformTagName(cmpMeta.$tagName$)
1261
+ : cmpMeta.$tagName$;
1182
1262
  const HostElement = class extends HTMLElement {
1183
1263
  // StencilLazyHost
1184
1264
  constructor(self) {
@@ -1349,4 +1429,4 @@ const flush = () => {
1349
1429
  const nextTick = /*@__PURE__*/ (cb) => promiseResolve().then(cb);
1350
1430
  const writeTask = /*@__PURE__*/ queueTask(queueDomWrites, true);
1351
1431
 
1352
- export { Host as H, bootstrapLazy as b, createEvent as c, h, promiseResolve as p, registerInstance as r };
1432
+ export { Host as H, bootstrapLazy as b, createEvent as c, getElement as g, h, promiseResolve as p, registerInstance as r };
@@ -1,32 +1,16 @@
1
- import { B as BUILD, C as CSS, p as plt, w as win, a as promiseResolve, b as bootstrapLazy } from './index-dbe25028.js';
2
- import { g as globalScripts } from './app-globals-0f993ce5.js';
1
+ import { p as promiseResolve, b as bootstrapLazy } from './index-86faeaab.js';
3
2
 
4
3
  /*
5
4
  Stencil Client Patch Esm v2.20.0 | MIT Licensed | https://stenciljs.com
6
5
  */
7
6
  const patchEsm = () => {
8
- // NOTE!! This fn cannot use async/await!
9
- // @ts-ignore
10
- if (BUILD.cssVarShim && !(CSS && CSS.supports && CSS.supports('color', 'var(--c)'))) {
11
- // @ts-ignore
12
- return import(/* webpackChunkName: "polyfills-css-shim" */ './css-shim-9d54a2f2.js').then(() => {
13
- if ((plt.$cssShim$ = win.__cssshim)) {
14
- return plt.$cssShim$.i();
15
- }
16
- else {
17
- // for better minification
18
- return 0;
19
- }
20
- });
21
- }
22
7
  return promiseResolve();
23
8
  };
24
9
 
25
10
  const defineCustomElements = (win, options) => {
26
11
  if (typeof window === 'undefined') return Promise.resolve();
27
12
  return patchEsm().then(() => {
28
- globalScripts();
29
- return bootstrapLazy([["tttx-button",[[1,"tttx-button",{"notext":[4],"icon":[1],"iconposition":[1],"design":[1]}]]],["tttx-list",[[1,"tttx-list",{"data":[1025],"name":[1]}]]],["tttx-standalone-input",[[2,"tttx-standalone-input",{"label":[1],"showerrormsg":[4],"showerrorbubble":[4],"errormsg":[1],"iconleft":[1],"iconright":[1],"inputicon":[1],"inline":[4],"inputAutocapitalize":[1,"input-autocapitalize"],"inputAutofocus":[4,"input-autofocus"],"inputKeyhint":[1,"input-keyhint"],"inputIndex":[8,"input-index"],"inputTitle":[1,"input-title"],"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]}]]],["tttx-form",[[1,"tttx-form",{"formschema":[1032],"submitValue":[1032,"submit-value"]}]]],["tttx-keyvalue-block",[[1,"tttx-keyvalue-block",{"keyvalues":[8],"horizontal":[4]}]]],["tttx-loading-spinner",[[1,"tttx-loading-spinner",{"loadingMessage":[1028,"loading-message"],"size":[1025]}]]],["tttx-toolbar",[[1,"tttx-toolbar",{"border":[4]}]]],["tttx-icon",[[1,"tttx-icon",{"icon":[1],"color":[1]}]]]], options);
13
+ return bootstrapLazy([["tttx-button",[[1,"tttx-button",{"notext":[4],"icon":[1],"iconposition":[1],"design":[1]}]]],["tttx-filter",[[1,"tttx-filter",{"filterKey":[1,"filter-key"],"filterOptions":[16],"showSelectAll":[4,"show-select-all"],"showSearchField":[4,"show-search-field"],"showOptionIcons":[4,"show-option-icons"],"filterButtonStyle":[1,"filter-button-style"],"filterHeader":[1,"filter-header"],"showPopover":[32],"selectedFilters":[32],"filterSearchTerm":[32],"displayedFilterSettings":[32],"allSelected":[32]}]]],["tttx-list",[[1,"tttx-list",{"data":[1025],"name":[1]}]]],["tttx-standalone-input",[[2,"tttx-standalone-input",{"label":[1],"showerrormsg":[4],"showerrorbubble":[4],"errormsg":[1],"iconleft":[1],"iconright":[1],"inputicon":[1],"inline":[4],"inputAutocapitalize":[1,"input-autocapitalize"],"inputAutofocus":[4,"input-autofocus"],"inputKeyhint":[1,"input-keyhint"],"inputIndex":[8,"input-index"],"inputTitle":[1,"input-title"],"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]}]]],["tttx-form",[[1,"tttx-form",{"formschema":[1032],"submitValue":[1032,"submit-value"]}]]],["tttx-keyvalue-block",[[1,"tttx-keyvalue-block",{"keyvalues":[8],"horizontal":[4]}]]],["tttx-loading-spinner",[[1,"tttx-loading-spinner",{"loadingMessage":[1028,"loading-message"],"size":[1025]}]]],["tttx-toolbar",[[1,"tttx-toolbar",{"border":[4]}]]],["tttx-icon",[[1,"tttx-icon",{"icon":[1],"color":[1]}]]]], options);
30
14
  });
31
15
  };
32
16
 
@@ -1,6 +1,6 @@
1
- import { r as registerInstance, h, e as Host } from './index-dbe25028.js';
1
+ import { r as registerInstance, h, H as Host } from './index-86faeaab.js';
2
2
 
3
- const tttxButtonCss = ".material-symbols-rounded{font-variation-settings:\"FILL\" 1, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24}.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:hover{background:rgba(17, 17, 17, 0.1);border:1px solid #D5D5D5}.button:active{background:rgba(17, 17, 17, 0.2);border:1px solid #D5D5D5}.primary{background:#1479c6;border:1px solid #1479c6;color:white}.primary:hover{background:#146EB3;border:1px solid #146EB3}.primary:active{background:#1464A2;border:1px solid #1464A2}.borderless{background:transparent;border:none;color:#212121}.borderless:hover{background:rgba(17, 17, 17, 0.1);border:none}.borderless:active{background:rgba(17, 17, 17, 0.2);border:none}.danger{background:#DC0000;border:1px solid #DC0000;color:white}.danger:hover{background:#C60000;border:1px solid #C60000}.danger:active{background:#B00000;border:1px solid #B00000}.disabled{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}.disabled:hover{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}.disabled:active{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}:host{display:inline-block}.spacingleft{margin-left:8px}";
3
+ const tttxButtonCss = ".material-symbols-rounded{font-variation-settings:\"FILL\" 1, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24}.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:hover{background:rgba(17, 17, 17, 0.1);border:1px solid #D5D5D5}.button:active{background:rgba(17, 17, 17, 0.2);border:1px solid #D5D5D5}.primary{background:#1479c6;border:1px solid #1479c6;color:white}.primary:hover{background:#146EB3;border:1px solid #146EB3}.primary:active{background:#1464A2;border:1px solid #1464A2}.borderless{background:transparent;border:none;color:#212121}.borderless:hover{background:rgba(17, 17, 17, 0.1);border:none}.borderless:active{background:rgba(17, 17, 17, 0.2);border:none}.danger{background:#DC0000;border:1px solid #DC0000;color:white}.danger:hover{background:#C60000;border:1px solid #C60000}.danger:active{background:#B00000;border:1px solid #B00000}.disabled{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}.disabled:hover{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}.disabled:active{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}:host{display:inline-block}button{cursor:pointer}tttx-icon{cursor:inherit}.spacingleft{margin-left:8px}";
4
4
 
5
5
  const TttxButton = class {
6
6
  constructor(hostRef) {