zaravand-ui 7.0.1 → 7.0.2
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/components/Dialog/Dialog.cjs +1 -1
- package/dist/components/Dialog/Dialog.js +1 -1
- package/dist/components/Select/Select.cjs +1 -1
- package/dist/components/Select/Select.d.cts +4 -1
- package/dist/components/Select/Select.d.ts +4 -1
- package/dist/components/Select/Select.interface.d.cts +15 -1
- package/dist/components/Select/Select.interface.d.ts +15 -1
- package/dist/components/Select/Select.js +697 -566
- package/dist/components/Table/Table.cjs +1 -1
- package/dist/components/Table/Table.constants.cjs +1 -1
- package/dist/components/Table/Table.constants.d.cts +1 -0
- package/dist/components/Table/Table.constants.d.ts +1 -0
- package/dist/components/Table/Table.constants.js +2 -2
- package/dist/components/Table/Table.interface.d.cts +39 -0
- package/dist/components/Table/Table.interface.d.ts +39 -0
- package/dist/components/Table/Table.js +448 -371
- package/dist/components/Table/Table.utils.cjs +1 -1
- package/dist/components/Table/Table.utils.d.cts +10 -1
- package/dist/components/Table/Table.utils.d.ts +10 -1
- package/dist/components/Table/Table.utils.js +23 -1
- package/dist/components/Table/Table.variant.cjs +1 -1
- package/dist/components/Table/Table.variant.d.cts +5 -0
- package/dist/components/Table/Table.variant.d.ts +5 -0
- package/dist/components/Table/Table.variant.js +17 -11
- package/dist/components/Table/TableActiveFilters.cjs +1 -0
- package/dist/components/Table/TableActiveFilters.d.cts +12 -0
- package/dist/components/Table/TableActiveFilters.d.ts +12 -0
- package/dist/components/Table/TableActiveFilters.js +55 -0
- package/dist/components/Table/TableColumnFilter.cjs +1 -0
- package/dist/components/Table/TableColumnFilter.d.cts +17 -0
- package/dist/components/Table/TableColumnFilter.d.ts +17 -0
- package/dist/components/Table/TableColumnFilter.js +70 -0
- package/dist/components/Table/TableEmptyState.cjs +1 -1
- package/dist/components/Table/TableEmptyState.d.cts +1 -1
- package/dist/components/Table/TableEmptyState.d.ts +1 -1
- package/dist/components/Table/TableEmptyState.js +16 -7
- package/dist/components/Table/TableSkeletonRows.cjs +1 -1
- package/dist/components/Table/TableSkeletonRows.js +7 -7
- package/dist/components/Table/TableSortToggle.cjs +1 -1
- package/dist/components/Table/TableSortToggle.js +8 -8
- package/dist/components/Table/hooks/useTableFilter.cjs +1 -0
- package/dist/components/Table/hooks/useTableFilter.d.cts +18 -0
- package/dist/components/Table/hooks/useTableFilter.d.ts +18 -0
- package/dist/components/Table/hooks/useTableFilter.js +49 -0
- package/dist/components/Uploader/Uploader.variant.cjs +1 -1
- package/dist/components/Uploader/Uploader.variant.d.cts +1 -1
- package/dist/components/Uploader/Uploader.variant.d.ts +1 -1
- package/dist/components/Uploader/Uploader.variant.js +1 -1
- package/dist/config/messages.cjs +1 -1
- package/dist/config/messages.d.cts +4 -0
- package/dist/config/messages.d.ts +4 -0
- package/dist/config/messages.js +10 -2
- package/dist/index.css +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../services/convertToEnglishDigits/convertToEnglishDigits.cjs`),t=require(`../../services/localizeDigits/localizeDigits.cjs`);var n=96,r=56,i=16,a=/^(\d*\.?\d+)\s*(px|%|rem|em)?$/i;function o(){if(typeof window>`u`||typeof document>`u`)return i;let e=Number.parseFloat(window.getComputedStyle(document.documentElement).fontSize);return Number.isFinite(e)&&e>0?e:i}function s(e){if(typeof e==`number`)return Number.isFinite(e)&&e>0?{kind:`weight`,value:e}:{kind:`weight`,value:n};let t=typeof e==`string`?e.trim().match(a):null,r=t?Number.parseFloat(t[1]):NaN;if(!t||!Number.isFinite(r)||r<=0)return{kind:`weight`,value:n};let i=(t[2]??`px`).toLowerCase();return i===`%`?{kind:`percent`,value:r}:i===`rem`||i===`em`?{kind:`weight`,value:r*o()}:{kind:`weight`,value:r}}function c(e,t,n){let i=n?{width:`112px`,minWidth:`112px`}:void 0;if(e.length===0&&!t)return{rowNumberColumnStyle:void 0,columnStyleByKey:{},actionsColumnStyle:i};let a=t?r:0,o=e.map(e=>s(e.width)),c=o.reduce((e,t)=>t.kind===`percent`?e+t.value:e,0),l=c>100?100/c:1,u=Math.max(0,100-c*l),d=a+o.reduce((e,t)=>t.kind===`weight`?e+t.value:e,0),f=e=>d>0?e/d*u:0,p=e=>({width:`${e.toFixed(4)}%`}),m=Object.fromEntries(e.map((e,t)=>{let n=o[t],r=n.kind===`percent`?n.value*l:f(n.value);return[e.key,p(r)]}));return{rowNumberColumnStyle:t?p(f(a)):void 0,columnStyleByKey:m,actionsColumnStyle:i}}function l(e,t){return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.min(12,Math.max(1,Math.floor(e))):t>0?Math.min(12,t):6}function u(e,t){let n=t%3;return e.type===`checkbox`?`zui:size-4`:e.type===`number`||e.type===`money`?n===0?`zui:h-4 zui:w-16`:n===1?`zui:h-4 zui:w-12`:`zui:h-4 zui:w-20`:e.type===`date`?n===0?`zui:h-4 zui:w-28`:n===1?`zui:h-4 zui:w-24`:`zui:h-4 zui:w-32`:e.type===`textarea`?n===0?`zui:h-4 zui:w-[92%]`:n===1?`zui:h-4 zui:w-[76%]`:`zui:h-4 zui:w-[84%]`:n===0?`zui:h-4 zui:w-[78%]`:n===1?`zui:h-4 zui:w-[62%]`:`zui:h-4 zui:w-[86%]`}function d(e){return e==null?!0:typeof e==`string`?e.trim().length===0:!1}function f(e){if(typeof e==`number`)return Number.isFinite(e)?e:null;if(typeof e==`string`){let t=e.replace(/,/g,``).trim();if(t.length===0)return null;let n=Number(t);return Number.isFinite(n)?n:null}return null}function p(e){return e.toLocaleString(`en-US`)}function m(e){if(e instanceof Date&&!Number.isNaN(e.getTime()))return e;if(typeof e==`string`&&e.trim().length>0){let t=new Date(e);if(!Number.isNaN(t.getTime()))return t}return null}function h(e){return typeof e.placeholder==`string`&&e.placeholder.trim().length>0?e.placeholder:`---`}function g(e){return typeof e.displayPlaceholder==`string`&&e.displayPlaceholder.trim().length>0?e.displayPlaceholder:h(e)}function _(e,t){if(t.type!==`select`&&t.type!==`radio`||!Array.isArray(t.options)||t.options.length===0)return null;let n=String(e).trim();if(n.length===0)return null;let r=t.options.find(e=>e.value.trim()===n);if(r){let e=r.label.trim();return e.length>0?e:null}let i=e=>{let t=e.trim().toLocaleLowerCase();return/^[0-9a-f-]+$/i.test(t)?t.replaceAll(`-`,``):t},a=n.toLocaleLowerCase(),o=t.options.find(e=>e.value.trim().toLocaleLowerCase()===a);if(o){let e=o.label.trim();return e.length>0?e:null}let s=i(n),c=t.options.find(e=>i(e.value)===s);if(!c)return null;let l=c.label.trim();return l.length>0?l:null}var v=new Map;function y(e){let t=v.get(e);return t||(t=new Intl.DateTimeFormat(`${e}-u-ca-persian`,{dateStyle:`medium`}),v.set(e,t)),t}function b(t,n,{messages:r}){if(d(t))return g(n);if(n.type===`checkbox`)return t===!0?r.common.yes:r.common.no;if(n.type===`date`){let i=m(t);return i?e.convertToEnglishDigits({value:y(r.calendar.locale).format(i)}):g(n)}if(n.type===`money`){let e=f(t);return e===null?g(n):p(e)}return typeof t==`string`||typeof t==`number`?_(t,n)||(n.type===`select`&&n.optionsSource?g(n):String(t)):g(n)}function x(e,n,r){return t.localizeDigits(b(e,n,r),r.digits)}function S(e,t,n){if(typeof n!=`function`)return;let r=n(e,t);if(typeof r==`number`)return Number.isFinite(r)?r:void 0;if(typeof r==`string`){let e=r.trim();return e.length>0?e:void 0}}function C(e,t,n,r){if(n!==void 0&&typeof r==`function`){let t=e.findIndex((e,t)=>S(e,t,r)===n);if(t>=0)return t}return t>=0&&t<e.length?t:-1}function w(e,t){if(d(e))return t.type===`number`||t.type===`money`||t.type===`date`?-1/0:``;if(t.type===`number`||t.type===`money`)return f(e)??-1/0;if(t.type===`date`){let t=m(e);return t?t.getTime():-1/0}return typeof e==`number`?e:String(e)}function T(e,t,n,r){let i=w(e[n.key],n),a=w(t[n.key],n),o=typeof i==`number`&&typeof a==`number`?i-a:String(i).localeCompare(String(a),`fa`);return r===`asc`?o:-o}function E(e,t){return e?.sortKey===t?e.direction===`asc`?{sortKey:t,direction:`desc`}:null:{sortKey:t,direction:`asc`}}function D(e){return e===`asc`?`ascending`:e===`desc`?`descending`:`none`}function O(e,t,n){return t===`asc`?`${n.sortBy} ${e} (${n.sortDescending})`:t===`desc`?`${n.sortClear} ${e} (${n.sortDefault})`:`${n.sortBy} ${e} (${n.sortAscending})`}function k(e,t,n,r,i){let a=C(e,t,n,r);if(a<0)return e;let o=[...e];return o[a]=i,o}exports.compareTableRowsByColumn=T,exports.formatCellValue=x,exports.replaceRowByIdentifier=k,exports.resolveAriaSort=D,exports.resolveColumnWidthPercentages=c,exports.resolveLoadingCellSkeletonClassName=u,exports.resolveLoadingRowsCount=l,exports.resolveNextSort=E,exports.resolvePlaceholder=h,exports.resolveSafeRowId=S,exports.resolveSortToggleTooltipText=O;
|
|
1
|
+
const e=require(`../../services/convertToEnglishDigits/convertToEnglishDigits.cjs`),t=require(`../../services/localizeDigits/localizeDigits.cjs`);var n=96,r=56,i=16,a=/^(\d*\.?\d+)\s*(px|%|rem|em)?$/i;function o(){if(typeof window>`u`||typeof document>`u`)return i;let e=Number.parseFloat(window.getComputedStyle(document.documentElement).fontSize);return Number.isFinite(e)&&e>0?e:i}function s(e){if(typeof e==`number`)return Number.isFinite(e)&&e>0?{kind:`weight`,value:e}:{kind:`weight`,value:n};let t=typeof e==`string`?e.trim().match(a):null,r=t?Number.parseFloat(t[1]):NaN;if(!t||!Number.isFinite(r)||r<=0)return{kind:`weight`,value:n};let i=(t[2]??`px`).toLowerCase();return i===`%`?{kind:`percent`,value:r}:i===`rem`||i===`em`?{kind:`weight`,value:r*o()}:{kind:`weight`,value:r}}function c(e,t,n){let i=n?{width:`112px`,minWidth:`112px`}:void 0;if(e.length===0&&!t)return{rowNumberColumnStyle:void 0,columnStyleByKey:{},actionsColumnStyle:i};let a=t?r:0,o=e.map(e=>s(e.width)),c=o.reduce((e,t)=>t.kind===`percent`?e+t.value:e,0),l=c>100?100/c:1,u=Math.max(0,100-c*l),d=a+o.reduce((e,t)=>t.kind===`weight`?e+t.value:e,0),f=e=>d>0?e/d*u:0,p=e=>({width:`${e.toFixed(4)}%`}),m=Object.fromEntries(e.map((e,t)=>{let n=o[t],r=n.kind===`percent`?n.value*l:f(n.value);return[e.key,p(r)]}));return{rowNumberColumnStyle:t?p(f(a)):void 0,columnStyleByKey:m,actionsColumnStyle:i}}function l(e,t){return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.min(12,Math.max(1,Math.floor(e))):t>0?Math.min(12,t):6}function u(e,t){let n=t%3;return e.type===`checkbox`?`zui:size-4`:e.type===`number`||e.type===`money`?n===0?`zui:h-4 zui:w-16`:n===1?`zui:h-4 zui:w-12`:`zui:h-4 zui:w-20`:e.type===`date`?n===0?`zui:h-4 zui:w-28`:n===1?`zui:h-4 zui:w-24`:`zui:h-4 zui:w-32`:e.type===`textarea`?n===0?`zui:h-4 zui:w-[92%]`:n===1?`zui:h-4 zui:w-[76%]`:`zui:h-4 zui:w-[84%]`:n===0?`zui:h-4 zui:w-[78%]`:n===1?`zui:h-4 zui:w-[62%]`:`zui:h-4 zui:w-[86%]`}function d(e){return e==null?!0:typeof e==`string`?e.trim().length===0:!1}function f(e){if(typeof e==`number`)return Number.isFinite(e)?e:null;if(typeof e==`string`){let t=e.replace(/,/g,``).trim();if(t.length===0)return null;let n=Number(t);return Number.isFinite(n)?n:null}return null}function p(e){return e.toLocaleString(`en-US`)}function m(e){if(e instanceof Date&&!Number.isNaN(e.getTime()))return e;if(typeof e==`string`&&e.trim().length>0){let t=new Date(e);if(!Number.isNaN(t.getTime()))return t}return null}function h(e){return typeof e.placeholder==`string`&&e.placeholder.trim().length>0?e.placeholder:`---`}function g(e){return typeof e.displayPlaceholder==`string`&&e.displayPlaceholder.trim().length>0?e.displayPlaceholder:h(e)}function _(e,t){if(t.type!==`select`&&t.type!==`radio`||!Array.isArray(t.options)||t.options.length===0)return null;let n=String(e).trim();if(n.length===0)return null;let r=t.options.find(e=>e.value.trim()===n);if(r){let e=r.label.trim();return e.length>0?e:null}let i=e=>{let t=e.trim().toLocaleLowerCase();return/^[0-9a-f-]+$/i.test(t)?t.replaceAll(`-`,``):t},a=n.toLocaleLowerCase(),o=t.options.find(e=>e.value.trim().toLocaleLowerCase()===a);if(o){let e=o.label.trim();return e.length>0?e:null}let s=i(n),c=t.options.find(e=>i(e.value)===s);if(!c)return null;let l=c.label.trim();return l.length>0?l:null}var v=new Map;function y(e){let t=v.get(e);return t||(t=new Intl.DateTimeFormat(`${e}-u-ca-persian`,{dateStyle:`medium`}),v.set(e,t)),t}function b(t,n,{messages:r}){if(d(t))return g(n);if(n.type===`checkbox`)return t===!0?r.common.yes:r.common.no;if(n.type===`date`){let i=m(t);return i?e.convertToEnglishDigits({value:y(r.calendar.locale).format(i)}):g(n)}if(n.type===`money`){let e=f(t);return e===null?g(n):p(e)}return typeof t==`string`||typeof t==`number`?_(t,n)||(n.type===`select`&&n.optionsSource?g(n):String(t)):g(n)}function x(e,n,r){return t.localizeDigits(b(e,n,r),r.digits)}function S(e,t,n){if(typeof n!=`function`)return;let r=n(e,t);if(typeof r==`number`)return Number.isFinite(r)?r:void 0;if(typeof r==`string`){let e=r.trim();return e.length>0?e:void 0}}function C(e,t,n,r){if(n!==void 0&&typeof r==`function`){let t=e.findIndex((e,t)=>S(e,t,r)===n);if(t>=0)return t}return t>=0&&t<e.length?t:-1}function w(e,t){if(d(e))return t.type===`number`||t.type===`money`||t.type===`date`?-1/0:``;if(t.type===`number`||t.type===`money`)return f(e)??-1/0;if(t.type===`date`){let t=m(e);return t?t.getTime():-1/0}return typeof e==`number`?e:String(e)}function T(e,t,n,r){let i=w(e[n.key],n),a=w(t[n.key],n),o=typeof i==`number`&&typeof a==`number`?i-a:String(i).localeCompare(String(a),`fa`);return r===`asc`?o:-o}function E(e,t){return e?.sortKey===t?e.direction===`asc`?{sortKey:t,direction:`desc`}:null:{sortKey:t,direction:`asc`}}function D(e){return e===`asc`?`ascending`:e===`desc`?`descending`:`none`}function O(e,t,n){return t===`asc`?`${n.sortBy} ${e} (${n.sortDescending})`:t===`desc`?`${n.sortClear} ${e} (${n.sortDefault})`:`${n.sortBy} ${e} (${n.sortAscending})`}function k(e,t,n,r,i){let a=C(e,t,n,r);if(a<0)return e;let o=[...e];return o[a]=i,o}function A(e){return e===void 0||e.length===0}function j(e,t){return e.map(e=>t.find(t=>t.value===e)?.label??e).join(`, `)}function M(e,t,n){let r=e[t.key];return n.includes(r==null?``:String(r).trim())}function N(e,t,n){if(Array.isArray(e.options)&&e.options.length>0)return e.options;if(e.optionsSource)return[];let r=new Map;return t.forEach(t=>{let i=t[e.key],a=i==null?``:String(i).trim();a.length>0&&!r.has(a)&&r.set(a,x(i,e,n))}),Array.from(r,([e,t])=>({value:e,label:t})).sort((e,t)=>e.label.localeCompare(t.label,void 0,{numeric:!0}))}exports.compareTableRowsByColumn=T,exports.formatCellValue=x,exports.isEmptyFilterValue=A,exports.replaceRowByIdentifier=k,exports.resolveAriaSort=D,exports.resolveColumnWidthPercentages=c,exports.resolveFilterOptions=N,exports.resolveFilterText=j,exports.resolveLoadingCellSkeletonClassName=u,exports.resolveLoadingRowsCount=l,exports.resolveNextSort=E,exports.resolvePlaceholder=h,exports.resolveSafeRowId=S,exports.resolveSortToggleTooltipText=O,exports.rowMatchesColumnFilter=M;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type * as React from "react";
|
|
2
2
|
import type { ZuiMessages } from "../../config/messages.cjs";
|
|
3
3
|
import { type ZuiDigits } from "../../services/localizeDigits/localizeDigits.cjs";
|
|
4
|
-
import type { DynamicTableRow, TableActiveSort, TableRowId, TableRowIdResolver, TableSchemaColumn, TableSortDirection } from "./Table.interface.cjs";
|
|
4
|
+
import type { DynamicTableRow, TableActiveSort, TableFilterValue, TableRowId, TableRowIdResolver, TableSchemaColumn, TableSelectOption, TableSortDirection } from "./Table.interface.cjs";
|
|
5
5
|
export declare const ACTIONS_COLUMN_WIDTH_PX = 112;
|
|
6
6
|
export declare function resolveColumnWidthPercentages(visibleColumns: TableSchemaColumn[], shouldShowRowNumbers: boolean, hasRowActions: boolean): {
|
|
7
7
|
rowNumberColumnStyle: React.CSSProperties | undefined;
|
|
@@ -37,3 +37,12 @@ export declare function resolveAriaSort(direction: TableSortDirection | undefine
|
|
|
37
37
|
*/
|
|
38
38
|
export declare function resolveSortToggleTooltipText(columnLabel: string, direction: TableSortDirection | undefined, labels: ZuiMessages["table"]): string;
|
|
39
39
|
export declare function replaceRowByIdentifier(rows: DynamicTableRow[], targetRowIndex: number, targetRowId: TableRowId | undefined, getRowId: TableRowIdResolver | undefined, nextRow: DynamicTableRow): DynamicTableRow[];
|
|
40
|
+
export declare function isEmptyFilterValue(value: TableFilterValue | undefined): boolean;
|
|
41
|
+
/** The chosen values as the filter chips and the phone filter list show them. */
|
|
42
|
+
export declare function resolveFilterText(value: TableFilterValue, options: TableSelectOption[]): string;
|
|
43
|
+
export declare function rowMatchesColumnFilter(row: DynamicTableRow, column: TableSchemaColumn, value: TableFilterValue): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* The options a column filter offers: the column's own `options`, nothing for `optionsSource`
|
|
46
|
+
* (the select loads them), else the distinct values of `data`, shown the way the cells show them.
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveFilterOptions(column: TableSchemaColumn, data: DynamicTableRow[], formatOptions: TableCellFormatOptions): TableSelectOption[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type * as React from "react";
|
|
2
2
|
import type { ZuiMessages } from "../../config/messages.js";
|
|
3
3
|
import { type ZuiDigits } from "../../services/localizeDigits/localizeDigits.js";
|
|
4
|
-
import type { DynamicTableRow, TableActiveSort, TableRowId, TableRowIdResolver, TableSchemaColumn, TableSortDirection } from "./Table.interface.js";
|
|
4
|
+
import type { DynamicTableRow, TableActiveSort, TableFilterValue, TableRowId, TableRowIdResolver, TableSchemaColumn, TableSelectOption, TableSortDirection } from "./Table.interface.js";
|
|
5
5
|
export declare const ACTIONS_COLUMN_WIDTH_PX = 112;
|
|
6
6
|
export declare function resolveColumnWidthPercentages(visibleColumns: TableSchemaColumn[], shouldShowRowNumbers: boolean, hasRowActions: boolean): {
|
|
7
7
|
rowNumberColumnStyle: React.CSSProperties | undefined;
|
|
@@ -37,3 +37,12 @@ export declare function resolveAriaSort(direction: TableSortDirection | undefine
|
|
|
37
37
|
*/
|
|
38
38
|
export declare function resolveSortToggleTooltipText(columnLabel: string, direction: TableSortDirection | undefined, labels: ZuiMessages["table"]): string;
|
|
39
39
|
export declare function replaceRowByIdentifier(rows: DynamicTableRow[], targetRowIndex: number, targetRowId: TableRowId | undefined, getRowId: TableRowIdResolver | undefined, nextRow: DynamicTableRow): DynamicTableRow[];
|
|
40
|
+
export declare function isEmptyFilterValue(value: TableFilterValue | undefined): boolean;
|
|
41
|
+
/** The chosen values as the filter chips and the phone filter list show them. */
|
|
42
|
+
export declare function resolveFilterText(value: TableFilterValue, options: TableSelectOption[]): string;
|
|
43
|
+
export declare function rowMatchesColumnFilter(row: DynamicTableRow, column: TableSchemaColumn, value: TableFilterValue): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* The options a column filter offers: the column's own `options`, nothing for `optionsSource`
|
|
46
|
+
* (the select loads them), else the distinct values of `data`, shown the way the cells show them.
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveFilterOptions(column: TableSchemaColumn, data: DynamicTableRow[], formatOptions: TableCellFormatOptions): TableSelectOption[];
|
|
@@ -182,5 +182,27 @@ function k(e, t, n, r, i) {
|
|
|
182
182
|
let o = [...e];
|
|
183
183
|
return o[a] = i, o;
|
|
184
184
|
}
|
|
185
|
+
function A(e) {
|
|
186
|
+
return e === void 0 || e.length === 0;
|
|
187
|
+
}
|
|
188
|
+
function j(e, t) {
|
|
189
|
+
return e.map((e) => t.find((t) => t.value === e)?.label ?? e).join(", ");
|
|
190
|
+
}
|
|
191
|
+
function M(e, t, n) {
|
|
192
|
+
let r = e[t.key];
|
|
193
|
+
return n.includes(r == null ? "" : String(r).trim());
|
|
194
|
+
}
|
|
195
|
+
function N(e, t, n) {
|
|
196
|
+
if (Array.isArray(e.options) && e.options.length > 0) return e.options;
|
|
197
|
+
if (e.optionsSource) return [];
|
|
198
|
+
let r = /* @__PURE__ */ new Map();
|
|
199
|
+
return t.forEach((t) => {
|
|
200
|
+
let i = t[e.key], a = i == null ? "" : String(i).trim();
|
|
201
|
+
a.length > 0 && !r.has(a) && r.set(a, x(i, e, n));
|
|
202
|
+
}), Array.from(r, ([e, t]) => ({
|
|
203
|
+
value: e,
|
|
204
|
+
label: t
|
|
205
|
+
})).sort((e, t) => e.label.localeCompare(t.label, void 0, { numeric: !0 }));
|
|
206
|
+
}
|
|
185
207
|
//#endregion
|
|
186
|
-
export { T as compareTableRowsByColumn, x as formatCellValue, k as replaceRowByIdentifier, D as resolveAriaSort, c as resolveColumnWidthPercentages, u as resolveLoadingCellSkeletonClassName, l as resolveLoadingRowsCount, E as resolveNextSort, h as resolvePlaceholder, S as resolveSafeRowId, O as resolveSortToggleTooltipText };
|
|
208
|
+
export { T as compareTableRowsByColumn, x as formatCellValue, A as isEmptyFilterValue, k as replaceRowByIdentifier, D as resolveAriaSort, c as resolveColumnWidthPercentages, N as resolveFilterOptions, j as resolveFilterText, u as resolveLoadingCellSkeletonClassName, l as resolveLoadingRowsCount, E as resolveNextSort, h as resolvePlaceholder, S as resolveSafeRowId, O as resolveSortToggleTooltipText, M as rowMatchesColumnFilter };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../shared/responsiveScale.cjs`);let t=require(`class-variance-authority`);var n=(0,t.cva)(`zui:relative zui:w-full zui:min-w-0 zui:overflow-hidden zui:p-1.25`),r=(0,t.cva)(`zui:w-full zui:table-fixed ${e.TABLE_TEXT_SIZE}`,{variants:{showColumnBorder:{true:`zui:[&_th]:border-e zui:[&_td]:border-e zui:[&_th]:border-[var(--zui-theme-border-default)] zui:[&_td]:border-[var(--zui-theme-border-default)] zui:[&_tr>*:last-child]:border-e-0`,false:``},showRowBorder:{true:`zui:[&_tbody_tr>*]:border-b zui:[&_tbody_tr>*]:border-[var(--zui-theme-border-default)] zui:[&_tbody_tr:last-child>*]:border-b-0`,false:``}},defaultVariants:{showColumnBorder:!1,showRowBorder:!1}}),i=(0,t.cva)(``),a=(0,t.cva)(`zui:[&>tr:first-child>td]:pt-5 zui:[&>tr:nth-child(odd)>td]:bg-[var(--zui-color-muted-surface)] zui:[&>tr:nth-child(even)>td]:bg-[var(--zui-color-surface)]`),o=(0,t.cva)(`zui:bg-[var(--zui-color-surface)] zui:font-medium zui:text-[var(--zui-color-text)]`),s=(0,t.cva)(`zui:cursor-default`),c={start:`zui:text-start`,center:`zui:text-center`,end:`zui:text-end`},l=(0,t.cva)(`zui:relative ${e.TABLE_HEADER_HEIGHT} zui:whitespace-normal zui:break-words zui:bg-[var(--zui-color-primary)] ${e.CONTROL_PADDING_X} zui:align-middle zui:font-medium zui:text-[var(--zui-color-surface)] zui:[&:has([role=checkbox])]:ps-0 zui:[&>[role=checkbox]]:translate-y-[2px]`,{variants:{align:c},defaultVariants:{align:`start`}}),u=(0,t.cva)(`zui:inline-flex zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:border-0 zui:bg-transparent zui:px-1.5 zui:py-1 zui:text-[var(--zui-color-surface)] zui:outline-none`),d=(0,t.cva)(`zui:transition-opacity zui:duration-200 zui:ease-out`,{variants:{emphasis:{highlighted:`zui:opacity-100`,idle:`zui:opacity-55`,dimmed:`zui:opacity-25`}},defaultVariants:{emphasis:`idle`}}),f=(0,t.cva)(`${e.CONTROL_PADDING_X} ${e.CONTROL_PADDING_Y} zui:whitespace-normal zui:break-words zui:align-middle zui:text-[var(--zui-color-text)] zui:[&:has([role=checkbox])]:ps-0 zui:[&>[role=checkbox]]:translate-y-[2px]`,{variants:{align:c},defaultVariants:{align:`start`}})
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../shared/responsiveScale.cjs`);let t=require(`class-variance-authority`);var n=(0,t.cva)(`zui:relative zui:w-full zui:min-w-0 zui:overflow-hidden zui:p-1.25`),r=(0,t.cva)(`zui:w-full zui:table-fixed ${e.TABLE_TEXT_SIZE}`,{variants:{showColumnBorder:{true:`zui:[&_th]:border-e zui:[&_td]:border-e zui:[&_th]:border-[var(--zui-theme-border-default)] zui:[&_td]:border-[var(--zui-theme-border-default)] zui:[&_tr>*:last-child]:border-e-0`,false:``},showRowBorder:{true:`zui:[&_tbody_tr>*]:border-b zui:[&_tbody_tr>*]:border-[var(--zui-theme-border-default)] zui:[&_tbody_tr:last-child>*]:border-b-0`,false:``}},defaultVariants:{showColumnBorder:!1,showRowBorder:!1}}),i=(0,t.cva)(``),a=(0,t.cva)(`zui:[&>tr:first-child>td]:pt-5 zui:[&>tr:nth-child(odd)>td]:bg-[var(--zui-color-muted-surface)] zui:[&>tr:nth-child(even)>td]:bg-[var(--zui-color-surface)]`),o=(0,t.cva)(`zui:bg-[var(--zui-color-surface)] zui:font-medium zui:text-[var(--zui-color-text)]`),s=(0,t.cva)(`zui:cursor-default`),c={start:`zui:text-start`,center:`zui:text-center`,end:`zui:text-end`},l=(0,t.cva)(`zui:relative ${e.TABLE_HEADER_HEIGHT} zui:whitespace-normal zui:break-words zui:bg-[var(--zui-color-primary)] ${e.CONTROL_PADDING_X} zui:align-middle zui:font-medium zui:text-[var(--zui-color-surface)] zui:[&:has([role=checkbox])]:ps-0 zui:[&>[role=checkbox]]:translate-y-[2px]`,{variants:{align:c},defaultVariants:{align:`start`}}),u=(0,t.cva)(`zui:inline-flex zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:border-0 zui:bg-transparent zui:px-1.5 zui:py-1 zui:text-[var(--zui-color-surface)] zui:outline-none`),d=(0,t.cva)(`zui:transition-opacity zui:duration-200 zui:ease-out`,{variants:{emphasis:{highlighted:`zui:opacity-100`,idle:`zui:opacity-55`,dimmed:`zui:opacity-25`}},defaultVariants:{emphasis:`idle`}}),f=(0,t.cva)(`${e.CONTROL_PADDING_X} ${e.CONTROL_PADDING_Y} zui:whitespace-normal zui:break-words zui:align-middle zui:text-[var(--zui-color-text)] zui:[&:has([role=checkbox])]:ps-0 zui:[&>[role=checkbox]]:translate-y-[2px]`,{variants:{align:c},defaultVariants:{align:`start`}}),p=(0,t.cva)(`zui:relative zui:inline-flex zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:rounded-md zui:border-0 zui:p-1 zui:text-[var(--zui-color-surface)] zui:outline-none zui:transition-[opacity,background-color] zui:duration-200 zui:hover:bg-[color-mix(in_srgb,var(--zui-color-surface)_20%,transparent)] zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-theme-action-secondary)]`,{variants:{active:{true:`zui:bg-[color-mix(in_srgb,var(--zui-color-surface)_24%,transparent)] zui:opacity-100`,false:`zui:bg-transparent zui:opacity-85 zui:hover:opacity-100`}},defaultVariants:{active:!1}}),m=`zui:inline-flex zui:max-w-full zui:items-center zui:gap-1 zui-radius-xs zui:border zui:border-[var(--zui-theme-action-primary)] zui:bg-transparent zui:ps-3 zui:pe-1.5 zui:text-base zui:text-[var(--zui-color-text)] zui:md:text-sm zui:mobile:shrink-0 zui:duration-200 zui:animate-in zui:fade-in-0 zui:zoom-in-95 ${e.CONTROL_HEIGHT_SM}`,h=`zui:inline-flex zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:rounded-full zui:border-0 zui:bg-transparent zui:p-0.5 zui:text-[var(--zui-color-text)] zui:opacity-70 zui:outline-none zui:transition-colors zui:hover:bg-[var(--zui-color-muted-surface)] zui:hover:opacity-100 zui:focus-visible:opacity-100 zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-theme-action-secondary)]`;exports.tableActiveFilterChipClassName=m,exports.tableActiveFilterRemoveClassName=h,exports.tableBodyVariants=a,exports.tableCellVariants=f,exports.tableContainerVariants=n,exports.tableFilterToggleVariants=p,exports.tableFooterVariants=o,exports.tableHeadVariants=l,exports.tableHeaderVariants=i,exports.tableRowVariants=s,exports.tableSortArrowVariants=d,exports.tableSortToggleVariants=u,exports.tableVariants=r;
|
|
@@ -17,3 +17,8 @@ export declare const tableSortArrowVariants: (props?: ({
|
|
|
17
17
|
export declare const tableCellVariants: (props?: ({
|
|
18
18
|
align?: "end" | "start" | "center" | null | undefined;
|
|
19
19
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
20
|
+
export declare const tableFilterToggleVariants: (props?: ({
|
|
21
|
+
active?: boolean | null | undefined;
|
|
22
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
23
|
+
export declare const tableActiveFilterChipClassName = "zui:inline-flex zui:max-w-full zui:items-center zui:gap-1 zui-radius-xs zui:border zui:border-[var(--zui-theme-action-primary)] zui:bg-transparent zui:ps-3 zui:pe-1.5 zui:text-base zui:text-[var(--zui-color-text)] zui:md:text-sm zui:mobile:shrink-0 zui:duration-200 zui:animate-in zui:fade-in-0 zui:zoom-in-95 zui:h-[calc(var(--zui-scale,10px)*4.608)]";
|
|
24
|
+
export declare const tableActiveFilterRemoveClassName = "zui:inline-flex zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:rounded-full zui:border-0 zui:bg-transparent zui:p-0.5 zui:text-[var(--zui-color-text)] zui:opacity-70 zui:outline-none zui:transition-colors zui:hover:bg-[var(--zui-color-muted-surface)] zui:hover:opacity-100 zui:focus-visible:opacity-100 zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-theme-action-secondary)]";
|
|
@@ -17,3 +17,8 @@ export declare const tableSortArrowVariants: (props?: ({
|
|
|
17
17
|
export declare const tableCellVariants: (props?: ({
|
|
18
18
|
align?: "end" | "start" | "center" | null | undefined;
|
|
19
19
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
20
|
+
export declare const tableFilterToggleVariants: (props?: ({
|
|
21
|
+
active?: boolean | null | undefined;
|
|
22
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
23
|
+
export declare const tableActiveFilterChipClassName = "zui:inline-flex zui:max-w-full zui:items-center zui:gap-1 zui-radius-xs zui:border zui:border-[var(--zui-theme-action-primary)] zui:bg-transparent zui:ps-3 zui:pe-1.5 zui:text-base zui:text-[var(--zui-color-text)] zui:md:text-sm zui:mobile:shrink-0 zui:duration-200 zui:animate-in zui:fade-in-0 zui:zoom-in-95 zui:h-[calc(var(--zui-scale,10px)*4.608)]";
|
|
24
|
+
export declare const tableActiveFilterRemoveClassName = "zui:inline-flex zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:rounded-full zui:border-0 zui:bg-transparent zui:p-0.5 zui:text-[var(--zui-color-text)] zui:opacity-70 zui:outline-none zui:transition-colors zui:hover:bg-[var(--zui-color-muted-surface)] zui:hover:opacity-100 zui:focus-visible:opacity-100 zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-theme-action-secondary)]";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { cva as
|
|
1
|
+
import { CONTROL_HEIGHT_SM as e, CONTROL_PADDING_X as t, CONTROL_PADDING_Y as n, TABLE_HEADER_HEIGHT as r, TABLE_TEXT_SIZE as i } from "../shared/responsiveScale.js";
|
|
2
|
+
import { cva as a } from "class-variance-authority";
|
|
3
3
|
//#region src/components/Table/Table.variant.ts
|
|
4
|
-
var
|
|
4
|
+
var o = a("zui:relative zui:w-full zui:min-w-0 zui:overflow-hidden zui:p-1.25"), s = a(`zui:w-full zui:table-fixed ${i}`, {
|
|
5
5
|
variants: {
|
|
6
6
|
showColumnBorder: {
|
|
7
7
|
true: "zui:[&_th]:border-e zui:[&_td]:border-e zui:[&_th]:border-[var(--zui-theme-border-default)] zui:[&_td]:border-[var(--zui-theme-border-default)] zui:[&_tr>*:last-child]:border-e-0",
|
|
@@ -16,23 +16,29 @@ var a = i("zui:relative zui:w-full zui:min-w-0 zui:overflow-hidden zui:p-1.25"),
|
|
|
16
16
|
showColumnBorder: !1,
|
|
17
17
|
showRowBorder: !1
|
|
18
18
|
}
|
|
19
|
-
}),
|
|
19
|
+
}), c = a(""), l = a("zui:[&>tr:first-child>td]:pt-5 zui:[&>tr:nth-child(odd)>td]:bg-[var(--zui-color-muted-surface)] zui:[&>tr:nth-child(even)>td]:bg-[var(--zui-color-surface)]"), u = a("zui:bg-[var(--zui-color-surface)] zui:font-medium zui:text-[var(--zui-color-text)]"), d = a("zui:cursor-default"), f = {
|
|
20
20
|
start: "zui:text-start",
|
|
21
21
|
center: "zui:text-center",
|
|
22
22
|
end: "zui:text-end"
|
|
23
|
-
},
|
|
24
|
-
variants: { align:
|
|
23
|
+
}, p = a(`zui:relative ${r} zui:whitespace-normal zui:break-words zui:bg-[var(--zui-color-primary)] ${t} zui:align-middle zui:font-medium zui:text-[var(--zui-color-surface)] zui:[&:has([role=checkbox])]:ps-0 zui:[&>[role=checkbox]]:translate-y-[2px]`, {
|
|
24
|
+
variants: { align: f },
|
|
25
25
|
defaultVariants: { align: "start" }
|
|
26
|
-
}),
|
|
26
|
+
}), m = a("zui:inline-flex zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:border-0 zui:bg-transparent zui:px-1.5 zui:py-1 zui:text-[var(--zui-color-surface)] zui:outline-none"), h = a("zui:transition-opacity zui:duration-200 zui:ease-out", {
|
|
27
27
|
variants: { emphasis: {
|
|
28
28
|
highlighted: "zui:opacity-100",
|
|
29
29
|
idle: "zui:opacity-55",
|
|
30
30
|
dimmed: "zui:opacity-25"
|
|
31
31
|
} },
|
|
32
32
|
defaultVariants: { emphasis: "idle" }
|
|
33
|
-
}),
|
|
34
|
-
variants: { align:
|
|
33
|
+
}), g = a(`${t} ${n} zui:whitespace-normal zui:break-words zui:align-middle zui:text-[var(--zui-color-text)] zui:[&:has([role=checkbox])]:ps-0 zui:[&>[role=checkbox]]:translate-y-[2px]`, {
|
|
34
|
+
variants: { align: f },
|
|
35
35
|
defaultVariants: { align: "start" }
|
|
36
|
-
})
|
|
36
|
+
}), _ = a("zui:relative zui:inline-flex zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:rounded-md zui:border-0 zui:p-1 zui:text-[var(--zui-color-surface)] zui:outline-none zui:transition-[opacity,background-color] zui:duration-200 zui:hover:bg-[color-mix(in_srgb,var(--zui-color-surface)_20%,transparent)] zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-theme-action-secondary)]", {
|
|
37
|
+
variants: { active: {
|
|
38
|
+
true: "zui:bg-[color-mix(in_srgb,var(--zui-color-surface)_24%,transparent)] zui:opacity-100",
|
|
39
|
+
false: "zui:bg-transparent zui:opacity-85 zui:hover:opacity-100"
|
|
40
|
+
} },
|
|
41
|
+
defaultVariants: { active: !1 }
|
|
42
|
+
}), v = `zui:inline-flex zui:max-w-full zui:items-center zui:gap-1 zui-radius-xs zui:border zui:border-[var(--zui-theme-action-primary)] zui:bg-transparent zui:ps-3 zui:pe-1.5 zui:text-base zui:text-[var(--zui-color-text)] zui:md:text-sm zui:mobile:shrink-0 zui:duration-200 zui:animate-in zui:fade-in-0 zui:zoom-in-95 ${e}`, y = "zui:inline-flex zui:shrink-0 zui:cursor-pointer zui:items-center zui:justify-center zui:rounded-full zui:border-0 zui:bg-transparent zui:p-0.5 zui:text-[var(--zui-color-text)] zui:opacity-70 zui:outline-none zui:transition-colors zui:hover:bg-[var(--zui-color-muted-surface)] zui:hover:opacity-100 zui:focus-visible:opacity-100 zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-theme-action-secondary)]";
|
|
37
43
|
//#endregion
|
|
38
|
-
export {
|
|
44
|
+
export { v as tableActiveFilterChipClassName, y as tableActiveFilterRemoveClassName, l as tableBodyVariants, g as tableCellVariants, o as tableContainerVariants, _ as tableFilterToggleVariants, u as tableFooterVariants, p as tableHeadVariants, c as tableHeaderVariants, d as tableRowVariants, h as tableSortArrowVariants, m as tableSortToggleVariants, s as tableVariants };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../config/useZuiConfig.cjs`),t=require(`../../services/localizeDigits/localizeDigits.cjs`),n=require(`../Tooltip/Tooltip.cjs`),r=require(`../shared/FieldClearButton.cjs`),i=require(`./Table.utils.cjs`),a=require(`./Table.variant.cjs`);let o=require(`react/jsx-runtime`),s=require(`lucide-react`);function c({columns:c,values:l,optionsByColumn:u,onRemove:d,onSelect:f}){let{messages:p,digits:m}=e.useZuiConfig(),h=c.flatMap(e=>{let t=l[e.key];return t===void 0||i.isEmptyFilterValue(t)?[]:[{column:e,text:i.resolveFilterText(t,u[e.key]??[])}]});return h.length===0?null:(0,o.jsx)(`div`,{"data-slot":`table-active-filters`,className:`zui:mb-3 zui:flex zui:flex-wrap zui:items-center zui:gap-2 zui:mobile:flex-nowrap zui:mobile:overflow-x-auto zui:mobile:[scrollbar-width:none] zui:mobile:[&::-webkit-scrollbar]:hidden`,children:h.map(({column:e,text:i})=>{let c=`${p.table.filterClear}: ${t.localizeDigits(e.label,m)}`;return(0,o.jsxs)(`span`,{"data-slot":`table-active-filter`,className:a.tableActiveFilterChipClassName,children:[f?(0,o.jsx)(`button`,{type:`button`,"data-slot":`table-active-filter-button`,onClick:()=>f(e.key),className:`zui:min-w-0 zui:cursor-pointer zui:truncate zui:border-0 zui:bg-transparent zui:p-0 zui:text-inherit zui:outline-none`,children:t.localizeDigits(`${e.label}: ${i}`,m)}):(0,o.jsx)(`span`,{className:`zui:min-w-0 zui:truncate`,children:t.localizeDigits(`${e.label}: ${i}`,m)}),(0,o.jsx)(n.default,{text:c,position:`top`,trigger:(0,o.jsx)(`button`,{type:`button`,"aria-label":c,onClick:()=>d(e.key),className:a.tableActiveFilterRemoveClassName,children:(0,o.jsx)(s.X,{className:r.CLEAR_ICON_CLASS,"aria-hidden":`true`})})})]},e.key)})})}exports.default=c;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TableFilterValues, TableSchemaColumn, TableSelectOption } from "./Table.interface.cjs";
|
|
2
|
+
type TableActiveFiltersProps = {
|
|
3
|
+
columns: TableSchemaColumn[];
|
|
4
|
+
values: TableFilterValues;
|
|
5
|
+
optionsByColumn: Record<string, TableSelectOption[]>;
|
|
6
|
+
onRemove: (columnKey: string) => void;
|
|
7
|
+
/** Makes the chip itself a button (on phones it reopens that column's filter). */
|
|
8
|
+
onSelect?: (columnKey: string) => void;
|
|
9
|
+
};
|
|
10
|
+
/** The row of chips above the table that lists the active column filters. */
|
|
11
|
+
export default function TableActiveFilters({ columns, values, optionsByColumn, onRemove, onSelect, }: TableActiveFiltersProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TableFilterValues, TableSchemaColumn, TableSelectOption } from "./Table.interface.js";
|
|
2
|
+
type TableActiveFiltersProps = {
|
|
3
|
+
columns: TableSchemaColumn[];
|
|
4
|
+
values: TableFilterValues;
|
|
5
|
+
optionsByColumn: Record<string, TableSelectOption[]>;
|
|
6
|
+
onRemove: (columnKey: string) => void;
|
|
7
|
+
/** Makes the chip itself a button (on phones it reopens that column's filter). */
|
|
8
|
+
onSelect?: (columnKey: string) => void;
|
|
9
|
+
};
|
|
10
|
+
/** The row of chips above the table that lists the active column filters. */
|
|
11
|
+
export default function TableActiveFilters({ columns, values, optionsByColumn, onRemove, onSelect, }: TableActiveFiltersProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useZuiConfig as e } from "../../config/useZuiConfig.js";
|
|
3
|
+
import { localizeDigits as t } from "../../services/localizeDigits/localizeDigits.js";
|
|
4
|
+
import n from "../Tooltip/Tooltip.js";
|
|
5
|
+
import { CLEAR_ICON_CLASS as r } from "../shared/FieldClearButton.js";
|
|
6
|
+
import { isEmptyFilterValue as i, resolveFilterText as a } from "./Table.utils.js";
|
|
7
|
+
import { tableActiveFilterChipClassName as o, tableActiveFilterRemoveClassName as s } from "./Table.variant.js";
|
|
8
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
9
|
+
import { X as u } from "lucide-react";
|
|
10
|
+
//#region src/components/Table/TableActiveFilters.tsx
|
|
11
|
+
function d({ columns: d, values: f, optionsByColumn: p, onRemove: m, onSelect: h }) {
|
|
12
|
+
let { messages: g, digits: _ } = e(), v = d.flatMap((e) => {
|
|
13
|
+
let t = f[e.key];
|
|
14
|
+
return t === void 0 || i(t) ? [] : [{
|
|
15
|
+
column: e,
|
|
16
|
+
text: a(t, p[e.key] ?? [])
|
|
17
|
+
}];
|
|
18
|
+
});
|
|
19
|
+
return v.length === 0 ? null : /* @__PURE__ */ c("div", {
|
|
20
|
+
"data-slot": "table-active-filters",
|
|
21
|
+
className: "zui:mb-3 zui:flex zui:flex-wrap zui:items-center zui:gap-2 zui:mobile:flex-nowrap zui:mobile:overflow-x-auto zui:mobile:[scrollbar-width:none] zui:mobile:[&::-webkit-scrollbar]:hidden",
|
|
22
|
+
children: v.map(({ column: e, text: i }) => {
|
|
23
|
+
let a = `${g.table.filterClear}: ${t(e.label, _)}`;
|
|
24
|
+
return /* @__PURE__ */ l("span", {
|
|
25
|
+
"data-slot": "table-active-filter",
|
|
26
|
+
className: o,
|
|
27
|
+
children: [h ? /* @__PURE__ */ c("button", {
|
|
28
|
+
type: "button",
|
|
29
|
+
"data-slot": "table-active-filter-button",
|
|
30
|
+
onClick: () => h(e.key),
|
|
31
|
+
className: "zui:min-w-0 zui:cursor-pointer zui:truncate zui:border-0 zui:bg-transparent zui:p-0 zui:text-inherit zui:outline-none",
|
|
32
|
+
children: t(`${e.label}: ${i}`, _)
|
|
33
|
+
}) : /* @__PURE__ */ c("span", {
|
|
34
|
+
className: "zui:min-w-0 zui:truncate",
|
|
35
|
+
children: t(`${e.label}: ${i}`, _)
|
|
36
|
+
}), /* @__PURE__ */ c(n, {
|
|
37
|
+
text: a,
|
|
38
|
+
position: "top",
|
|
39
|
+
trigger: /* @__PURE__ */ c("button", {
|
|
40
|
+
type: "button",
|
|
41
|
+
"aria-label": a,
|
|
42
|
+
onClick: () => m(e.key),
|
|
43
|
+
className: s,
|
|
44
|
+
children: /* @__PURE__ */ c(u, {
|
|
45
|
+
className: r,
|
|
46
|
+
"aria-hidden": "true"
|
|
47
|
+
})
|
|
48
|
+
})
|
|
49
|
+
})]
|
|
50
|
+
}, e.key);
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { d as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../config/useZuiConfig.cjs`),t=require(`../../services/localizeDigits/localizeDigits.cjs`),n=require(`../Select/Select.cjs`),r=require(`./Table.constants.cjs`),i=require(`./Table.utils.cjs`),a=require(`./Table.variant.cjs`);let o=require(`react/jsx-runtime`),s=require(`lucide-react`);function c({column:c,value:l,onChange:u,options:d}){let{messages:f,digits:p}=e.useZuiConfig(),m=!i.isEmptyFilterValue(l),h=`${f.table.filterBy} ${t.localizeDigits(c.label,p)}`;return(0,o.jsx)(`span`,{"data-slot":`table-filter`,className:`zui:inline-flex zui:shrink-0`,children:(0,o.jsxs)(n.default,{type:`multi`,isSearch:!0,searchActions:!1,placeholder:h,options:d,remoteOptions:c.optionsSource,value:l??[],onValueChange:e=>u(e.length>0?e:void 0),children:[(0,o.jsxs)(n.SelectTrigger,{unstyled:!0,"aria-label":h,tooltip:h,"data-slot":`table-filter-toggle-button`,"data-active":m||void 0,className:a.tableFilterToggleVariants({active:m}),children:[(0,o.jsx)(s.Funnel,{className:r.filterIconClassName,fill:m?`currentColor`:`none`,"aria-hidden":`true`}),m?(0,o.jsx)(`span`,{"aria-hidden":`true`,"data-slot":`table-filter-active-dot`,className:`zui:absolute zui:end-0 zui:top-0 zui:size-2 zui:rounded-full zui:bg-[var(--zui-color-surface)] zui:ring-2 zui:ring-[var(--zui-color-primary)]`}):null]}),(0,o.jsx)(n.SelectContent,{className:`zui:w-60`})]})})}function l({column:r,value:i,onChange:a,options:s,open:c,onOpenChange:l}){let{messages:u,digits:d}=e.useZuiConfig();return(0,o.jsx)(`div`,{"data-slot":`table-filter-sheet`,"aria-hidden":`true`,className:`zui:sr-only`,children:(0,o.jsx)(n.default,{type:`multi`,isSearch:!0,searchActions:!1,placeholder:`${u.table.filterBy} ${t.localizeDigits(r.label,d)}`,options:s,remoteOptions:r.optionsSource,value:i??[],onValueChange:e=>a(e.length>0?e:void 0),open:c,onOpenChange:l,children:(0,o.jsx)(n.SelectTrigger,{unstyled:!0,tabIndex:-1})})})}exports.TableColumnFilterSheet=l,exports.default=c;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { TableColumnFilterProps } from "./Table.interface.cjs";
|
|
2
|
+
/**
|
|
3
|
+
* The filter button of a column header. It opens the same dropdown as `Select`: a multi-select of
|
|
4
|
+
* the values the column can have, with its search field.
|
|
5
|
+
*/
|
|
6
|
+
export default function TableColumnFilter({ column, value, onChange, options, }: TableColumnFilterProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
type TableColumnFilterSheetProps = TableColumnFilterProps & {
|
|
8
|
+
open: boolean;
|
|
9
|
+
onOpenChange: (open: boolean) => void;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* The filter of one column on a phone, where the header (and so its button) is not there: the same
|
|
13
|
+
* multi-select, opened from the filter list and shown as the bottom sheet every `Select` becomes
|
|
14
|
+
* below the mobile breakpoint. Nothing of it is visible while closed.
|
|
15
|
+
*/
|
|
16
|
+
export declare function TableColumnFilterSheet({ column, value, onChange, options, open, onOpenChange, }: TableColumnFilterSheetProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { TableColumnFilterProps } from "./Table.interface.js";
|
|
2
|
+
/**
|
|
3
|
+
* The filter button of a column header. It opens the same dropdown as `Select`: a multi-select of
|
|
4
|
+
* the values the column can have, with its search field.
|
|
5
|
+
*/
|
|
6
|
+
export default function TableColumnFilter({ column, value, onChange, options, }: TableColumnFilterProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
type TableColumnFilterSheetProps = TableColumnFilterProps & {
|
|
8
|
+
open: boolean;
|
|
9
|
+
onOpenChange: (open: boolean) => void;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* The filter of one column on a phone, where the header (and so its button) is not there: the same
|
|
13
|
+
* multi-select, opened from the filter list and shown as the bottom sheet every `Select` becomes
|
|
14
|
+
* below the mobile breakpoint. Nothing of it is visible while closed.
|
|
15
|
+
*/
|
|
16
|
+
export declare function TableColumnFilterSheet({ column, value, onChange, options, open, onOpenChange, }: TableColumnFilterSheetProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useZuiConfig as e } from "../../config/useZuiConfig.js";
|
|
3
|
+
import { localizeDigits as t } from "../../services/localizeDigits/localizeDigits.js";
|
|
4
|
+
import n, { SelectContent as r, SelectTrigger as i } from "../Select/Select.js";
|
|
5
|
+
import { filterIconClassName as a } from "./Table.constants.js";
|
|
6
|
+
import { isEmptyFilterValue as o } from "./Table.utils.js";
|
|
7
|
+
import { tableFilterToggleVariants as s } from "./Table.variant.js";
|
|
8
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
9
|
+
import { Funnel as u } from "lucide-react";
|
|
10
|
+
//#region src/components/Table/TableColumnFilter.tsx
|
|
11
|
+
function d({ column: d, value: f, onChange: p, options: m }) {
|
|
12
|
+
let { messages: h, digits: g } = e(), _ = !o(f), v = `${h.table.filterBy} ${t(d.label, g)}`;
|
|
13
|
+
return /* @__PURE__ */ c("span", {
|
|
14
|
+
"data-slot": "table-filter",
|
|
15
|
+
className: "zui:inline-flex zui:shrink-0",
|
|
16
|
+
children: /* @__PURE__ */ l(n, {
|
|
17
|
+
type: "multi",
|
|
18
|
+
isSearch: !0,
|
|
19
|
+
searchActions: !1,
|
|
20
|
+
placeholder: v,
|
|
21
|
+
options: m,
|
|
22
|
+
remoteOptions: d.optionsSource,
|
|
23
|
+
value: f ?? [],
|
|
24
|
+
onValueChange: (e) => p(e.length > 0 ? e : void 0),
|
|
25
|
+
children: [/* @__PURE__ */ l(i, {
|
|
26
|
+
unstyled: !0,
|
|
27
|
+
"aria-label": v,
|
|
28
|
+
tooltip: v,
|
|
29
|
+
"data-slot": "table-filter-toggle-button",
|
|
30
|
+
"data-active": _ || void 0,
|
|
31
|
+
className: s({ active: _ }),
|
|
32
|
+
children: [/* @__PURE__ */ c(u, {
|
|
33
|
+
className: a,
|
|
34
|
+
fill: _ ? "currentColor" : "none",
|
|
35
|
+
"aria-hidden": "true"
|
|
36
|
+
}), _ ? /* @__PURE__ */ c("span", {
|
|
37
|
+
"aria-hidden": "true",
|
|
38
|
+
"data-slot": "table-filter-active-dot",
|
|
39
|
+
className: "zui:absolute zui:end-0 zui:top-0 zui:size-2 zui:rounded-full zui:bg-[var(--zui-color-surface)] zui:ring-2 zui:ring-[var(--zui-color-primary)]"
|
|
40
|
+
}) : null]
|
|
41
|
+
}), /* @__PURE__ */ c(r, { className: "zui:w-60" })]
|
|
42
|
+
})
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function f({ column: r, value: a, onChange: o, options: s, open: l, onOpenChange: u }) {
|
|
46
|
+
let { messages: d, digits: f } = e();
|
|
47
|
+
return /* @__PURE__ */ c("div", {
|
|
48
|
+
"data-slot": "table-filter-sheet",
|
|
49
|
+
"aria-hidden": "true",
|
|
50
|
+
className: "zui:sr-only",
|
|
51
|
+
children: /* @__PURE__ */ c(n, {
|
|
52
|
+
type: "multi",
|
|
53
|
+
isSearch: !0,
|
|
54
|
+
searchActions: !1,
|
|
55
|
+
placeholder: `${d.table.filterBy} ${t(r.label, f)}`,
|
|
56
|
+
options: s,
|
|
57
|
+
remoteOptions: r.optionsSource,
|
|
58
|
+
value: a ?? [],
|
|
59
|
+
onValueChange: (e) => o(e.length > 0 ? e : void 0),
|
|
60
|
+
open: l,
|
|
61
|
+
onOpenChange: u,
|
|
62
|
+
children: /* @__PURE__ */ c(i, {
|
|
63
|
+
unstyled: !0,
|
|
64
|
+
tabIndex: -1
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
export { f as TableColumnFilterSheet, d as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../config/useZuiConfig.cjs`),t=require(`../../lib/utils.cjs`),n=require(`./Table.variant.cjs`);let r=require(`react/jsx-runtime`);function i({colSpan:i,showSearchInput:a,normalizedSearchTerm:o}){let{messages:
|
|
1
|
+
"use client";require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../config/useZuiConfig.cjs`),t=require(`../../lib/utils.cjs`),n=require(`./Table.variant.cjs`);let r=require(`react/jsx-runtime`);function i({colSpan:i,showSearchInput:a,normalizedSearchTerm:o,hasActiveFilters:s=!1,onClearFilters:c}){let{messages:l}=e.useZuiConfig();return(0,r.jsx)(`tr`,{className:n.tableRowVariants(),children:(0,r.jsxs)(`td`,{colSpan:i,className:t.cn(n.tableCellVariants(),`zui:py-7 zui:text-center zui:text-[var(--zui-color-text)]`),children:[s?l.table.noFilterResults:a&&o.length>0?l.table.noSearchResults:l.table.empty,s&&c?(0,r.jsx)(`div`,{className:`zui:mt-2`,children:(0,r.jsx)(`button`,{type:`button`,"data-slot":`table-empty-clear-filters`,onClick:c,className:`zui:cursor-pointer zui:border-0 zui:bg-transparent zui:p-0 zui:text-xs zui:text-[var(--zui-theme-action-primary)] zui:underline zui:outline-none zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-theme-action-secondary)]`,children:l.table.filterClearAll})}):null]})})}exports.default=i;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { TableEmptyStateProps } from "./Table.interface.cjs";
|
|
2
|
-
export default function TableEmptyState({ colSpan, showSearchInput, normalizedSearchTerm, }: TableEmptyStateProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export default function TableEmptyState({ colSpan, showSearchInput, normalizedSearchTerm, hasActiveFilters, onClearFilters, }: TableEmptyStateProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { TableEmptyStateProps } from "./Table.interface.js";
|
|
2
|
-
export default function TableEmptyState({ colSpan, showSearchInput, normalizedSearchTerm, }: TableEmptyStateProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export default function TableEmptyState({ colSpan, showSearchInput, normalizedSearchTerm, hasActiveFilters, onClearFilters, }: TableEmptyStateProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -2,18 +2,27 @@
|
|
|
2
2
|
import { useZuiConfig as e } from "../../config/useZuiConfig.js";
|
|
3
3
|
import { cn as t } from "../../lib/utils.js";
|
|
4
4
|
import { tableCellVariants as n, tableRowVariants as r } from "./Table.variant.js";
|
|
5
|
-
import { jsx as i } from "react/jsx-runtime";
|
|
5
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
6
6
|
//#region src/components/Table/TableEmptyState.tsx
|
|
7
|
-
function
|
|
8
|
-
let { messages:
|
|
7
|
+
function o({ colSpan: o, showSearchInput: s, normalizedSearchTerm: c, hasActiveFilters: l = !1, onClearFilters: u }) {
|
|
8
|
+
let { messages: d } = e();
|
|
9
9
|
return /* @__PURE__ */ i("tr", {
|
|
10
10
|
className: r(),
|
|
11
|
-
children: /* @__PURE__ */
|
|
12
|
-
colSpan:
|
|
11
|
+
children: /* @__PURE__ */ a("td", {
|
|
12
|
+
colSpan: o,
|
|
13
13
|
className: t(n(), "zui:py-7 zui:text-center zui:text-[var(--zui-color-text)]"),
|
|
14
|
-
children:
|
|
14
|
+
children: [l ? d.table.noFilterResults : s && c.length > 0 ? d.table.noSearchResults : d.table.empty, l && u ? /* @__PURE__ */ i("div", {
|
|
15
|
+
className: "zui:mt-2",
|
|
16
|
+
children: /* @__PURE__ */ i("button", {
|
|
17
|
+
type: "button",
|
|
18
|
+
"data-slot": "table-empty-clear-filters",
|
|
19
|
+
onClick: u,
|
|
20
|
+
className: "zui:cursor-pointer zui:border-0 zui:bg-transparent zui:p-0 zui:text-xs zui:text-[var(--zui-theme-action-primary)] zui:underline zui:outline-none zui:focus-visible:ring-2 zui:focus-visible:ring-[var(--zui-theme-action-secondary)]",
|
|
21
|
+
children: d.table.filterClearAll
|
|
22
|
+
})
|
|
23
|
+
}) : null]
|
|
15
24
|
})
|
|
16
25
|
});
|
|
17
26
|
}
|
|
18
27
|
//#endregion
|
|
19
|
-
export {
|
|
28
|
+
export { o as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../config/useZuiConfig.cjs`),t=require(`../../lib/utils.cjs`),n=require(`../Skeleton/Skeleton.cjs`),r=require(`./Table.constants.cjs`),i=require(`./
|
|
1
|
+
"use client";require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../config/useZuiConfig.cjs`),t=require(`../../lib/utils.cjs`),n=require(`../Skeleton/Skeleton.cjs`),r=require(`./Table.constants.cjs`),i=require(`./Table.utils.cjs`),a=require(`./TableParts.cjs`);let o=require(`react/jsx-runtime`);function s({count:s,keyPrefix:c,showRowNumbers:l,columns:u,actionsCount:d}){let{messages:f}=e.useZuiConfig();return Array.from({length:s},(e,s)=>(0,o.jsxs)(a.TableRow,{slot:`table-loading-row`,children:[l?(0,o.jsx)(a.TableCell,{align:`center`,className:r.rowNumberColumnClassName,"data-label":f.table.rowNumber,children:(0,o.jsx)(n.default,{className:`zui:mx-auto zui:h-4 zui:w-8`})}):null,u.map(e=>(0,o.jsx)(a.TableCell,{align:e.align,"data-label":e.label,children:(0,o.jsx)(n.default,{className:t.cn(`zui:max-w-full`,e.align===`center`?`zui:mx-auto`:void 0,i.resolveLoadingCellSkeletonClassName(e,s))})},`${c}-cell-${e.key}-${s}`)),d>0?(0,o.jsx)(a.TableCell,{align:`center`,"data-cell":`actions`,className:t.cn(r.actionsColumnClassName,r.actionsColumnStickyClassName),children:(0,o.jsx)(`div`,{"data-slot":`table-row-actions-skeleton`,className:`zui:flex zui:items-center zui:justify-center zui:gap-0.5`,children:Array.from({length:d},(e,t)=>(0,o.jsx)(n.default,{className:`zui:size-9`},`${c}-action-${t}`))})}):null]},`${c}-row-${s}`))}exports.default=s;
|
|
@@ -3,27 +3,27 @@ import { useZuiConfig as e } from "../../config/useZuiConfig.js";
|
|
|
3
3
|
import { cn as t } from "../../lib/utils.js";
|
|
4
4
|
import n from "../Skeleton/Skeleton.js";
|
|
5
5
|
import { actionsColumnClassName as r, actionsColumnStickyClassName as i, rowNumberColumnClassName as a } from "./Table.constants.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { resolveLoadingCellSkeletonClassName as o } from "./Table.utils.js";
|
|
7
|
+
import { TableCell as s, TableRow as c } from "./TableParts.js";
|
|
8
8
|
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
9
9
|
//#region src/components/Table/TableSkeletonRows.tsx
|
|
10
10
|
function d({ count: d, keyPrefix: f, showRowNumbers: p, columns: m, actionsCount: h }) {
|
|
11
11
|
let { messages: g } = e();
|
|
12
|
-
return Array.from({ length: d }, (e, d) => /* @__PURE__ */ u(
|
|
12
|
+
return Array.from({ length: d }, (e, d) => /* @__PURE__ */ u(c, {
|
|
13
13
|
slot: "table-loading-row",
|
|
14
14
|
children: [
|
|
15
|
-
p ? /* @__PURE__ */ l(
|
|
15
|
+
p ? /* @__PURE__ */ l(s, {
|
|
16
16
|
align: "center",
|
|
17
17
|
className: a,
|
|
18
18
|
"data-label": g.table.rowNumber,
|
|
19
19
|
children: /* @__PURE__ */ l(n, { className: "zui:mx-auto zui:h-4 zui:w-8" })
|
|
20
20
|
}) : null,
|
|
21
|
-
m.map((e) => /* @__PURE__ */ l(
|
|
21
|
+
m.map((e) => /* @__PURE__ */ l(s, {
|
|
22
22
|
align: e.align,
|
|
23
23
|
"data-label": e.label,
|
|
24
|
-
children: /* @__PURE__ */ l(n, { className: t("zui:max-w-full", e.align === "center" ? "zui:mx-auto" : void 0,
|
|
24
|
+
children: /* @__PURE__ */ l(n, { className: t("zui:max-w-full", e.align === "center" ? "zui:mx-auto" : void 0, o(e, d)) })
|
|
25
25
|
}, `${f}-cell-${e.key}-${d}`)),
|
|
26
|
-
h > 0 ? /* @__PURE__ */ l(
|
|
26
|
+
h > 0 ? /* @__PURE__ */ l(s, {
|
|
27
27
|
align: "center",
|
|
28
28
|
"data-cell": "actions",
|
|
29
29
|
className: t(r, i),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../config/useZuiConfig.cjs`),t=require(`../../lib/utils.cjs`),n=require(`../Tooltip/Tooltip.cjs`),r=require(`./Table.
|
|
1
|
+
"use client";require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../config/useZuiConfig.cjs`),t=require(`../../lib/utils.cjs`),n=require(`../Tooltip/Tooltip.cjs`),r=require(`./Table.constants.cjs`),i=require(`./Table.utils.cjs`),a=require(`./Table.variant.cjs`);let o=require(`react/jsx-runtime`);function s(e,t){return t===void 0?`idle`:e===t?`highlighted`:`dimmed`}function c({columnLabel:c,direction:l,onToggle:u,className:d}){let{messages:f}=e.useZuiConfig(),p=i.resolveSortToggleTooltipText(c,l,f.table);return(0,o.jsx)(n.default,{text:p,position:`top`,trigger:(0,o.jsx)(`button`,{type:`button`,"aria-label":p,"data-slot":`table-sort-toggle-button`,"data-sort-direction":l??`none`,onClick:u,className:t.cn(a.tableSortToggleVariants(),d),children:(0,o.jsxs)(`svg`,{viewBox:`0 0 10 16`,className:r.sortIconClassName,fill:`currentColor`,stroke:`currentColor`,strokeWidth:1,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,o.jsx)(`path`,{d:`M5 1.5 L8.5 6.5 H1.5 Z`,className:a.tableSortArrowVariants({emphasis:s(`asc`,l)})}),(0,o.jsx)(`path`,{d:`M1.5 9.5 H8.5 L5 14.5 Z`,className:a.tableSortArrowVariants({emphasis:s(`desc`,l)})})]})})})}exports.default=c;
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
import { useZuiConfig as e } from "../../config/useZuiConfig.js";
|
|
3
3
|
import { cn as t } from "../../lib/utils.js";
|
|
4
4
|
import n from "../Tooltip/Tooltip.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { sortIconClassName as r } from "./Table.constants.js";
|
|
6
|
+
import { resolveSortToggleTooltipText as i } from "./Table.utils.js";
|
|
7
|
+
import { tableSortArrowVariants as a, tableSortToggleVariants as o } from "./Table.variant.js";
|
|
8
8
|
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
9
9
|
//#region src/components/Table/TableSortToggle.tsx
|
|
10
10
|
function l(e, t) {
|
|
11
11
|
return t === void 0 ? "idle" : e === t ? "highlighted" : "dimmed";
|
|
12
12
|
}
|
|
13
13
|
function u({ columnLabel: u, direction: d, onToggle: f, className: p }) {
|
|
14
|
-
let { messages: m } = e(), h =
|
|
14
|
+
let { messages: m } = e(), h = i(u, d, m.table);
|
|
15
15
|
return /* @__PURE__ */ s(n, {
|
|
16
16
|
text: h,
|
|
17
17
|
position: "top",
|
|
@@ -21,10 +21,10 @@ function u({ columnLabel: u, direction: d, onToggle: f, className: p }) {
|
|
|
21
21
|
"data-slot": "table-sort-toggle-button",
|
|
22
22
|
"data-sort-direction": d ?? "none",
|
|
23
23
|
onClick: f,
|
|
24
|
-
className: t(
|
|
24
|
+
className: t(o(), p),
|
|
25
25
|
children: /* @__PURE__ */ c("svg", {
|
|
26
26
|
viewBox: "0 0 10 16",
|
|
27
|
-
className:
|
|
27
|
+
className: r,
|
|
28
28
|
fill: "currentColor",
|
|
29
29
|
stroke: "currentColor",
|
|
30
30
|
strokeWidth: 1,
|
|
@@ -32,10 +32,10 @@ function u({ columnLabel: u, direction: d, onToggle: f, className: p }) {
|
|
|
32
32
|
"aria-hidden": "true",
|
|
33
33
|
children: [/* @__PURE__ */ s("path", {
|
|
34
34
|
d: "M5 1.5 L8.5 6.5 H1.5 Z",
|
|
35
|
-
className:
|
|
35
|
+
className: a({ emphasis: l("asc", d) })
|
|
36
36
|
}), /* @__PURE__ */ s("path", {
|
|
37
37
|
d: "M1.5 9.5 H8.5 L5 14.5 Z",
|
|
38
|
-
className:
|
|
38
|
+
className: a({ emphasis: l("desc", d) })
|
|
39
39
|
})]
|
|
40
40
|
})
|
|
41
41
|
})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../../../_virtual/_rolldown/runtime.cjs`),t=require(`../Table.utils.cjs`);let n=require(`react`);n=e.__toESM(n,1);var r={};function i({rows:e,columns:i,filterConfig:a}){let o=a?.onFilterChange,s=typeof o==`function`,c=a?.values,[l,u]=n.useState(r),d=s&&c?c:l,f=n.useMemo(()=>JSON.stringify(d),[d]),p=n.useMemo(()=>Object.values(d).filter(e=>!t.isEmptyFilterValue(e)).length,[d]),m=n.useMemo(()=>{if(s||p===0)return e;let n=i.flatMap(e=>{let n=d[e.key];return n===void 0||t.isEmptyFilterValue(n)?[]:[{column:e,value:n}]});return e.filter(({row:e})=>n.every(({column:n,value:r})=>t.rowMatchesColumnFilter(e,n,r)))},[p,i,d,s,e]),h=n.useRef({filterValues:d,onFilterChange:o});n.useEffect(()=>{h.current={filterValues:d,onFilterChange:o}});let g=n.useCallback(e=>{u(e),h.current.onFilterChange?.(e)},[]);return{filteredRows:m,filterValues:d,activeFilterCount:p,filterKey:f,isRemoteFilter:s,handleFilterChange:n.useCallback((e,n)=>{let r={...h.current.filterValues};n===void 0||t.isEmptyFilterValue(n)?delete r[e]:r[e]=n,g(r)},[g]),handleFilterClear:n.useCallback(()=>g(r),[g])}}exports.useTableFilter=i;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TableFilterValue, TableFilterValues, TableSchemaColumn, TableSchemaFilter, TableVisibleRow } from "../Table.interface.cjs";
|
|
2
|
+
type UseTableFilterInput = {
|
|
3
|
+
rows: TableVisibleRow[];
|
|
4
|
+
columns: TableSchemaColumn[];
|
|
5
|
+
filterConfig?: TableSchemaFilter;
|
|
6
|
+
};
|
|
7
|
+
type UseTableFilterResult = {
|
|
8
|
+
filteredRows: TableVisibleRow[];
|
|
9
|
+
filterValues: TableFilterValues;
|
|
10
|
+
activeFilterCount: number;
|
|
11
|
+
/** Changes when any filter does; used to send the table back to its first page. */
|
|
12
|
+
filterKey: string;
|
|
13
|
+
isRemoteFilter: boolean;
|
|
14
|
+
handleFilterChange: (columnKey: string, value: TableFilterValue | undefined) => void;
|
|
15
|
+
handleFilterClear: () => void;
|
|
16
|
+
};
|
|
17
|
+
export declare function useTableFilter({ rows, columns, filterConfig, }: UseTableFilterInput): UseTableFilterResult;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TableFilterValue, TableFilterValues, TableSchemaColumn, TableSchemaFilter, TableVisibleRow } from "../Table.interface.js";
|
|
2
|
+
type UseTableFilterInput = {
|
|
3
|
+
rows: TableVisibleRow[];
|
|
4
|
+
columns: TableSchemaColumn[];
|
|
5
|
+
filterConfig?: TableSchemaFilter;
|
|
6
|
+
};
|
|
7
|
+
type UseTableFilterResult = {
|
|
8
|
+
filteredRows: TableVisibleRow[];
|
|
9
|
+
filterValues: TableFilterValues;
|
|
10
|
+
activeFilterCount: number;
|
|
11
|
+
/** Changes when any filter does; used to send the table back to its first page. */
|
|
12
|
+
filterKey: string;
|
|
13
|
+
isRemoteFilter: boolean;
|
|
14
|
+
handleFilterChange: (columnKey: string, value: TableFilterValue | undefined) => void;
|
|
15
|
+
handleFilterClear: () => void;
|
|
16
|
+
};
|
|
17
|
+
export declare function useTableFilter({ rows, columns, filterConfig, }: UseTableFilterInput): UseTableFilterResult;
|
|
18
|
+
export {};
|