wj-elements 0.1.104 → 0.1.107
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/{infinite-scroll.element-7dR-X4sd.js → infinite-scroll.element-BJZCBKDO.js} +2 -2
- package/dist/wje-file-upload.js +19 -2
- package/dist/wje-icon-picker.js +1 -1
- package/dist/wje-infinite-scroll.js +1 -1
- package/dist/wje-master.js +1 -1
- package/dist/wje-options.js +26 -7
- package/dist/wje-select.js +9 -7
- package/package.json +1 -1
|
@@ -238,7 +238,7 @@ class InfiniteScroll extends WJElement {
|
|
|
238
238
|
} else {
|
|
239
239
|
response = await this.getPages(page);
|
|
240
240
|
}
|
|
241
|
-
this.totalPages = response.totalPages;
|
|
241
|
+
this.totalPages = response == null ? void 0 : response.totalPages;
|
|
242
242
|
this.currentPage = page;
|
|
243
243
|
this.placementObj = this;
|
|
244
244
|
if (this.hasAttribute("placement"))
|
|
@@ -252,7 +252,7 @@ class InfiniteScroll extends WJElement {
|
|
|
252
252
|
this.endingEl.classList.add("show");
|
|
253
253
|
}
|
|
254
254
|
} catch (error) {
|
|
255
|
-
console.log(error
|
|
255
|
+
console.log(error);
|
|
256
256
|
} finally {
|
|
257
257
|
this.hideLoader();
|
|
258
258
|
}
|
package/dist/wje-file-upload.js
CHANGED
|
@@ -84,7 +84,10 @@ function isValidFileType(file, acceptedFileTypes) {
|
|
|
84
84
|
}
|
|
85
85
|
return false;
|
|
86
86
|
}
|
|
87
|
-
function upload(url, chunkSize = 1024 * 1024) {
|
|
87
|
+
function upload(url, chunkSize = 1024 * 1024, wholeFile = false) {
|
|
88
|
+
if (wholeFile) {
|
|
89
|
+
return (file, preview) => uploadWholeFile(url, file, preview);
|
|
90
|
+
}
|
|
88
91
|
return (file, preview) => uploadFileInChunks(url, chunkSize, file, preview);
|
|
89
92
|
}
|
|
90
93
|
async function uploadFileInChunks(url, chunkSize = 1024 * 1024, file, preview) {
|
|
@@ -134,6 +137,20 @@ async function uploadFileInChunks(url, chunkSize = 1024 * 1024, file, preview) {
|
|
|
134
137
|
console.log("File upload complete!");
|
|
135
138
|
return partResponses.at(-1).json();
|
|
136
139
|
}
|
|
140
|
+
function uploadWholeFile(url, file, preview) {
|
|
141
|
+
const formData = new FormData();
|
|
142
|
+
formData.append("file", file);
|
|
143
|
+
return fetch(url, {
|
|
144
|
+
method: "POST",
|
|
145
|
+
body: formData
|
|
146
|
+
}).then((response) => response.json()).then((data) => {
|
|
147
|
+
console.log(data);
|
|
148
|
+
preview.setAttribute("uploaded", file.size);
|
|
149
|
+
return data;
|
|
150
|
+
}).catch((error) => {
|
|
151
|
+
console.error("Error:", error);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
137
154
|
const styles = '/*\r\n[ WJ File Upload ]\r\n*/\r\n\r\n:host {\r\n width: 100%;\r\n}\r\n\r\n.native-file-upload {\r\n width: 100%;\r\n}\r\n\r\n.file-label {\r\n background: var(--wje-color-contrast-0);\r\n border: 1px dashed var(--wje-border-color);\r\n border-radius: var(--wje-border-radius-medium);\r\n align-items: center;\r\n justify-content: center;\r\n display: flex;\r\n padding: 1rem;\r\n margin-bottom: .5rem;\r\n flex-direction: column;\r\n}\r\n\r\n.file-preview {\r\n display: grid;\r\n grid-template-columns: auto 1fr 1fr;\r\n grid-template-rows: auto auto auto;\r\n gap: 0 0;\r\n grid-template-areas:\r\n "image name name"\r\n "image size size"\r\n "progress progress progress";\r\n}\r\n\r\n.file-image {\r\n grid-area: image;\r\n align-items: center;\r\n display: flex;\r\n}\r\n\r\n.file-name {\r\n grid-area: name;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n.file-size {\r\n grid-area: size;\r\n display: flex;\r\n}\r\n\r\n.file-progress { grid-area: progress; }\r\n\r\nwje-icon {\r\n margin-right: .25rem;\r\n}\r\n\r\nwje-img {\r\n margin-right: .25rem;\r\n}\r\n\r\n.file-info > span {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\nwje-slider {\r\n flex-basis: 100%;\r\n margin-top: .5rem;\r\n}\r\n\r\n::part(slider) {\r\n &::-webkit-slider-thumb {\r\n visibility: hidden;\r\n }\r\n\r\n &::-moz-range-thumb {\r\n visibility: hidden;\r\n }\r\n\r\n &::-ms-thumb {\r\n visibility: hidden;\r\n }\r\n}\r\n\r\nwje-img {\r\n width: 50px;\r\n height: 50px;\r\n display: flex;\r\n align-items: center;\r\n padding: .25rem;\r\n border: 1px solid var(--wje-border-color);\r\n border-radius: var(--wje-border-radius-medium);\r\n}';
|
|
138
155
|
class FileUpload extends WJElement {
|
|
139
156
|
/**
|
|
@@ -262,7 +279,7 @@ class FileUpload extends WJElement {
|
|
|
262
279
|
this.isShadowRoot = "open";
|
|
263
280
|
}
|
|
264
281
|
beforeDraw() {
|
|
265
|
-
this.uploadFunction = upload(this.uploadUrl, this.chunkSize);
|
|
282
|
+
this.uploadFunction = upload(this.uploadUrl, this.chunkSize, true);
|
|
266
283
|
}
|
|
267
284
|
/**
|
|
268
285
|
* Method to draw the component.
|
package/dist/wje-icon-picker.js
CHANGED
|
@@ -9,7 +9,7 @@ import "./wje-infinite-scroll.js";
|
|
|
9
9
|
import Input from "./wje-input.js";
|
|
10
10
|
import Tooltip from "./wje-tooltip.js";
|
|
11
11
|
import "./wje-popup.js";
|
|
12
|
-
import { I as InfiniteScroll } from "./infinite-scroll.element-
|
|
12
|
+
import { I as InfiniteScroll } from "./infinite-scroll.element-BJZCBKDO.js";
|
|
13
13
|
import { P as Popup } from "./popup.element-Dna4OwCH.js";
|
|
14
14
|
const styles = "/*\r\n[ Wj Icon Picker ]\r\n*/\r\n\r\n:host {\r\n --wje-icon-picker-radius: var(--wje-border-radius-small);\r\n --wje-icon-picker-icon-size: 1.5rem;\r\n --wje-icon-picker-border-width: 1px;\r\n --wje-icon-picker-border-style: solid;\r\n --wje-icon-picker-border-color: var(--wje-border-color);\r\n --wje-icon-picker-padding: .25rem;\r\n padding: 0 1rem;\r\n}\r\n\r\n.anchor {\r\n width: var(--wje-icon-picker-icon-size);\r\n height: var(--wje-icon-picker-icon-size);\r\n padding: var(--wje-icon-picker-padding);\r\n border-width: var(--wje-icon-picker-border-width);\r\n border-style: var(--wje-icon-picker-border-style);\r\n border-color: var(--wje-icon-picker-border-color);\r\n box-sizing: border-box;\r\n border-radius: var(--wje-icon-picker-radius);\r\n}\r\n\r\n.picker {\r\n width: 320px;\r\n height: 271px;\r\n box-shadow: 0 0 5px rgba(0,0,0,.05), 0 5px 20px rgba(0,0,0,.1);\r\n border-radius: var(--wje-icon-picker-radius);\r\n border-width: var(--wje-icon-picker-border-width);\r\n border-style: var(--wje-icon-picker-border-style);\r\n border-color: var(--wje-icon-picker-border-color);\r\n overflow: auto;\r\n padding: 1rem;\r\n background: var(--wje-background);\r\n}\r\n\r\n.icon-items {\r\n --icon-min-width: 2rem;\r\n display: grid;\r\n grid-gap: .5rem;\r\n grid-template-columns: repeat(auto-fit,minmax(var(--icon-min-width),1fr));\r\n}\r\n\r\n.icon-item {\r\n box-sizing: border-box;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n text-align: center;\r\n color: inherit;\r\n padding: .25rem;\r\n min-height: var(--wje-icon-picker-icon-size);\r\n min-width: var(--wje-icon-picker-icon-size);\r\n text-decoration: none;\r\n\r\n &:hover {\r\n border-radius: .25rem;\r\n background: var(--wje-border-color);\r\n }\r\n}\r\n\r\n.wje-size {\r\n --wje-icon-size: 24px !important;\r\n}\r\n\r\nicon-item svg {\r\n width: var(--wje-icon-picker-icon-size);\r\n height: var(--wje-icon-picker-icon-size);\r\n}\r\n\r\nwje-input {\r\n --wje-input-border-radius: 4px;\r\n --wje-input-margin-bottom: 0;\r\n}\r\n\r\nwje-infinite-scroll {\r\n margin-top: 1rem;\r\n}\r\n\r\nwje-select {\r\n --wje-select-border-width: 0 0 1px 0 !important;\r\n --wje-select-border-radius: 0 !important;\r\n margin-bottom: 1rem;\r\n}\r\n\r\n.anchor wje-icon {\r\n --wje-icon-size: 100% !important;\r\n}";
|
|
15
15
|
class IconPicker extends WJElement {
|
package/dist/wje-master.js
CHANGED
|
@@ -99,7 +99,7 @@ import { default as default84 } from "./wje-tooltip.js";
|
|
|
99
99
|
import { default as default85 } from "./wje-visually-hidden.js";
|
|
100
100
|
import { default as default86 } from "./wje-sliding-container.js";
|
|
101
101
|
import { L } from "./list.element-BkOOqBtW.js";
|
|
102
|
-
import { I } from "./infinite-scroll.element-
|
|
102
|
+
import { I } from "./infinite-scroll.element-BJZCBKDO.js";
|
|
103
103
|
import { P } from "./popup.element-Dna4OwCH.js";
|
|
104
104
|
function formatDate(input, format) {
|
|
105
105
|
let date;
|
package/dist/wje-options.js
CHANGED
|
@@ -5,7 +5,7 @@ var __publicField = (obj, key, value) => {
|
|
|
5
5
|
return value;
|
|
6
6
|
};
|
|
7
7
|
import WJElement, { event } from "./wje-element.js";
|
|
8
|
-
import { I as InfiniteScroll } from "./infinite-scroll.element-
|
|
8
|
+
import { I as InfiniteScroll } from "./infinite-scroll.element-BJZCBKDO.js";
|
|
9
9
|
import { L as List } from "./list.element-BkOOqBtW.js";
|
|
10
10
|
import Option from "./wje-option.js";
|
|
11
11
|
class Options extends WJElement {
|
|
@@ -30,10 +30,17 @@ class Options extends WJElement {
|
|
|
30
30
|
*/
|
|
31
31
|
__publicField(this, "htmlItem", (item) => {
|
|
32
32
|
let option = document.createElement("wje-option");
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
if (item[this.itemValue] == null) {
|
|
34
|
+
console.warn(`The item ${JSON.stringify(item)} does not have the property ${this.itemValue}`);
|
|
35
|
+
}
|
|
36
|
+
if (item[this.itemText] == null) {
|
|
37
|
+
console.warn(`The item ${JSON.stringify(item)} does not have the property ${this.itemText}`);
|
|
38
|
+
}
|
|
39
|
+
option.setAttribute("value", item[this.itemValue] ?? "");
|
|
40
|
+
option.innerText = item[this.itemText] ?? "";
|
|
35
41
|
return option;
|
|
36
42
|
});
|
|
43
|
+
this._loadedOptions = [];
|
|
37
44
|
}
|
|
38
45
|
/**
|
|
39
46
|
* Returns the list of attributes to observe for changes.
|
|
@@ -86,11 +93,16 @@ class Options extends WJElement {
|
|
|
86
93
|
set lazy(value) {
|
|
87
94
|
this.setAttribute("lazy", value);
|
|
88
95
|
}
|
|
96
|
+
get options() {
|
|
97
|
+
var _a;
|
|
98
|
+
return (_a = this._loadedOptions) == null ? void 0 : _a.flat();
|
|
99
|
+
}
|
|
89
100
|
/**
|
|
90
101
|
* Lifecycle method, called whenever an observed property changes
|
|
91
102
|
*/
|
|
92
|
-
attributeChangedCallback(name,
|
|
93
|
-
if (this.infiniteScroll) {
|
|
103
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
104
|
+
if (this.infiniteScroll && name === "search" && oldValue !== newValue) {
|
|
105
|
+
this._loadedOptions = [];
|
|
94
106
|
this.infiniteScroll.placementObj.innerHTML = "";
|
|
95
107
|
this.infiniteScroll.totalPages = 0;
|
|
96
108
|
this.infiniteScroll.refresh();
|
|
@@ -117,17 +129,21 @@ class Options extends WJElement {
|
|
|
117
129
|
const infiniteScroll = document.createElement("wje-infinite-scroll");
|
|
118
130
|
infiniteScroll.setAttribute("placement", "wje-list");
|
|
119
131
|
infiniteScroll.setAttribute("height", "100%");
|
|
132
|
+
infiniteScroll.setAttribute("object-name", this.optionArrayPath);
|
|
120
133
|
infiniteScroll.append(list);
|
|
121
134
|
infiniteScroll.dataToHtml = this.htmlItem;
|
|
122
135
|
infiniteScroll.setCustomData = async (page, signal) => {
|
|
123
136
|
let res = await this.service.get(`${this.url}${this.search ? `/${this.search}` : ""}?page=${page}&size=${this.lazyLoadSize}`, null, false, signal);
|
|
137
|
+
this._loadedOptions.push(this.processData(res));
|
|
124
138
|
return res;
|
|
125
139
|
};
|
|
126
140
|
this.contains(infiniteScroll) || this.appendChild(infiniteScroll);
|
|
127
141
|
this.infiniteScroll = infiniteScroll;
|
|
128
142
|
} else {
|
|
129
143
|
this.response = await this.getPages();
|
|
130
|
-
this.
|
|
144
|
+
const optionsData = this.processData(this.response);
|
|
145
|
+
this._loadedOptions.push(optionsData);
|
|
146
|
+
this.append(...optionsData.map(this.htmlItem));
|
|
131
147
|
}
|
|
132
148
|
fragment.appendChild(slot);
|
|
133
149
|
return fragment;
|
|
@@ -140,7 +156,7 @@ class Options extends WJElement {
|
|
|
140
156
|
*/
|
|
141
157
|
processData(data) {
|
|
142
158
|
var _a;
|
|
143
|
-
const splittedOptionArrayPath = (_a = this.optionArrayPath) == null ? void 0 : _a.split(".");
|
|
159
|
+
const splittedOptionArrayPath = this.optionArrayPath ? (_a = this.optionArrayPath) == null ? void 0 : _a.split(".") : null;
|
|
144
160
|
let options = data;
|
|
145
161
|
splittedOptionArrayPath == null ? void 0 : splittedOptionArrayPath.forEach((path) => {
|
|
146
162
|
options = options[path];
|
|
@@ -162,6 +178,9 @@ class Options extends WJElement {
|
|
|
162
178
|
const data = await response.json();
|
|
163
179
|
return data;
|
|
164
180
|
}
|
|
181
|
+
findSelectedOptionData(selectedOptionValues = []) {
|
|
182
|
+
return this.options.filter((option) => selectedOptionValues.includes(option[this.itemValue]));
|
|
183
|
+
}
|
|
165
184
|
}
|
|
166
185
|
Options.define("wje-options", Options);
|
|
167
186
|
export {
|
package/dist/wje-select.js
CHANGED
|
@@ -14,7 +14,7 @@ import Input from "./wje-input.js";
|
|
|
14
14
|
import Option from "./wje-option.js";
|
|
15
15
|
import Options from "./wje-options.js";
|
|
16
16
|
import { P as Popup } from "./popup.element-Dna4OwCH.js";
|
|
17
|
-
const styles = "/*\r\n[ WJ Select ]\r\n*/\r\n\r\n:host {\r\n --wje-select-border-width: 1px;\r\n --wje-select-border-style: solid;\r\n --wje-select-border-color: var(--wje-border-color);\r\n\r\n --wje-select-options-border-width: 1px;\r\n --wje-select-options-border-style: var(--wje-border-style);\r\n --wje-select-options-border-color: var(--wje-border-color);\r\n\r\n --wje-select-background: var(--wje-background);\r\n --wje-select-line-height: 20px;\r\n --wje-select-color: var(--wje-color);\r\n --wje-select-border-radius: var(--wje-border-radius-medium);\r\n\r\n width: 100%;\r\n display: block;\r\n [slot=arrow] {\r\n transform: rotate(0deg);\r\n transition: all .2s ease-in;\r\n }\r\n}\r\n\r\n.native-select {\r\n &.default{\r\n .wrapper {\r\n display: block;\r\n border-width: var(--wje-select-border-width);\r\n border-style: var(--wje-select-border-style);\r\n border-color: var(--wje-select-border-color);\r\n border-radius: var(--wje-select-border-radius);\r\n padding-inline: .5rem;\r\n padding-top: 0.125rem;\r\n padding-bottom: 0.125rem;\r\n }\r\n .input-wrapper {\r\n padding: 0;\r\n min-height: 28px;\r\n margin-top: -4px;\r\n }\r\n &.focused {\r\n wje-label {\r\n opacity: 0.67;\r\n font-size: 12px;\r\n letter-spacing: normal;\r\n }\r\n }\r\n wje-label {\r\n margin: 0;\r\n display: block;\r\n opacity: 1;\r\n cursor: text;\r\n transition: opacity 0.2s ease 0s;\r\n line-height: var(--wje-select-line-height);\r\n &.fade {\r\n opacity: 0.5;\r\n font-size: 12px;\r\n letter-spacing: normal;\r\n }\r\n }\r\n }\r\n &.standard {\r\n .wrapper {\r\n background-color: var(--wje-select-background);\r\n border-width: var(--wje-select-border-width);\r\n border-style: var(--wje-select-border-style);\r\n border-color: var(--wje-select-border-color);\r\n border-radius: var(--wje-select-border-radius);\r\n }\r\n .input-wrapper {\r\n background: transparent;\r\n width: 100%;\r\n }\r\n }\r\n}\r\n\r\n.wrapper {\r\n display: flex;\r\n width: 100%;\r\n}\r\n\r\n.input-wrapper {\r\n display: grid;\r\n grid-template-columns: auto 1fr auto auto auto;\r\n align-items: center;\r\n background-color: var(--wje-select-background);\r\n min-height: 28px;\r\n color: var(--wje-select-color);\r\n line-height: var(--wje-select-line-height);\r\n appearance: none;\r\n padding: 2px .5rem;\r\n font-size: 14px !important;\r\n font-weight: normal;\r\n vertical-align: middle;\r\n}\r\n\r\ninput {\r\n color: var(--wje-select-color);\r\n line-height: var(--wje-select-line-height);\r\n font-size: 14px !important;\r\n font-weight: 400;\r\n letter-spacing: .01em;\r\n border: medium;\r\n height: 25px;\r\n min-height: 25px;\r\n padding: 0;\r\n background: none;\r\n box-shadow: none;\r\n width: 100%;\r\n outline: 0;\r\n font-size: 14px !important;\r\n}\r\n\r\n::placeholder {\r\n opacity: 1;\r\n}\r\n\r\n:host [active] {\r\n .wrapper {\r\n border-radius: var(--wje-select-border-radius) var(--wje-select-border-radius) 0 0;\r\n }\r\n [slot=arrow] {\r\n transform: rotate(180deg);\r\n transition: all .2s ease-in;\r\n }\r\n}\r\n\r\n.options-wrapper {\r\n border-width: var(--wje-select-options-border-width);\r\n border-style: var(--wje-select-options-border-style);\r\n border-color: var(--wje-select-options-border-color);\r\n border-radius: 0 0 var(--wje-select-border-radius) var(--wje-select-border-radius);\r\n margin-top: calc(0px - var(--wje-select-border-width));\r\n background: var(--wje-select-background);\r\n overflow: hidden;\r\n\r\n}\r\n\r\n.find {\r\n --wje-input-border-radius: 0;\r\n --wje-input-border-width: 0 0 1px 0;\r\n}\r\n\r\n.list {\r\n overflow: auto;\r\n height: 100%;\r\n}\r\n\r\n.options-wrapper:has(.find) .list {\r\n height: calc(100% - 32px - .5rem);\r\n}\r\n\r\n:host([multiple]) input {\r\n position: absolute;\r\n z-index: -1;\r\n top: 0;\r\n left: 0;\r\n width: 0;\r\n height: 0;\r\n opacity: 0;\r\n}\r\n\r\n:host([multiple]) .chips {\r\n display: flex;\r\n flex: 1;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n}\r\n\r\n:host([disabled]) .input-wrapper{\r\n opacity: 0.5;\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n}\r\n\r\n.counter {\r\n padding-inline: .5rem;\r\n}\r\n\r\nwje-chip {\r\n --wje-chip-margin: 0 .25rem 0 0;\r\n}\r\n\r\nwje-button {\r\n --wje-padding-top: .25rem;\r\n --wje-padding-start: .25rem;\r\n --wje-padding-end: .25rem;\r\n --wje-padding-bottom: .25rem;\r\n --wje-button-margin-inline: 0 .25rem;\r\n}\r\n\r\n.slot-start, .slot-end {\r\n &:not(:empty) {\r\n margin-right: .5rem;\r\n }\r\n}\r\n";
|
|
17
|
+
const styles = "/*\r\n[ WJ Select ]\r\n*/\r\n\r\n:host {\r\n --wje-select-border-width: 1px;\r\n --wje-select-border-style: solid;\r\n --wje-select-border-color: var(--wje-border-color);\r\n\r\n --wje-select-options-border-width: 1px;\r\n --wje-select-options-border-style: var(--wje-border-style);\r\n --wje-select-options-border-color: var(--wje-border-color);\r\n\r\n --wje-select-background: var(--wje-background);\r\n --wje-select-line-height: 20px;\r\n --wje-select-color: var(--wje-color);\r\n --wje-select-border-radius: var(--wje-border-radius-medium);\r\n\r\n --wje-select-margin-bottom: .5rem;\r\n margin-bottom: var(--wje-select-margin-bottom);\r\n\r\n width: 100%;\r\n display: block;\r\n [slot=arrow] {\r\n transform: rotate(0deg);\r\n transition: all .2s ease-in;\r\n }\r\n}\r\n\r\n.native-select {\r\n &.default{\r\n .wrapper {\r\n display: block;\r\n border-width: var(--wje-select-border-width);\r\n border-style: var(--wje-select-border-style);\r\n border-color: var(--wje-select-border-color);\r\n border-radius: var(--wje-select-border-radius);\r\n padding-inline: .5rem;\r\n padding-top: 0.125rem;\r\n padding-bottom: 0.125rem;\r\n }\r\n .input-wrapper {\r\n padding: 0;\r\n min-height: 28px;\r\n margin-top: -4px;\r\n }\r\n &.focused {\r\n wje-label {\r\n opacity: 0.67;\r\n font-size: 12px;\r\n letter-spacing: normal;\r\n }\r\n }\r\n wje-label {\r\n margin: 0;\r\n display: block;\r\n opacity: 1;\r\n cursor: text;\r\n transition: opacity 0.2s ease 0s;\r\n line-height: var(--wje-select-line-height);\r\n &.fade {\r\n opacity: 0.5;\r\n font-size: 12px;\r\n letter-spacing: normal;\r\n }\r\n }\r\n }\r\n &.standard {\r\n .wrapper {\r\n background-color: var(--wje-select-background);\r\n border-width: var(--wje-select-border-width);\r\n border-style: var(--wje-select-border-style);\r\n border-color: var(--wje-select-border-color);\r\n border-radius: var(--wje-select-border-radius);\r\n }\r\n .input-wrapper {\r\n background: transparent;\r\n width: 100%;\r\n }\r\n }\r\n}\r\n\r\n.wrapper {\r\n display: flex;\r\n width: 100%;\r\n}\r\n\r\n.input-wrapper {\r\n display: grid;\r\n grid-template-columns: auto 1fr auto auto auto;\r\n align-items: center;\r\n background-color: var(--wje-select-background);\r\n min-height: 28px;\r\n color: var(--wje-select-color);\r\n line-height: var(--wje-select-line-height);\r\n appearance: none;\r\n padding: 2px .5rem;\r\n font-size: 14px !important;\r\n font-weight: normal;\r\n vertical-align: middle;\r\n}\r\n\r\ninput {\r\n color: var(--wje-select-color);\r\n line-height: var(--wje-select-line-height);\r\n font-size: 14px !important;\r\n font-weight: 400;\r\n letter-spacing: .01em;\r\n border: medium;\r\n height: 25px;\r\n min-height: 25px;\r\n padding: 0;\r\n background: none;\r\n box-shadow: none;\r\n width: 100%;\r\n outline: 0;\r\n font-size: 14px !important;\r\n}\r\n\r\n::placeholder {\r\n opacity: 1;\r\n}\r\n\r\n:host [active] {\r\n .wrapper {\r\n border-radius: var(--wje-select-border-radius) var(--wje-select-border-radius) 0 0;\r\n }\r\n [slot=arrow] {\r\n transform: rotate(180deg);\r\n transition: all .2s ease-in;\r\n }\r\n}\r\n\r\n.options-wrapper {\r\n border-width: var(--wje-select-options-border-width);\r\n border-style: var(--wje-select-options-border-style);\r\n border-color: var(--wje-select-options-border-color);\r\n border-radius: 0 0 var(--wje-select-border-radius) var(--wje-select-border-radius);\r\n margin-top: calc(0px - var(--wje-select-border-width));\r\n background: var(--wje-select-background);\r\n overflow: hidden;\r\n\r\n}\r\n\r\n.find {\r\n --wje-input-border-radius: 0;\r\n --wje-input-border-width: 0 0 1px 0;\r\n}\r\n\r\n.list {\r\n overflow: auto;\r\n height: 100%;\r\n}\r\n\r\n.options-wrapper:has(.find) .list {\r\n height: calc(100% - 32px - .5rem);\r\n}\r\n\r\n:host([multiple]) input {\r\n position: absolute;\r\n z-index: -1;\r\n top: 0;\r\n left: 0;\r\n width: 0;\r\n height: 0;\r\n opacity: 0;\r\n}\r\n\r\n:host([multiple]) .chips {\r\n display: flex;\r\n flex: 1;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n}\r\n\r\n:host([disabled]) .input-wrapper{\r\n opacity: 0.5;\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n}\r\n\r\n.counter {\r\n padding-inline: .5rem;\r\n}\r\n\r\nwje-chip {\r\n --wje-chip-margin: 0 .25rem 0 0;\r\n}\r\n\r\nwje-button {\r\n --wje-padding-top: .25rem;\r\n --wje-padding-start: .25rem;\r\n --wje-padding-end: .25rem;\r\n --wje-padding-bottom: .25rem;\r\n --wje-button-margin-inline: 0 .25rem;\r\n}\r\n\r\n.slot-start, .slot-end {\r\n &:not(:empty) {\r\n margin-right: .5rem;\r\n }\r\n}\r\n";
|
|
18
18
|
class Select extends WJElement {
|
|
19
19
|
/**
|
|
20
20
|
* Creates an instance of Select.
|
|
@@ -49,8 +49,7 @@ class Select extends WJElement {
|
|
|
49
49
|
this.popup.removeAttribute("active");
|
|
50
50
|
}
|
|
51
51
|
e.target.selected = !e.target.hasAttribute("selected");
|
|
52
|
-
this.selections(
|
|
53
|
-
event.dispatchCustomEvent(this, "wje-select:change");
|
|
52
|
+
this.selections();
|
|
54
53
|
});
|
|
55
54
|
/**
|
|
56
55
|
* Handles the chip remove event.
|
|
@@ -353,7 +352,7 @@ class Select extends WJElement {
|
|
|
353
352
|
this.selections();
|
|
354
353
|
e.stopPropagation();
|
|
355
354
|
});
|
|
356
|
-
this.selections();
|
|
355
|
+
this.selections(true);
|
|
357
356
|
this.list.addEventListener("wje-options:load", (e) => {
|
|
358
357
|
this.list.scrollTo(0, 0);
|
|
359
358
|
});
|
|
@@ -449,7 +448,7 @@ class Select extends WJElement {
|
|
|
449
448
|
*
|
|
450
449
|
* @param {Element} option - The option to select.
|
|
451
450
|
*/
|
|
452
|
-
selections(
|
|
451
|
+
selections(silence = false) {
|
|
453
452
|
let options = this.getSelectedOptions();
|
|
454
453
|
this.selectedOptions = Array.isArray(options) ? options : Array.from(options);
|
|
455
454
|
if (this.selectedOptions.length >= +this.maxOptions) {
|
|
@@ -457,12 +456,15 @@ class Select extends WJElement {
|
|
|
457
456
|
}
|
|
458
457
|
this.chips.innerHTML = "";
|
|
459
458
|
if (this.selectedOptions.length > 0) {
|
|
460
|
-
this.selectedOptions.forEach((
|
|
461
|
-
this.selectionChanged(
|
|
459
|
+
this.selectedOptions.forEach((option, index) => {
|
|
460
|
+
this.selectionChanged(option, ++index);
|
|
462
461
|
});
|
|
463
462
|
} else {
|
|
464
463
|
this.selectionChanged();
|
|
465
464
|
}
|
|
465
|
+
if (silence)
|
|
466
|
+
return;
|
|
467
|
+
event.dispatchCustomEvent(this, "wje-select:change");
|
|
466
468
|
}
|
|
467
469
|
/**
|
|
468
470
|
* Handles the counter.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wj-elements",
|
|
3
3
|
"description": "WebJET Elements is a modern set of user interface tools harnessing the power of web components designed to simplify web application development.",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.107",
|
|
5
5
|
"homepage": "https://github.com/lencys/wj-elements",
|
|
6
6
|
"author": "Lukáš Ondrejček <lukas.ondrejcek@gmail.com>",
|
|
7
7
|
"license": "MIT",
|