diff --git a/lib/ui/checkbox.d.ts b/lib/ui/checkbox.d.ts index 927c979..e79dfcc 100644 --- a/lib/ui/checkbox.d.ts +++ b/lib/ui/checkbox.d.ts @@ -14,6 +14,8 @@ interface CheckboxOptions { type?: string; /** 标签 */ label?: string | HTMLElement; + /** 标签提示文本 */ + title?: string; /** 是否已选中 */ checked?: boolean; /** 图片高度 */ diff --git a/lib/ui/checkbox.js b/lib/ui/checkbox.js index 731766e..82f4af4 100644 --- a/lib/ui/checkbox.js +++ b/lib/ui/checkbox.js @@ -2,7 +2,7 @@ import './css/checkbox.scss'; import { createElement } from "../functions"; import { createIcon } from "./icon"; -function fillCheckbox(container, type = 'fa-regular', label, tabindex = -1, charactor = 'check') { +function fillCheckbox(container, type = 'fa-regular', label, tabindex = -1, charactor = 'check', title) { container.appendChild( createElement('layer', layer => { layer.className = 'ui-check-inner'; @@ -24,7 +24,10 @@ function fillCheckbox(container, type = 'fa-regular', label, tabindex = -1, char container.appendChild(label); } else if (label != null && String(label).length > 0) { container.appendChild( - createElement('span', span => span.innerText = label) + createElement('span', span => { + span.innerText = label; + span.title = title; + }) ); } } @@ -52,7 +55,7 @@ export function createRadiobox(opts = {}) { if (opts.className) { container.classList.add(opts.className); } - fillCheckbox(container, opts.type, opts.label, opts.tabIndex, 'circle'); + fillCheckbox(container, opts.type, opts.label, opts.tabIndex, 'circle', opts.title); return container; } @@ -92,7 +95,7 @@ export function createCheckbox(opts = {}) { opts.uncheckedNode.classList.add('unchecked'); container.appendChild(opts.uncheckedNode); } else { - fillCheckbox(container, opts.type, opts.label, opts.tabIndex); + fillCheckbox(container, opts.type, opts.label, opts.tabIndex, undefined, opts.title); } return container; } @@ -144,7 +147,7 @@ export function resolveCheckbox(container = document.body, legacy) { label.className = 'ui-check-wrapper'; } label.replaceChildren(); - fillCheckbox(label, 'fa-regular', text, chk.tabIndex); + fillCheckbox(label, 'fa-regular', text, chk.tabIndex, undefined, label.title); label.insertBefore(chk, label.firstChild); } } @@ -161,7 +164,10 @@ export function resolveCheckbox(container = document.body, legacy) { fillCheckbox(box, box.dataset.type, box.dataset.label, - box.dataset.tabIndex) + box.dataset.tabIndex, + undefined, + box.title); + box.removeAttribute('title'); box.removeAttribute('data-type'); box.removeAttribute('data-label'); } diff --git a/lib/ui/css/grid.scss b/lib/ui/css/grid.scss index e5412f8..fa62f2e 100644 --- a/lib/ui/css/grid.scss +++ b/lib/ui/css/grid.scss @@ -44,7 +44,7 @@ --header-padding: 4px 12px 4px 8px; --header-filter-padding: 4px 26px 4px 8px; --spacing-s: 4px; - --spacing-cell: 6px 4px 6px 8px; + --spacing-cell: 9px 4px 9px 8px; --filter-line-height: 30px; --filter-item-padding: 0 4px; } @@ -291,6 +291,10 @@ overflow: hidden; text-overflow: ellipsis; white-space: pre; + + &.wrap { + white-space: normal; + } } } } @@ -357,6 +361,7 @@ } >input[type="text"], + >input[type="date"], >textarea { border: none; box-sizing: border-box; @@ -415,12 +420,8 @@ } .ui-date-cell { - line-height: 22px; - box-sizing: border-box; - padding: var(--spacing-cell); - border: none; - font-size: var(--font-size); - width: 100%; + height: var(--row-height); + text-indent: 4px; &:invalid { color: rgba(0, 0, 0, .3); @@ -581,6 +582,7 @@ .ui-check-wrapper { height: var(--filter-line-height); + line-height: var(--filter-line-height); display: flex; .ui-check-inner+* { diff --git a/lib/ui/css/variables/definition.scss b/lib/ui/css/variables/definition.scss index c1a7794..0397d2d 100644 --- a/lib/ui/css/variables/definition.scss +++ b/lib/ui/css/variables/definition.scss @@ -35,7 +35,7 @@ --border-radius: 2px; --text-indent: 4px; - --line-height: 24px; + --line-height: 18px; --font-size: .8125rem; // 13px --font-smaller-size: .75rem; // 12px diff --git a/lib/ui/grid/column.js b/lib/ui/grid/column.js index ee90b6f..990dd90 100644 --- a/lib/ui/grid/column.js +++ b/lib/ui/grid/column.js @@ -73,6 +73,15 @@ export class GridColumn { * @virtual */ + /** + * 获取用于判断文本大小的元素 + * @method + * @name GridColumn.getElement + * @param {HTMLElement} element - 单元格主内容元素 + * @returns {HTMLElement} 返回文本元素 + * @virtual + */ + /** * 获取编辑状态单元格值时调用的方法 * @method @@ -153,7 +162,7 @@ export class GridColumn { /** * @ignore */ - static toString() { return '[object Column]' } + static toString() { return 'GridCommon' } /** * @ignore @@ -234,6 +243,11 @@ export class GridInputColumn extends GridColumn { super.setEnabled(element, enabled); element.disabled = enabled === false; } + + /** + * @ignore + */ + static toString() { return 'GridInput' } } /** @@ -280,6 +294,11 @@ export class GridTextColumn extends GridInputColumn { // TODO: bad performance } } + + /** + * @ignore + */ + static toString() { return 'GridText' } } const SymbolDropdown = Symbol.for('ui-dropdown'); @@ -477,6 +496,11 @@ export class GridDropdownColumn extends GridColumn { drop.onCollapsed(); } } + + /** + * @ignore + */ + static toString() { return 'GridDropdown' } } /** @@ -538,6 +562,11 @@ export class GridCheckboxColumn extends GridColumn { super.setEnabled(element, enabled); element.querySelector('input').disabled = enabled === false; } + + /** + * @ignore + */ + static toString() { return 'GridCheckbox' } } /** @@ -609,6 +638,11 @@ export class GridIconColumn extends GridColumn { element.classList.remove('disabled'); } } + + /** + * @ignore + */ + static toString() { return 'GridIcon' } } /** @@ -700,4 +734,9 @@ export class GridDateColumn extends GridColumn { static formatDate(date) { return formatDate(date); } + + /** + * @ignore + */ + static toString() { return 'GridDate' } } \ No newline at end of file diff --git a/lib/ui/grid/grid.js b/lib/ui/grid/grid.js index 23774e6..6cac4a0 100644 --- a/lib/ui/grid/grid.js +++ b/lib/ui/grid/grid.js @@ -13,7 +13,7 @@ import { GridColumn, GridInputColumn, GridTextColumn, GridDropdownColumn, GridCh /** * @author Tsanie Lily * @license MIT - * @version 1.0.1 + * @version 1.0.2 */ const ColumnChangedType = { @@ -234,7 +234,9 @@ let r = lang; * @property {boolean} [orderable=true] - 列是否允许重排顺序 * @property {boolean} [allcheck=false] - 列为复选框类型时是否在列头增加全选复选框 * @property {boolean} [shrink=false] - 列为收缩列,禁用自动调整大小 - * @property {string} [class] - 单元格元素的额外样式类型字符串(仅在重建行元素时读取) + * @property {string} [class] - 单元格元素的额外样式类型字符串(仅在重建行元素时设置) + * @property {boolean} [contentWrap=false] - 单元格文本是否换行(仅在重建行元素时设置) + * @property {number} [maxLines=0] - 大于 0 时限制显示最大行数 * @property {any} [css] - 单元格css样式对象(仅在重建行元素时读取) * @property {any} [totalCss] - 合计行样式(仅在重建合计行元素时读取) * @property {(any | GridItemObjectCallback)} [style] - 单元格样式(填充行列数据时读取),支持直接返回样式对象或调用函数返回(若赋值则忽略 [styleFilter]{@linkcode GridColumnDefinition#styleFilter}) @@ -588,6 +590,12 @@ export class Grid { * @private */ currentSource: null, + /** + * 列可用性的关联字典 + * @type {KeyMap} + * @private + */ + enabledDict: {}, /** * 合计行数据 * @type {GridRowItem} @@ -825,10 +833,10 @@ export class Grid { /** * 文本行高(多行文本列计算高度时使用) * @type {number} - * @default 24 + * @default 18 * @ignore */ - lineHeight = 24; + lineHeight = 18; /** * 列头未过滤时的图标 * @type {string} @@ -1046,7 +1054,7 @@ export class Grid { * @property {number} [virtualCount=100] - 行数大于等于该值则启用虚模式 * @property {boolean} [autoResize=true] - 未设置宽度的列自动调整列宽 * @property {number} [rowHeight=36] - 表格行高 - * @property {number} [lineHeight=24] - 文本行高(多行文本列计算高度时使用) + * @property {number} [lineHeight=18] - 文本行高(多行文本列计算高度时使用) * @property {string} [filterIcon=ellipsis-h] - 列头未过滤时的图标 * @property {string} [filteredIcon=filter] - 列头已过滤时的图标 * @property {number} [extraRows=0] - 列表底部留出额外的空白行 @@ -2062,6 +2070,78 @@ export class Grid { return array; } + /** + * 导出已压缩的数据源,结构为 + * ``` + * { + * columns: [], + * source: [], + * rowHeight: number, + * sortDirection: number, + * sortKey?: string, + * sortArray?: Array<{ + * column: string, + * order: "asc" | "desc" + * }> + * } + * ``` + * @returns {Promise} 返回 `Uint8Array` 数据对象 + * @since 1.0.2 + */ + export() { + const js = new Blob(['function h(e,t,o){if(null==e)return"";let r;const l={},h={};let s="",n="",p="",a=2,f=3,c=2;const u=[];let i=0,d=0;for(let w=0;w>=1}else{r=1;for(let e=0;e>=1}0==--a&&(a=Math.pow(2,c),c++),delete h[p]}else{r=l[p];for(let e=0;e>=1}0==--a&&(a=Math.pow(2,c),c++),l[n]=f++,p=String(s)}if(""!==p){if(Object.prototype.hasOwnProperty.call(h,p)){if(p.charCodeAt(0)<256){for(let e=0;e>=1}else{r=1;for(let e=0;e>=1}0==--a&&(a=Math.pow(2,c),c++),delete h[p]}else{r=l[p];for(let e=0;e>=1}0==--a&&(a=Math.pow(2,c),c++)}r=2;for(let e=0;e>=1;let w=!0;do{i<<=1,d==t-1?(u.push(o(i)),w=!1):d++}while(w);return u.join("")}function s(e){return null==e?"":h(e,16,e=>String.fromCharCode(e))}function i(e){const t=s(e),o=new Uint8Array(2*t.length);for(let e=0,r=t.length;e>>8,o[2*e+1]=r%256}return o}self.addEventListener("message",function(e){this.self.postMessage(i(e.data))},!1);']); + return new Promise((resolve, reject) => { + let working; + const url = URL.createObjectURL(js); + const worker = new Worker(url); + /** + * @private + * @param {Function} next + * @param {any} data + */ + const terminate = (next, data) => { + working = false; + worker.terminate(); + URL.revokeObjectURL(url); + next(data); + } + // 超过 10 秒则拒绝 + const timer = setTimeout(() => { + if (working) { + terminate(reject, { message: 'timeout' }); + } + }, 10000); + worker.addEventListener('message', e => { + if (working) { + clearTimeout(timer); + terminate(resolve, e.data); + } + }) + worker.addEventListener('error', e => { + if (working) { + clearTimeout(timer); + terminate(reject, e); + } + }) + working = true; + worker.postMessage(JSON.stringify({ + columns: this.columns.map(c => ({ + key: c.key, + type: c.type?.toString(), + caption: c.caption, + width: c.width, + align: c.align, + visible: c.visible + })), + source: this.source, + rowHeight: this.rowHeight, + sortDirection: this.sortDirection, + sortKey: this.sortKey, + sortArray: this.sortArray + })); + }); + } + /** * @private * @callback PrivateGridComparerCallback @@ -2387,10 +2467,13 @@ export class Grid { if (style !== '') { cell.style.cssText = style; } - const element = GridColumn.create(col) + const element = GridColumn.create(col); if (typeof col.class === 'string') { GridColumn.setClass(element, col.class); } + if (col.contentWrap) { + element.classList.add('wrap'); + } cell.appendChild(element); } else { cell.style.display = 'none'; @@ -2474,6 +2557,9 @@ export class Grid { if (typeof col.class === 'string') { type.setClass(element, col.class); } + if (col.contentWrap) { + element.classList.add('wrap'); + } } cell.appendChild(element); if (col.events != null) { @@ -2649,6 +2735,9 @@ export class Grid { if (typeof col.class === 'string') { type.setClass(element, col.class); } + if (col.contentWrap) { + element.classList.add('wrap'); + } cell.replaceChildren(element); if (col.events != null) { for (let ev of Object.entries(col.events)) { @@ -2666,6 +2755,7 @@ export class Grid { delete virtualCell.attrs; delete virtualCell.style; delete virtualCell.value; + delete virtualCell.enabled; } if (typeof type.setEditing === 'function') { type.setEditing(element, virtualRow.editing); @@ -2675,15 +2765,17 @@ export class Grid { virtualCell.value = val; type.setValue(element, val, vals, col, this); } - if (virtualRow.editing && typeof type.setEnabled === 'function') { + if (typeof type.setEnabled === 'function') { let enabled; if (readonly) { enabled = false; } else { enabled = col.enabled; if (typeof enabled === 'function') { + this._var.enabledDict[col.key] = true; enabled = enabled.call(col, item); } else if (typeof enabled === 'string') { + this._var.enabledDict[col.key] = enabled; enabled = item[enabled]; } } @@ -2720,6 +2812,14 @@ export class Grid { } else if (typeof col.styleFilter === 'function') { style = col.styleFilter(item); } + if (col.maxLines > 0) { + const maxHeight = `${col.maxLines * this.lineHeight}px`; + if (style == null) { + style = { 'max-height': maxHeight }; + } else { + style['max-height'] = maxHeight; + } + } const styleText = style != null ? convertCssStyle(style) : ''; if (styleText !== virtualCell.style) { virtualCell.style = styleText; @@ -3420,9 +3520,11 @@ export class Grid { _doFillFilterList(content, array, all) { for (let item of array) { const div = createElement('div', 'filter-item'); + const display = Object.prototype.hasOwnProperty.call(item, 'DisplayValue') ? item.DisplayValue : item; div.appendChild(createCheckbox({ checked: item.__checked, - label: Object.prototype.hasOwnProperty.call(item, 'DisplayValue') ? item.DisplayValue : item, + label: display && String(display).replace(/(\r\n|\n|)/g, '\u00a0'), + title: display, onchange: e => { item.__checked = e.target.checked; all.querySelector('input').checked = ![...content.querySelectorAll('input')].some(i => !i.checked); @@ -3708,7 +3810,25 @@ export class Grid { // sub ui-grid return; } - const element = target.children[0]; + const row = target.dataset.row; + if (this._var.virtualRows[row]?.editing) { + delete holder.dataset.row; + delete holder.dataset.col; + if (holder.classList.contains('active')) { + holder.classList.remove('active'); + } + return; + } + const col = target.dataset.col; + if (holder.dataset.row === row && + holder.dataset.col === col) { + return; + } + const type = this._var.colTypes[this.columns[col]?.key]; + let element = target.children[0]; + if (type != null && typeof type.getElement === 'function') { + element = type.getElement(element); + } if (element?.tagName !== 'SPAN') { if (holder.classList.contains('active')) { delete holder.dataset.row; @@ -3717,13 +3837,8 @@ export class Grid { } return; } - const row = target.dataset.row; - const col = target.dataset.col; - if (holder.dataset.row === row && - holder.dataset.col === col) { - return; - } - if (element.scrollWidth > element.offsetWidth) { + if (element.scrollWidth > element.offsetWidth || + element.scrollHeight > element.offsetHeight) { holder.dataset.row = row; holder.dataset.col = col; holder.innerText = element.innerText; @@ -3738,7 +3853,7 @@ export class Grid { left = maxleft; } const height = target.offsetHeight; - holder.style.cssText = `top: ${top}px; left: ${left}px; max-width: ${this._var.wrapClientWidth}px; height: ${height - 2}px`; + holder.style.cssText = `top: ${top}px; left: ${left}px; max-width: ${this._var.wrapClientWidth}px; min-height: ${height - 2}px`; holder.classList.add('active'); } else if (holder.classList.contains('active')) { delete holder.dataset.row; @@ -3852,9 +3967,9 @@ export class Grid { if (this._var.currentSource == null) { return; } - const row = this._var.currentSource[this._var.startIndex + index]; - delete row.source; - const item = row.values; + const vals = this._var.currentSource[this._var.startIndex + index]; + delete vals.source; + const item = vals.values; if (item == null) { return; } @@ -3873,7 +3988,8 @@ export class Grid { oldValue ??= val; item[col.key] = value; } - const virtualCell = this._var.virtualRows[index]?.cells[col.key]; + const virtualRow = this._var.virtualRows[index]; + const virtualCell = virtualRow.cells[col.key]; if (virtualCell != null) { virtualCell.value = value; } @@ -3886,7 +4002,36 @@ export class Grid { } else { setTooltip(cell.children[0], tip, false, this.element); } - row.__changed = true; + // 调整其他列的可用性 + const row = this._tableRows[index]; + const offset = this.expandable ? 1 : 0; + this.columns.forEach((c, j) => { + const cache = this._var.enabledDict[c.key]; + if (cache !== true && cache !== col.key) { + return; + } + const cell = row.children[j + offset]; + if (cell == null) { + return; + } + const type = GridColumnTypeEnum.isCheckbox(c.type) ? + GridCheckboxColumn : this._var.colTypes[c.key] ?? GridColumn; + if (typeof type.setEnabled === 'function') { + if (typeof c.enabled === 'function') { + enabled = c.enabled(item); + } else if (typeof c.enabled === 'string') { + enabled = item[c.enabled]; + } else { + return; + } + const vCell = virtualRow.cells[c.key ?? j]; + if (enabled !== vCell.enabled) { + vCell.enabled = enabled; + type.setEnabled(cell.children[0], enabled); + } + } + }); + vals.__changed = true; if (typeof col.onChanged === 'function') { col.onChanged.call(this, item, value, oldValue, e); } diff --git a/package-lock.json b/package-lock.json index 6c844b9..8cf2ba6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,21 @@ { "name": "ui-lib", - "version": "1.0.1", + "version": "1.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ui-lib", - "version": "1.0.1", + "version": "1.0.2", "devDependencies": { "@mxssfd/typedoc-theme": "^1.1.3", "clean-jsdoc-theme": "^4.2.17", "docdash": "^2.0.2", "jsdoc": "^4.0.2", - "postcss-preset-env": "^9.4.0", + "postcss-preset-env": "^9.5.0", "sass": "^1.71.1", - "typedoc": "^0.25.10", - "vite": "^5.1.4", + "typedoc": "^0.25.11", + "vite": "^5.1.5", "vite-plugin-externals": "^0.6.2" } }, @@ -945,6 +945,28 @@ "postcss": "^8.4" } }, + "node_modules/@csstools/selector-resolve-nested": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-1.1.0.tgz", + "integrity": "sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, "node_modules/@csstools/selector-specificity": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.2.tgz", @@ -1440,9 +1462,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", - "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.1.tgz", + "integrity": "sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==", "cpu": [ "arm" ], @@ -1453,9 +1475,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", - "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.1.tgz", + "integrity": "sha512-wlzcWiH2Ir7rdMELxFE5vuM7D6TsOcJ2Yw0c3vaBR3VOsJFVTx9xvwnAvhgU5Ii8Gd6+I11qNHwndDscIm0HXg==", "cpu": [ "arm64" ], @@ -1466,9 +1488,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", - "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.1.tgz", + "integrity": "sha512-YRXa1+aZIFN5BaImK+84B3uNK8C6+ynKLPgvn29X9s0LTVCByp54TB7tdSMHDR7GTV39bz1lOmlLDuedgTwwHg==", "cpu": [ "arm64" ], @@ -1479,9 +1501,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", - "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.1.tgz", + "integrity": "sha512-opjWJ4MevxeA8FhlngQWPBOvVWYNPFkq6/25rGgG+KOy0r8clYwL1CFd+PGwRqqMFVQ4/Qd3sQu5t7ucP7C/Uw==", "cpu": [ "x64" ], @@ -1492,9 +1514,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", - "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.1.tgz", + "integrity": "sha512-uBkwaI+gBUlIe+EfbNnY5xNyXuhZbDSx2nzzW8tRMjUmpScd6lCQYKY2V9BATHtv5Ef2OBq6SChEP8h+/cxifQ==", "cpu": [ "arm" ], @@ -1505,9 +1527,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", - "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.1.tgz", + "integrity": "sha512-0bK9aG1kIg0Su7OcFTlexkVeNZ5IzEsnz1ept87a0TUgZ6HplSgkJAnFpEVRW7GRcikT4GlPV0pbtVedOaXHQQ==", "cpu": [ "arm64" ], @@ -1518,9 +1540,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", - "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.1.tgz", + "integrity": "sha512-qB6AFRXuP8bdkBI4D7UPUbE7OQf7u5OL+R94JE42Z2Qjmyj74FtDdLGeriRyBDhm4rQSvqAGCGC01b8Fu2LthQ==", "cpu": [ "arm64" ], @@ -1531,9 +1553,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", - "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.1.tgz", + "integrity": "sha512-sHig3LaGlpNgDj5o8uPEoGs98RII8HpNIqFtAI8/pYABO8i0nb1QzT0JDoXF/pxzqO+FkxvwkHZo9k0NJYDedg==", "cpu": [ "riscv64" ], @@ -1544,9 +1566,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", - "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.1.tgz", + "integrity": "sha512-nD3YcUv6jBJbBNFvSbp0IV66+ba/1teuBcu+fBBPZ33sidxitc6ErhON3JNavaH8HlswhWMC3s5rgZpM4MtPqQ==", "cpu": [ "x64" ], @@ -1557,9 +1579,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", - "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.1.tgz", + "integrity": "sha512-7/XVZqgBby2qp/cO0TQ8uJK+9xnSdJ9ct6gSDdEr4MfABrjTyrW6Bau7HQ73a2a5tPB7hno49A0y1jhWGDN9OQ==", "cpu": [ "x64" ], @@ -1570,9 +1592,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", - "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.1.tgz", + "integrity": "sha512-CYc64bnICG42UPL7TrhIwsJW4QcKkIt9gGlj21gq3VV0LL6XNb1yAdHVp1pIi9gkts9gGcT3OfUYHjGP7ETAiw==", "cpu": [ "arm64" ], @@ -1583,9 +1605,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", - "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.1.tgz", + "integrity": "sha512-LN+vnlZ9g0qlHGlS920GR4zFCqAwbv2lULrR29yGaWP9u7wF5L7GqWu9Ah6/kFZPXPUkpdZwd//TNR+9XC9hvA==", "cpu": [ "ia32" ], @@ -1596,9 +1618,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", - "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.1.tgz", + "integrity": "sha512-n+vkrSyphvmU0qkQ6QBNXCGr2mKjhP08mPRM/Xp5Ck2FV4NrHU+y6axzDeixUrCBHVUS51TZhjqrKBBsHLKb2Q==", "cpu": [ "x64" ], @@ -1801,9 +1823,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001593", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", - "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", + "version": "1.0.30001594", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001594.tgz", + "integrity": "sha512-VblSX6nYqyJVs8DKFMldE2IVCJjZ225LW00ydtUWwh5hk9IfkTOffO6r8gJNsH0qqqeAF8KrbMYA2VEwTlGW5g==", "dev": true, "funding": [ { @@ -2016,9 +2038,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.690", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.690.tgz", - "integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==", + "version": "1.4.694", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.694.tgz", + "integrity": "sha512-kM3SwvGTYpBFJSc8jm4IYVMIOzDmAGd/Ry96O9elRiM6iEwHKNKhtXyFGzpfMMIGZD84W4/hyaULlMmNVvLQlQ==", "dev": true }, "node_modules/entities": { @@ -2966,9 +2988,9 @@ } }, "node_modules/postcss-nesting": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.0.4.tgz", - "integrity": "sha512-WuCe0KnP4vKjLZK8VNoUWKL8ZLOv/5jiM94mHcI3VszLropHwmjotdUyP/ObzqZpXuQKP2Jf9R12vIHKFSStKw==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.1.0.tgz", + "integrity": "sha512-QOYnosaZ+mlP6plQrAxFw09UUp2Sgtxj1BVHN+rSVbtV0Yx48zRt9/9F/ZOoxOKBBEsaJk2MYhhVRjeRRw5yuw==", "dev": true, "funding": [ { @@ -2981,6 +3003,7 @@ } ], "dependencies": { + "@csstools/selector-resolve-nested": "^1.1.0", "@csstools/selector-specificity": "^3.0.2", "postcss-selector-parser": "^6.0.13" }, @@ -3073,9 +3096,9 @@ } }, "node_modules/postcss-preset-env": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-9.4.0.tgz", - "integrity": "sha512-5X2UA4Dn4xo7sJFCxlzW/dAGo71Oxh/K5DVls33hd2e3j06OKnW5FJQTw2hB0wTnGv0f6WcMaVBGFqcEfAgwlw==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-9.5.0.tgz", + "integrity": "sha512-ZTrTWCSqKVYSABB1GerMBb6F8Uto5YWIq1nqi+TKOHPzrXMcyJNuJTc0v2lp5WjG4Sfvwdo7HF/7/3j7HskRog==", "dev": true, "funding": [ { @@ -3094,7 +3117,7 @@ "@csstools/postcss-exponential-functions": "^1.0.4", "@csstools/postcss-font-format-keywords": "^3.0.2", "@csstools/postcss-gamut-mapping": "^1.0.3", - "@csstools/postcss-gradients-interpolation-method": "^4.0.10", + "@csstools/postcss-gradients-interpolation-method": "^4.0.11", "@csstools/postcss-hwb-function": "^3.0.9", "@csstools/postcss-ic-unit": "^3.0.4", "@csstools/postcss-initial": "^1.0.1", @@ -3117,12 +3140,12 @@ "@csstools/postcss-text-decoration-shorthand": "^3.0.4", "@csstools/postcss-trigonometric-functions": "^3.0.5", "@csstools/postcss-unset-value": "^3.0.1", - "autoprefixer": "^10.4.17", + "autoprefixer": "^10.4.18", "browserslist": "^4.22.3", "css-blank-pseudo": "^6.0.1", "css-has-pseudo": "^6.0.2", "css-prefers-color-scheme": "^9.0.1", - "cssdb": "^7.11.0", + "cssdb": "^7.11.1", "postcss-attribute-case-insensitive": "^6.0.3", "postcss-clamp": "^4.1.0", "postcss-color-functional-notation": "^6.0.5", @@ -3140,7 +3163,7 @@ "postcss-image-set-function": "^6.0.3", "postcss-lab-function": "^6.0.10", "postcss-logical": "^7.0.1", - "postcss-nesting": "^12.0.3", + "postcss-nesting": "^12.1.0", "postcss-opacity-percentage": "^2.0.0", "postcss-overflow-shorthand": "^5.0.1", "postcss-page-break": "^3.0.4", @@ -3265,9 +3288,9 @@ } }, "node_modules/rollup": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", - "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.1.tgz", + "integrity": "sha512-ggqQKvx/PsB0FaWXhIvVkSWh7a/PCLQAsMjBc+nA2M8Rv2/HG0X6zvixAB7KyZBRtifBUhy5k8voQX/mRnABPg==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -3280,19 +3303,19 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.0", - "@rollup/rollup-android-arm64": "4.12.0", - "@rollup/rollup-darwin-arm64": "4.12.0", - "@rollup/rollup-darwin-x64": "4.12.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", - "@rollup/rollup-linux-arm64-gnu": "4.12.0", - "@rollup/rollup-linux-arm64-musl": "4.12.0", - "@rollup/rollup-linux-riscv64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-musl": "4.12.0", - "@rollup/rollup-win32-arm64-msvc": "4.12.0", - "@rollup/rollup-win32-ia32-msvc": "4.12.0", - "@rollup/rollup-win32-x64-msvc": "4.12.0", + "@rollup/rollup-android-arm-eabi": "4.12.1", + "@rollup/rollup-android-arm64": "4.12.1", + "@rollup/rollup-darwin-arm64": "4.12.1", + "@rollup/rollup-darwin-x64": "4.12.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.12.1", + "@rollup/rollup-linux-arm64-gnu": "4.12.1", + "@rollup/rollup-linux-arm64-musl": "4.12.1", + "@rollup/rollup-linux-riscv64-gnu": "4.12.1", + "@rollup/rollup-linux-x64-gnu": "4.12.1", + "@rollup/rollup-linux-x64-musl": "4.12.1", + "@rollup/rollup-win32-arm64-msvc": "4.12.1", + "@rollup/rollup-win32-ia32-msvc": "4.12.1", + "@rollup/rollup-win32-x64-msvc": "4.12.1", "fsevents": "~2.3.2" } }, @@ -3398,9 +3421,9 @@ } }, "node_modules/terser": { - "version": "5.28.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.28.1.tgz", - "integrity": "sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA==", + "version": "5.29.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", + "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -3440,9 +3463,9 @@ "dev": true }, "node_modules/typedoc": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.10.tgz", - "integrity": "sha512-v10rtOFojrjW9og3T+6wAKeJaGMuojU87DXGZ33sfs+554wgPTRG+s07Ag1BjPZI85Y5QPVouPI63JQ6fcQM5w==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.11.tgz", + "integrity": "sha512-5MbI1W/FOG6oXsd8bdssQidSTeKh8Kt3xA5uKVzI+K99uzP8EGN45uPnPvQesyaWdD+89s4wCQdtWEd8QUbiRg==", "dev": true, "dependencies": { "lunr": "^2.3.9", @@ -3532,9 +3555,9 @@ "dev": true }, "node_modules/vite": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.4.tgz", - "integrity": "sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.5.tgz", + "integrity": "sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==", "dev": true, "dependencies": { "esbuild": "^0.19.3", diff --git a/package.json b/package.json index af1c231..9e4205f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ui-lib", "private": true, - "version": "1.0.1", + "version": "1.0.2", "type": "module", "files": [ "dist" @@ -32,10 +32,10 @@ "clean-jsdoc-theme": "^4.2.17", "docdash": "^2.0.2", "jsdoc": "^4.0.2", - "postcss-preset-env": "^9.4.0", + "postcss-preset-env": "^9.5.0", "sass": "^1.71.1", - "typedoc": "^0.25.10", - "vite": "^5.1.4", + "typedoc": "^0.25.11", + "vite": "^5.1.5", "vite-plugin-externals": "^0.6.2" } }