@dcs-tech/ui 0.8.0 → 0.9.0

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.
@@ -902,6 +902,7 @@ export interface DataTableView<TData = any> {
902
902
  expandRow?: (row: TData) => ReactNode;
903
903
  actions?: DataTableRowAction<TData>[] | ((row: TData) => DataTableRowAction<TData>[]);
904
904
  inlineActions?: number;
905
+ actionsHeader?: boolean;
905
906
  bulkActions?: DataTableBulkAction<TData>[];
906
907
  hideBulkActions?: string[];
907
908
  pinning?: DataTablePinningConfig;
@@ -66,7 +66,7 @@ export { ImagePicker, ImageStrip, ImageViewer, prepareImage, ImagePrepareError }
66
66
  export type { ImagePickerProps, ImagePickerItem, ImageStripProps, StripImage, ImageViewerProps, ViewerImage, PrepareImageOptions, PreparedImage, } from './components/Image';
67
67
  export { Dialog } from './components/Dialog';
68
68
  export type { DialogProps, DialogPlacement, DialogSize } from './components/Dialog';
69
- export { useDialog } from './components/Dialog/DialogHost';
69
+ export { useDialog, DialogHost } from './components/Dialog/DialogHost';
70
70
  export { useDialogOpen } from './components/Dialog/dialogOpen';
71
71
  export type { DialogApi, DialogChoice, DialogActionProps, ConfirmOptions, ChooseOptions, AlertOptions, } from './components/Dialog/DialogHost';
72
72
  export { ToastHost, useToast } from './components/Toast';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcs-tech/ui",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "React UI component library — fields, buttons, tooltips, tables and design tokens.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -8,7 +8,8 @@
8
8
  "*.css"
9
9
  ],
10
10
  "files": [
11
- "dist"
11
+ "dist",
12
+ "CHANGELOG.md"
12
13
  ],
13
14
  "main": "./dist/index.js",
14
15
  "types": "./dist/types/index.d.ts",
@@ -1 +0,0 @@
1
- const e=()=>new DOMException(`Aborted`,`AbortError`);async function t(t,n){if(n.signal?.aborted)throw e();switch(t.kind){case`xlsx`:return l(t.workbook,n);case`pdf`:return p(t,n);default:throw Error(`Unknown file task: ${t.kind}`)}}const n=globalThis;async function r(){let e=await import(`exceljs`),t=[e.default?.default,e.default,e,n.ExcelJS].find(e=>e&&typeof e.Workbook==`function`);if(!t)throw Error(`ExcelJS did not load`);return t}async function i(){let e=await import(`pdfmake/build/pdfmake.js`),t=[e.default?.default,e.default,e,n.pdfMake].find(e=>e&&typeof e.createPdf==`function`);if(!t)throw Error(`pdfmake did not load`);let r=await import(`pdfmake/build/vfs_fonts.js`);return{pdfMake:t,vfs:[r?.default,r,r?.pdfMake?.vfs,r?.default?.pdfMake?.vfs,t.vfs,n.pdfMake?.vfs].find(e=>e&&e[`Roboto-Regular.ttf`])}}const a=e=>ArrayBuffer.isView(e)?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):e,o=e=>`FF`+e.replace(`#`,``).toUpperCase();function s(e,t){if(t&&((t.bold!==void 0||t.italic!==void 0||t.size||t.color)&&(e.font={...e.font??{},...t.bold===void 0?{}:{bold:t.bold},...t.italic===void 0?{}:{italic:t.italic},...t.size?{size:t.size}:{},...t.color?{color:{argb:o(t.color)}}:{}}),t.fill&&(e.fill={type:`pattern`,pattern:`solid`,fgColor:{argb:o(t.fill)}}),t.align&&(e.alignment={horizontal:t.align,vertical:`middle`}),t.numFmt&&(typeof e.value==`number`||e.value instanceof Date)&&(e.numFmt=t.numFmt),t.borderTop||t.borderBottom)){let n=e=>({style:e.style,...e.color?{color:{argb:o(e.color)}}:{}});e.border={...t.borderTop?{top:n(t.borderTop)}:{},...t.borderBottom?{bottom:n(t.borderBottom)}:{}}}}function c(e,t,n){let r=e.addRow(t.values);t.style?.bold&&(r.font={bold:!0}),t.merge&&n>1&&e.mergeCells(r.number,1,r.number,n);let i=t.merge?1:Math.max(t.values.length,0);for(let e=0;e<i;e++){let n=r.getCell(e+1);s(n,t.style),s(n,t.cells?.[e])}}async function l(t,n){let i=new(await(r())).Workbook,l=Math.max(1,t.sheets.reduce((e,t)=>e+t.rows.length,0)),u=Math.max(1,Math.floor(l/50)),d=0;for(let r of t.sheets){let t=i.addWorksheet(r.name),a=r.columns.length;t.columns=r.columns.map((e,t)=>({key:String(t),width:e.width}));for(let e of r.before??[])c(t,e,a);let f=t.addRow(r.columns.map(e=>e.header));f.font={bold:r.headerStyle?.bold??!0},f.eachCell((e,t)=>{let n=r.columns[t-1]?.align;n&&(e.alignment={horizontal:n,vertical:`middle`}),s(e,r.headerStyle)});let p=f.number;r.freeze?t.views=[{state:`frozen`,ySplit:r.freeze.rows??0,xSplit:r.freeze.cols??0}]:r.freezeHeader!==!1&&(t.views=[{state:`frozen`,ySplit:p}]),r.rows.forEach((i,a)=>{let c=t.addRow(i),f=r.cellStyles?.[a],p=r.stripe&&a%2==1;if(r.columns.forEach((e,t)=>{let n=c.getCell(t+1);e.numFmt&&(typeof n.value==`number`||n.value instanceof Date)&&(n.numFmt=e.numFmt),e.align&&(n.alignment={horizontal:e.align,vertical:`middle`}),p&&(n.fill={type:`pattern`,pattern:`solid`,fgColor:{argb:o(r.stripe)}}),s(n,e.style),s(n,f?.[t])}),++d%u===0){if(n.signal?.aborted)throw e();n.progress(d/l*.9)}}),r.autoFilter&&r.rows.length>0&&(t.autoFilter={from:{row:p,column:1},to:{row:p,column:a}});for(let e of r.after??[])c(t,e,a)}let f=await i.xlsx.writeBuffer();return n.progress(1),a(f)}const u={Roboto:{normal:`Roboto-Regular.ttf`,bold:`Roboto-Medium.ttf`,italics:`Roboto-Italic.ttf`,bolditalics:`Roboto-MediumItalic.ttf`}};function d(e){let t=e.hLineWidth??1,n=e.edgeLineWidth??t;return{hLineWidth:(e,r)=>e===0||e===(r.table.headerRows??0)||e===r.table.body.length?n:t,vLineWidth:()=>e.vLineWidth??1,...e.hLineColor?{hLineColor:()=>e.hLineColor}:{},...e.vLineColor?{vLineColor:()=>e.vLineColor}:{},...e.paddingX===void 0?{}:{paddingLeft:()=>e.paddingX,paddingRight:()=>e.paddingX},...e.paddingY===void 0?{}:{paddingTop:()=>e.paddingY,paddingBottom:()=>e.paddingY}}}function f(e){return(t,n)=>({text:e.text.replace(/\{page\}/g,String(t)).replace(/\{pages\}/g,String(n)),...e.font?{font:e.font}:{},alignment:e.alignment??`center`,fontSize:e.fontSize??8,...e.color?{color:e.color}:{},...e.margin?{margin:e.margin}:{}})}async function p(t,n){let r=n.pdfFonts?{fonts:{...n.pdfFonts.fonts,...t.fonts?.fonts},vfs:n.pdfFonts.vfs||t.fonts?.vfs?{...n.pdfFonts.vfs,...t.fonts?.vfs}:void 0}:t.fonts,a=t.footer?{...t.document,footer:f(t.footer)}:t.document,o=t.tableLayouts?Object.fromEntries(Object.entries(t.tableLayouts).map(([e,t])=>[e,d(t)])):void 0,{pdfMake:s,vfs:c}=await i();if(n.progress(.1),n.signal?.aborted)throw e();let l={...u,...r?.fonts??{}},p=r?.vfs?{...c??{},...r.vfs}:c,m=await new Promise((e,t)=>{try{let n=s.createPdf(a,o,l,p).getStream(),r=[];n.on(`data`,e=>r.push(e)),n.on(`error`,t),n.on(`end`,()=>{let t=new Uint8Array(r.reduce((e,t)=>e+t.byteLength,0)),n=0;for(let e of r)t.set(e,n),n+=e.byteLength;e(t.buffer)}),n.end()}catch(e){t(e)}});return n.progress(1),m}let m;const h=self;h.onmessage=async e=>{if(e.data.type===`init`){m=e.data.pdfFonts;return}let{id:n,task:r}=e.data;try{let e=await t(r,{progress:e=>h.postMessage({type:`progress`,id:n,fraction:e}),pdfFonts:m});h.postMessage({type:`done`,id:n,buffer:e},[e])}catch(e){h.postMessage({type:`error`,id:n,message:e instanceof Error?e.message:String(e)})}};
@@ -1,236 +0,0 @@
1
- "use client";
2
- import { Nn as e, wn as t } from "./geometry-yZmKN662.js";
3
- import { n, t as r } from "./labels-CnqqTrne.js";
4
- import { createContext as i, useCallback as ee, useContext as a, useEffect as o, useId as te, useMemo as s, useRef as c, useState as l } from "react";
5
- import { jsx as u, jsxs as d } from "react/jsx-runtime";
6
- import { createPortal as ne } from "react-dom";
7
- // src/components/Dialog/dialogOpen.tsx
8
- var f = i(null), p = i(0), m = ({ children: e }) => {
9
- let [t, n] = l(0), r = s(() => () => {
10
- n((e) => e + 1);
11
- let e = !1;
12
- return () => {
13
- e || (e = !0, n((e) => e - 1));
14
- };
15
- }, []);
16
- return /* @__PURE__ */ u(f.Provider, {
17
- value: r,
18
- children: /* @__PURE__ */ u(p.Provider, {
19
- value: t,
20
- children: e
21
- })
22
- });
23
- };
24
- function h(e) {
25
- let t = a(f);
26
- o(() => e && t ? t() : void 0, [e, t]);
27
- }
28
- var g = () => a(p), _ = () => a(p) > 0, v = {
29
- root: "_root_1rswg_7",
30
- nonModal: "_nonModal_1rswg_30",
31
- panel: "_panel_1rswg_3",
32
- center: "_center_1rswg_41",
33
- right: "_right_1rswg_42",
34
- left: "_left_1rswg_43",
35
- top: "_top_1rswg_44",
36
- bottom: "_bottom_1rswg_45",
37
- sm: "_sm_1rswg_86",
38
- md: "_md_1rswg_87",
39
- lg: "_lg_1rswg_88",
40
- xl: "_xl_1rswg_89",
41
- full: "_full_1rswg_90",
42
- header: "_header_1rswg_96",
43
- headText: "_headText_1rswg_106",
44
- title: "_title_1rswg_108",
45
- subtitle: "_subtitle_1rswg_114",
46
- body: "_body_1rswg_120",
47
- flush: "_flush_1rswg_128",
48
- footer: "_footer_1rswg_130",
49
- close: "_close_1rswg_141",
50
- dialogPop: "_dialogPop_1rswg_1",
51
- slideFromRight: "_slideFromRight_1rswg_1",
52
- slideFromLeft: "_slideFromLeft_1rswg_1",
53
- slideFromTop: "_slideFromTop_1rswg_1",
54
- slideFromBottom: "_slideFromBottom_1rswg_1",
55
- backdropIn: "_backdropIn_1rswg_1",
56
- closing: "_closing_1rswg_168"
57
- }, y = 0, b = null, x = (e) => {
58
- if (typeof document < "u") {
59
- if (y === 0) {
60
- let t = document.body;
61
- b = {
62
- overflow: t.style.overflow,
63
- paddingRight: t.style.paddingRight
64
- };
65
- let n = window.innerWidth - document.documentElement.clientWidth;
66
- if (e && n > 0) {
67
- let e = parseFloat(window.getComputedStyle(t).paddingRight) || 0;
68
- t.style.paddingRight = `${e + n}px`;
69
- }
70
- t.style.overflow = "hidden";
71
- }
72
- y += 1;
73
- }
74
- }, re = () => {
75
- typeof document < "u" && (y = Math.max(0, y - 1), y === 0 && b && (document.body.style.overflow = b.overflow, document.body.style.paddingRight = b.paddingRight, b = null));
76
- }, ie = () => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches, S = /* @__PURE__ */ d("svg", {
77
- width: "16",
78
- height: "16",
79
- viewBox: "0 0 24 24",
80
- fill: "none",
81
- stroke: "currentColor",
82
- strokeWidth: "2",
83
- strokeLinecap: "round",
84
- "aria-hidden": "true",
85
- children: [/* @__PURE__ */ u("line", {
86
- x1: "18",
87
- y1: "6",
88
- x2: "6",
89
- y2: "18"
90
- }), /* @__PURE__ */ u("line", {
91
- x1: "6",
92
- y1: "6",
93
- x2: "18",
94
- y2: "18"
95
- })]
96
- }), ae = 0, C = ({ open: n, onClose: r, onBeforeClose: i, onEscKeyDown: a, onOverlayClick: s, onAnimationEnd: f, children: p, title: m, subtitle: g, footer: _, modal: y = !0, placement: b = "center", size: C = "md", closeOnBackdrop: w = !0, closeOnEscape: T = !0, showCloseButton: E = !0, closeIcon: D, closeIconId: O, blockScroll: k = !0, reserveScrollBarGap: A = !0, initialFocusRef: j, container: oe, animationDuration: se = 200, padded: ce = !0, classNames: M = {}, styleSlots: N = {}, className: P = "", style: F, role: I = "dialog", id: L, "aria-label": R, "aria-labelledby": z, "aria-describedby": B }) => {
97
- let V = e(), H = c(null), [U, W] = l(null), G = te(), [K, q] = l(n), [le, J] = l(!1), Y = c(null), X = ie() ? 0 : se;
98
- h(K), o(() => {
99
- n ? (Y.current &&= (clearTimeout(Y.current), null), J(!1), q(!0)) : K && (J(!0), Y.current = setTimeout(() => {
100
- H.current?.close(), q(!1), J(!1), f?.();
101
- }, X));
102
- }, [n]), o(() => () => {
103
- Y.current && clearTimeout(Y.current);
104
- }, []);
105
- let Z = ee(() => {
106
- i && i() === !1 || r?.();
107
- }, [i, r]);
108
- o(() => {
109
- let e = H.current;
110
- if (e && K && (e.open || (y && (e.dataset.modalOrder = String(++ae)), y ? e.showModal() : e.show(), j?.current && j.current.focus({ focusVisible: !0 })), k && y)) return x(A), () => re();
111
- }, [
112
- K,
113
- y,
114
- k,
115
- A,
116
- j
117
- ]), o(() => {
118
- let e = H.current;
119
- if (!e || !K) return;
120
- let t = (e) => {
121
- e.preventDefault(), a?.(e), T && Z();
122
- };
123
- return e.addEventListener("cancel", t), () => e.removeEventListener("cancel", t);
124
- }, [
125
- K,
126
- T,
127
- Z,
128
- a
129
- ]);
130
- let Q = c(!1), ue = (e) => {
131
- Q.current = e.target === H.current;
132
- }, de = (e) => {
133
- let t = Q.current && e.target === H.current;
134
- Q.current = !1, t && (s?.(e), w && Z());
135
- };
136
- if (!K) return null;
137
- let fe = m !== void 0 || g !== void 0 || E, pe = z ?? (m !== void 0 && !R ? G : void 0), me = /* @__PURE__ */ u("dialog", {
138
- ref: (e) => {
139
- H.current = e, W(e);
140
- },
141
- id: L,
142
- "data-modal": y ? "" : void 0,
143
- className: [
144
- v.root,
145
- v[b],
146
- v[C],
147
- y ? "" : v.nonModal,
148
- le ? v.closing : "",
149
- M.root,
150
- P
151
- ].filter(Boolean).join(" "),
152
- style: {
153
- "--dialog-anim": `${X}ms`,
154
- ...N.root,
155
- ...F
156
- },
157
- role: I,
158
- "aria-label": R,
159
- "aria-labelledby": pe,
160
- "aria-describedby": B,
161
- "aria-modal": y || void 0,
162
- onPointerDown: ue,
163
- onPointerUp: de,
164
- children: /* @__PURE__ */ u(t.Provider, {
165
- value: U,
166
- children: /* @__PURE__ */ d("div", {
167
- className: [v.panel, M.panel].filter(Boolean).join(" "),
168
- style: N.panel,
169
- children: [
170
- fe && /* @__PURE__ */ d("div", {
171
- className: [v.header, M.header].filter(Boolean).join(" "),
172
- style: N.header,
173
- children: [/* @__PURE__ */ d("span", {
174
- className: v.headText,
175
- children: [m !== void 0 && /* @__PURE__ */ u("span", {
176
- className: v.title,
177
- id: G,
178
- children: m
179
- }), g !== void 0 && /* @__PURE__ */ u("span", {
180
- className: v.subtitle,
181
- children: g
182
- })]
183
- }), E && /* @__PURE__ */ u("button", {
184
- type: "button",
185
- id: O,
186
- className: [v.close, M.closeButton].filter(Boolean).join(" "),
187
- style: N.closeButton,
188
- onClick: Z,
189
- "aria-label": V.dialog.close,
190
- children: D ?? S
191
- })]
192
- }),
193
- p !== void 0 && /* @__PURE__ */ u("div", {
194
- className: [
195
- v.body,
196
- ce ? "scroll-fade-y scroll-gutter" : `${v.flush} scroll-fade-y`,
197
- M.body
198
- ].filter(Boolean).join(" "),
199
- style: N.body,
200
- children: p
201
- }),
202
- _ !== void 0 && /* @__PURE__ */ u("div", {
203
- className: [v.footer, M.footer].filter(Boolean).join(" "),
204
- style: N.footer,
205
- children: _
206
- })
207
- ]
208
- })
209
- })
210
- }), $ = oe ?? (typeof document > "u" ? null : document.body);
211
- return $ ? ne(me, $) : null;
212
- };
213
- C.displayName = "Dialog";
214
- var w = i({
215
- authorize: () => !0,
216
- exportOptions: {},
217
- serverMode: !1,
218
- labels: r,
219
- format: n(),
220
- text: {
221
- yes: r.yes,
222
- no: r.no
223
- }
224
- });
225
- function T() {
226
- return a(w);
227
- }
228
- function E() {
229
- return a(w).labels;
230
- }
231
- function D(e, t, n) {
232
- return !e || e(t, n) !== !1;
233
- }
234
- // src/components/DataTable/layout/scrollArea.ts
235
- var O = "dt-scroll-area scroll-fade-y scroll-gutter", k = "dt-scroll-area scroll-fade-x scroll-fade-y scroll-gutter";
236
- export { E as a, m as c, D as i, _ as l, O as n, T as o, w as r, C as s, k as t, g as u };