@scbt-ecom/ui 0.120.0 → 0.120.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/lib/shared/style.css +1 -1
- package/dist/lib/shared/ui/icon/allowedIcons.js +1 -1
- package/dist/lib/shared/ui/icon/allowedIcons.js.map +1 -1
- package/dist/lib/shared/ui/icon/iconsMap.js +1 -1
- package/dist/lib/shared/ui/icon/iconsMap.js.map +1 -1
- package/dist/lib/shared/ui/pagination/hooks/usePagination.js +1 -1
- package/dist/lib/shared/ui/pagination/hooks/usePagination.js.map +1 -1
- package/dist/lib/shared/ui/table/Desktop.js +1 -1
- package/dist/lib/shared/ui/table/Desktop.js.map +1 -1
- package/dist/lib/shared/ui/table/Horizontal.js +1 -1
- package/dist/lib/shared/ui/table/Horizontal.js.map +1 -1
- package/dist/lib/shared/ui/table/model/TableUtils.js +1 -1
- package/dist/lib/shared/ui/table/model/TableUtils.js.map +1 -1
- package/dist/lib/shared/ui/table/ui/editableCell/EditableCell.js +1 -1
- package/dist/lib/shared/ui/table/ui/editableCell/EditableCell.js.map +1 -1
- package/dist/lib/widgets/model/helpers.js +2 -2
- package/dist/lib/widgets/model/helpers.js.map +1 -1
- package/dist/static/files/fileMultiple.svg.js +2 -0
- package/dist/static/files/fileMultiple.svg.js.map +1 -0
- package/dist/static/static/files/fileMultiple.svg +3 -0
- package/dist/stats.html +1 -1
- package/dist/types/lib/shared/ui/icon/allowedIcons.d.ts +2 -2
- package/dist/types/lib/shared/ui/icon/iconsMap.d.ts +6 -0
- package/dist/types/lib/shared/ui/table/ui/editableCell/EditableCell.d.ts +6 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Horizontal.js","sources":["../../../../../lib/shared/ui/table/Horizontal.tsx"],"sourcesContent":["import { useLayoutEffect, useRef, useState } from 'react'\nimport { flexRender, type Header, type Table as TTable } from '@tanstack/react-table'\nimport type { DataTableProps } from './model'\nimport { TablePagination } from './TablePagination'\nimport { Table, TableBody, TableCell, TableHead, TableRow } from './ui'\nimport { cn } from '$/shared/utils'\n\ntype DesktopTableProps<TData extends {}> = Pick<\n DataTableProps<TData>,\n 'enableHeaders' | 'classes' | 'mode' | 'pagination' | 'empty'\n> & {\n table: TTable<TData>\n}\n\nexport const Horizontal = <TData extends {}>({\n mode,\n enableHeaders,\n table,\n classes,\n pagination,\n empty = 'Ничего не найдено'\n}: DesktopTableProps<TData>) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const [hasLeftOffset, setLeftOffset] = useState<boolean>(false)\n\n useLayoutEffect(() => {\n if (!containerRef.current) return\n const container = containerRef.current\n\n const abortController = new AbortController()\n\n containerRef.current.addEventListener(\n 'scroll',\n () => {\n const offset = container.scrollLeft\n setLeftOffset(offset !== 0)\n },\n { signal: abortController.signal }\n )\n\n return () => {\n abortController.abort()\n }\n }, [])\n\n const paginationEnabled = pagination !== false && table.getPageCount() > 1\n\n const paginationProps = {\n pageCount: table.getPageCount(),\n rowsCount: table.getCoreRowModel().rows.length,\n pageSize: table.getState().pagination.pageSize,\n page: table.getState().pagination.pageIndex + 1,\n onPageIndexChange: table.setPageIndex,\n classes: classes?.pagination\n }\n\n const rows = table.getRowModel().rows\n const columns = table.getAllLeafColumns()\n\n // карта column.id -> header\n const headersMap = new Map<string, Header<TData, unknown>>()\n table.getHeaderGroups().forEach((group) => {\n group.headers.forEach((header) => {\n headersMap.set(header.column.id, header)\n })\n })\n\n return (\n <div className={cn('flex w-full flex-col gap-y-4', classes?.root)}>\n <div ref={containerRef} className='customScrollbar-y relative overflow-x-auto pb-2'>\n <Table className={cn('min-w-full', classes?.table)}>\n <TableBody>\n {columns.length && rows.length ? (\n columns.map((column, index) => {\n const header = headersMap.get(column.id)\n\n return (\n <TableRow\n key={column.id}\n className={cn(\n 'w-full',\n {\n '[&:not(:last-child)]:border-b': mode === 'solid'\n },\n classes?.tableRow\n )}\n >\n {enableHeaders && (\n <TableHead\n className={cn(\n 'sticky left-0 bg-color-white py-3 text-left text-color-tetriary desktop:whitespace-nowrap desktop:px-4 desktop:py-[17px]',\n {\n 'px-3': mode === 'odd',\n 'bg-color-primary-light-default': mode === 'odd' && index % 2 === 0,\n '[&:not(:last-child)]:border-b-[rgba(234,237,241,1)]': mode === 'solid',\n 'drop-shadow-xl': hasLeftOffset\n },\n classes?.tableHead\n )}\n >\n {header && flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n )}\n\n {rows.map((row, rowIndex) => {\n const cell = row.getVisibleCells().find((c) => c.column.id === column.id)\n if (!cell) return null\n\n return (\n <TableCell\n key={cell.id}\n className={cn(\n 'whitespace-nowrap py-3',\n {\n 'bg-color-primary-light-default': mode === 'odd' && index % 2 === 0,\n 'font-medium': index !== 0,\n 'px-3 desktop:p-4 desktop:pl-5': mode === 'odd'\n },\n classes?.tableCell\n )}\n >\n {flexRender(cell.column.columnDef.cell, {\n ...cell.getContext(),\n rowIndex\n })}\n </TableCell>\n )\n })}\n </TableRow>\n )\n })\n ) : (\n <TableRow>\n <TableCell className='py-4 text-center' colSpan={columns.length + 1}>\n {empty}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {paginationEnabled ? (\n typeof pagination === 'function' ? (\n pagination(paginationProps)\n ) : (\n <TablePagination {...paginationProps} />\n )\n ) : null}\n </div>\n )\n}\n"],"names":["Horizontal","mode","enableHeaders","table","classes","pagination","empty","containerRef","useRef","hasLeftOffset","setLeftOffset","useState","useLayoutEffect","container","abortController","offset","paginationEnabled","paginationProps","rows","columns","headersMap","group","header","cn","jsx","Table","TableBody","column","index","jsxs","TableRow","TableHead","flexRender","row","rowIndex","cell","c","TableCell","TablePagination"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Horizontal.js","sources":["../../../../../lib/shared/ui/table/Horizontal.tsx"],"sourcesContent":["import { useLayoutEffect, useRef, useState } from 'react'\nimport { flexRender, type Header, type Table as TTable } from '@tanstack/react-table'\nimport type { DataTableProps } from './model'\nimport { TablePagination } from './TablePagination'\nimport { Table, TableBody, TableCell, TableHead, TableRow } from './ui'\nimport { cn } from '$/shared/utils'\n\ntype DesktopTableProps<TData extends {}> = Pick<\n DataTableProps<TData>,\n 'enableHeaders' | 'classes' | 'mode' | 'pagination' | 'empty'\n> & {\n table: TTable<TData>\n}\n\nexport const Horizontal = <TData extends {}>({\n mode,\n enableHeaders,\n table,\n classes,\n pagination,\n empty = 'Ничего не найдено'\n}: DesktopTableProps<TData>) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const [hasLeftOffset, setLeftOffset] = useState<boolean>(false)\n\n useLayoutEffect(() => {\n if (!containerRef.current) return\n const container = containerRef.current\n\n const abortController = new AbortController()\n\n containerRef.current.addEventListener(\n 'scroll',\n () => {\n const offset = container.scrollLeft\n setLeftOffset(offset !== 0)\n },\n { signal: abortController.signal }\n )\n\n return () => {\n abortController.abort()\n }\n }, [])\n\n const paginationEnabled = pagination !== false && table.getPageCount() > 1\n\n const paginationProps = {\n pageCount: table.getPageCount(),\n rowsCount: table.getCoreRowModel().rows.length,\n pageSize: table.getState().pagination.pageSize,\n page: table.getState().pagination.pageIndex + 1,\n onPageIndexChange: table.setPageIndex,\n classes: classes?.pagination\n }\n\n const rows = table.getRowModel().rows\n const columns = table.getAllLeafColumns()\n\n // карта column.id -> header\n const headersMap = new Map<string, Header<TData, unknown>>()\n table.getHeaderGroups().forEach((group) => {\n group.headers.forEach((header) => {\n headersMap.set(header.column.id, header)\n })\n })\n\n return (\n <div className={cn('flex w-full flex-col gap-y-4', classes?.root)}>\n <div ref={containerRef} className='customScrollbar-y relative overflow-x-auto pb-2'>\n <Table className={cn('min-w-full', classes?.table)}>\n <TableBody>\n {columns.length && rows.length ? (\n columns.map((column, index) => {\n const header = headersMap.get(column.id)\n\n return (\n <TableRow\n key={column.id}\n className={cn(\n 'w-full',\n {\n '[&:not(:last-child)]:border-b': mode === 'solid'\n },\n classes?.tableRow\n )}\n >\n {enableHeaders && (\n <TableHead\n className={cn(\n 'sticky left-0 bg-color-white py-3 text-left text-color-tetriary desktop:whitespace-nowrap desktop:px-4 desktop:py-[17px]',\n {\n 'px-3': mode === 'odd',\n 'bg-color-primary-light-default': mode === 'odd' && index % 2 === 0,\n '[&:not(:last-child)]:border-b-[rgba(234,237,241,1)]': mode === 'solid',\n 'drop-shadow-xl': hasLeftOffset\n },\n classes?.tableHead\n )}\n >\n {header && flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n )}\n\n {rows.map((row, rowIndex) => {\n const cell = row.getVisibleCells().find((c) => c.column.id === column.id)\n if (!cell) return null\n\n return (\n <TableCell\n key={cell.id}\n className={cn(\n 'whitespace-nowrap py-3',\n {\n 'bg-color-primary-light-default': mode === 'odd' && index % 2 === 0,\n 'font-medium': index !== 0,\n 'px-3 desktop:p-4 desktop:pl-5': mode === 'odd'\n },\n classes?.tableCell\n )}\n >\n {flexRender(cell.column.columnDef.cell, {\n ...cell.getContext(),\n rowIndex\n })}\n </TableCell>\n )\n })}\n </TableRow>\n )\n })\n ) : (\n <TableRow>\n <TableCell className='py-4 text-center' colSpan={columns.length + 1}>\n {empty}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {paginationEnabled ? (\n typeof pagination === 'function' ? (\n pagination(paginationProps)\n ) : (\n <TablePagination {...paginationProps} />\n )\n ) : null}\n </div>\n )\n}\n"],"names":["Horizontal","mode","enableHeaders","table","classes","pagination","empty","containerRef","useRef","hasLeftOffset","setLeftOffset","useState","useLayoutEffect","container","abortController","offset","paginationEnabled","paginationProps","rows","columns","headersMap","group","header","cn","jsx","Table","TableBody","column","index","jsxs","TableRow","TableHead","flexRender","row","rowIndex","cell","c","TableCell","TablePagination"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as d}from"react/jsx-runtime";import"../ui/primitives/Primitives.js";import{DataTableColumnHeader as S}from"../ui/dataTableColumnHeader/DataTableColumnHeader.js";import"react";import"../../../../../node_modules/classnames/index.js";import{TypeGuards as
|
|
1
|
+
import{jsx as d}from"react/jsx-runtime";import"../ui/primitives/Primitives.js";import{DataTableColumnHeader as S}from"../ui/dataTableColumnHeader/DataTableColumnHeader.js";import"react";import"../../../../../node_modules/classnames/index.js";import{TypeGuards as c}from"../../../utils/typeGuards.js";import"../../button/Button.js";import"../../buttonIcon/ButtonIcon.js";import"../../calendar/Calendar.js";import"../../calendar/model/utils.js";import"../../accordion/Accordion.js";import"react-dom";import"../../modal/ui/IframeModalContent.js";import"../../../../../node_modules/react-hot-toast/dist/index.js";import"../../carousel/ui/CarouselContent.js";import"../../slot/Slot.js";import"../../formElements/uncontrolled/autocomplete/Autocomplete.js";import"../../formElements/uncontrolled/checkbox/Checkbox.js";import"../../formElements/uncontrolled/combobox/combobox.js";import"../../formElements/uncontrolled/dayPicker/DayPicker.js";import"../../formElements/uncontrolled/input/Input.js";import"../../formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../formElements/uncontrolled/maskInput/MaskInput.js";import"../../formElements/uncontrolled/radio/RadioGroup.js";import"../../formElements/uncontrolled/radio/ui/RadioItem.js";import"../../formElements/uncontrolled/slider/SliderBase.js";import"../../formElements/uncontrolled/switch/Switch.js";import"../../formElements/uncontrolled/textarea/Textarea.js";import"../../formElements/uncontrolled/uploader/UploaderBase.js";import"../../formElements/uncontrolled/inputCurrency/InputCurrency.js";import"../../../../../src/configs/api.js";import"../../formElements/controlled/editor/ui/Editor.js";import"../../formElements/controlled/input/MaskInputControl.js";import"../../dropdownList/ui/dropdownItem/DropdownItem.js";import{createColumnHelper as b}from"../../../../../node_modules/@tanstack/table-core/build/lib/index.js";class rr{static getColumnHelper(){return b()}static getColumns(a,g){const{helper:u=this.getColumnHelper(),enableColumnFilter:e=!1,enableSorting:i=!1,cellAccessor:n,headerAccessor:l,sortingFn:m,size:p}=g||{};return Object.keys(a).map(r=>u.accessor(r,{header:o=>{const{column:t}=o,s=l?l[r]:null;return d(S,{isSorted:t.getIsSorted()==="desc",nextSortingOrder:t.getNextSortingOrder(),toggleSorting:t.toggleSorting,canSort:t.getCanSort(),children:s?s(r,o):r})},cell:o=>{const t=n?n[r]:null;return t?t(o):o.getValue()},enableColumnFilter:c.isBoolean(e)?e:e.includes(r),enableSorting:c.isBoolean(i)?i:i.includes(r),sortingFn:typeof m=="object"?m[r]:m,...p==null?void 0:p[r]}))}}export{rr as TableUtils};
|
|
2
2
|
//# sourceMappingURL=TableUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableUtils.js","sources":["../../../../../../lib/shared/ui/table/model/TableUtils.tsx"],"sourcesContent":["import {\n type CellContext,\n type ColumnDef,\n type ColumnHelper,\n createColumnHelper,\n type HeaderContext,\n type SortingFnOption\n} from '@tanstack/react-table'\nimport { DataTableColumnHeader } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype SizeOptions = {\n size?: number\n minSize?: number\n maxSize?: number\n}\n\ntype ColumnDefOptions<TData, TValue> = {\n enableSorting?: (keyof TData)[] | boolean\n sortingFn?: SortingFnOption<TData> | Partial<Record<keyof TData, SortingFnOption<TData>>>\n enableColumnFilter?: (keyof TData)[] | boolean\n size?: Partial<Record<keyof TData, SizeOptions>>\n helper?: ColumnHelper<TData>\n cellAccessor?: Partial<Record<keyof TData, (cellContext: CellContext<TData, TValue>) => React.ReactNode>>\n headerAccessor?: Partial<\n Record<keyof TData, (key: keyof TData, headerContext: HeaderContext<TData, TValue>) => React.ReactNode>\n >\n}\n\nexport class TableUtils {\n static getColumnHelper<TData extends {}>(): ColumnHelper<TData> {\n return createColumnHelper<TData>()\n }\n\n static getColumns<TData extends {}, TValue = TData[keyof TData]>(\n template: TData,\n options?: ColumnDefOptions<TData, TValue>\n ): ColumnDef<TData>[] {\n const {\n helper = this.getColumnHelper<TData>(),\n enableColumnFilter = false,\n enableSorting = false,\n cellAccessor,\n headerAccessor,\n sortingFn,\n size\n } = options || {}\n\n const keys = Object.keys(template) as (keyof TData)[]\n\n return keys.map((key) => {\n return helper.accessor<any, TValue>(key, {\n header: (header) => {\n const { column } = header\n const accessor = headerAccessor ? headerAccessor[key] : null\n\n return (\n <DataTableColumnHeader\n isSorted={column.getIsSorted() === 'desc'}\n nextSortingOrder={column.getNextSortingOrder()}\n toggleSorting={column.toggleSorting}\n canSort={column.getCanSort()}\n >\n {accessor ? accessor(key, header) : (key as string)}\n </DataTableColumnHeader>\n )\n },\n cell: (cell) => {\n const accessor = cellAccessor ? cellAccessor[key] : null\n\n return accessor ? accessor(cell) : cell.getValue()\n },\n enableColumnFilter: TypeGuards.isBoolean(enableColumnFilter) ? enableColumnFilter : enableColumnFilter.includes(key),\n enableSorting: TypeGuards.isBoolean(enableSorting) ? enableSorting : enableSorting.includes(key),\n sortingFn: typeof sortingFn === 'object' ? sortingFn[key] : sortingFn,\n ...size?.[key]\n })\n }) as ColumnDef<TData>[]\n }\n}\n"],"names":["TableUtils","createColumnHelper","template","options","helper","enableColumnFilter","enableSorting","cellAccessor","headerAccessor","sortingFn","size","key","header","column","accessor","jsx","DataTableColumnHeader","cell","TypeGuards"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableUtils.js","sources":["../../../../../../lib/shared/ui/table/model/TableUtils.tsx"],"sourcesContent":["import {\n type CellContext,\n type ColumnDef,\n type ColumnHelper,\n createColumnHelper,\n type HeaderContext,\n type SortingFnOption\n} from '@tanstack/react-table'\nimport { DataTableColumnHeader } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype SizeOptions = {\n size?: number\n minSize?: number\n maxSize?: number\n}\n\ntype ColumnDefOptions<TData, TValue> = {\n enableSorting?: (keyof TData)[] | boolean\n sortingFn?: SortingFnOption<TData> | Partial<Record<keyof TData, SortingFnOption<TData>>>\n enableColumnFilter?: (keyof TData)[] | boolean\n size?: Partial<Record<keyof TData, SizeOptions>>\n helper?: ColumnHelper<TData>\n cellAccessor?: Partial<Record<keyof TData, (cellContext: CellContext<TData, TValue>) => React.ReactNode>>\n headerAccessor?: Partial<\n Record<keyof TData, (key: keyof TData, headerContext: HeaderContext<TData, TValue>) => React.ReactNode>\n >\n}\n\nexport class TableUtils {\n static getColumnHelper<TData extends {}>(): ColumnHelper<TData> {\n return createColumnHelper<TData>()\n }\n\n static getColumns<TData extends {}, TValue = TData[keyof TData]>(\n template: TData,\n options?: ColumnDefOptions<TData, TValue>\n ): ColumnDef<TData>[] {\n const {\n helper = this.getColumnHelper<TData>(),\n enableColumnFilter = false,\n enableSorting = false,\n cellAccessor,\n headerAccessor,\n sortingFn,\n size\n } = options || {}\n\n const keys = Object.keys(template) as (keyof TData)[]\n\n return keys.map((key) => {\n return helper.accessor<any, TValue>(key, {\n header: (header) => {\n const { column } = header\n const accessor = headerAccessor ? headerAccessor[key] : null\n\n return (\n <DataTableColumnHeader\n isSorted={column.getIsSorted() === 'desc'}\n nextSortingOrder={column.getNextSortingOrder()}\n toggleSorting={column.toggleSorting}\n canSort={column.getCanSort()}\n >\n {accessor ? accessor(key, header) : (key as string)}\n </DataTableColumnHeader>\n )\n },\n cell: (cell) => {\n const accessor = cellAccessor ? cellAccessor[key] : null\n\n return accessor ? accessor(cell) : cell.getValue()\n },\n enableColumnFilter: TypeGuards.isBoolean(enableColumnFilter) ? enableColumnFilter : enableColumnFilter.includes(key),\n enableSorting: TypeGuards.isBoolean(enableSorting) ? enableSorting : enableSorting.includes(key),\n sortingFn: typeof sortingFn === 'object' ? sortingFn[key] : sortingFn,\n ...size?.[key]\n })\n }) as ColumnDef<TData>[]\n }\n}\n"],"names":["TableUtils","createColumnHelper","template","options","helper","enableColumnFilter","enableSorting","cellAccessor","headerAccessor","sortingFn","size","key","header","column","accessor","jsx","DataTableColumnHeader","cell","TypeGuards"],"mappings":"21DA6BO,MAAMA,EAAW,CACtB,OAAO,iBAAyD,CAC9D,OAAOC,EAAA,CACT,CAEA,OAAO,WACLC,EACAC,EACoB,CACpB,KAAM,CACJ,OAAAC,EAAS,KAAK,gBAAA,EACd,mBAAAC,EAAqB,GACrB,cAAAC,EAAgB,GAChB,aAAAC,EACA,eAAAC,EACA,UAAAC,EACA,KAAAC,CAAA,EACEP,GAAW,CAAA,EAIf,OAFa,OAAO,KAAKD,CAAQ,EAErB,IAAKS,GACRP,EAAO,SAAsBO,EAAK,CACvC,OAASC,GAAW,CAClB,KAAM,CAAE,OAAAC,GAAWD,EACbE,EAAWN,EAAiBA,EAAeG,CAAG,EAAI,KAExD,OACEI,EAACC,EAAA,CACC,SAAUH,EAAO,YAAA,IAAkB,OACnC,iBAAkBA,EAAO,oBAAA,EACzB,cAAeA,EAAO,cACtB,QAASA,EAAO,WAAA,EAEf,SAAAC,EAAWA,EAASH,EAAKC,CAAM,EAAKD,CAAA,CAAA,CAG3C,EACA,KAAOM,GAAS,CACd,MAAMH,EAAWP,EAAeA,EAAaI,CAAG,EAAI,KAEpD,OAAOG,EAAWA,EAASG,CAAI,EAAIA,EAAK,SAAA,CAC1C,EACA,mBAAoBC,EAAW,UAAUb,CAAkB,EAAIA,EAAqBA,EAAmB,SAASM,CAAG,EACnH,cAAeO,EAAW,UAAUZ,CAAa,EAAIA,EAAgBA,EAAc,SAASK,CAAG,EAC/F,UAAW,OAAOF,GAAc,SAAWA,EAAUE,CAAG,EAAIF,EAC5D,GAAGC,GAAA,YAAAA,EAAOC,EAAG,CACd,CACF,CACH,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsxs as x,jsx as p}from"react/jsx-runtime";import{useState as C,useRef as s}from"react";import{useClickOutside as y}from"../../../../hooks/useClickOutside.js";import"../../../../../../node_modules/classnames/index.js";import{Button as N}from"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as j}from"../../../icon/Icon.js";import"../primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../../../formElements/uncontrolled/autocomplete/Autocomplete.js";import"../../../formElements/uncontrolled/checkbox/Checkbox.js";import"../../../formElements/uncontrolled/combobox/combobox.js";import"../../../formElements/uncontrolled/dayPicker/DayPicker.js";import"../../../formElements/uncontrolled/input/Input.js";import"../../../formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../../formElements/uncontrolled/maskInput/MaskInput.js";import"../../../formElements/uncontrolled/radio/RadioGroup.js";import"../../../formElements/uncontrolled/radio/ui/RadioItem.js";import"../../../formElements/uncontrolled/slider/SliderBase.js";import"../../../formElements/uncontrolled/switch/Switch.js";import"../../../formElements/uncontrolled/textarea/Textarea.js";import"../../../formElements/uncontrolled/uploader/UploaderBase.js";import"../../../formElements/uncontrolled/inputCurrency/InputCurrency.js";import"../../../../../../src/configs/api.js";import"../../../formElements/controlled/editor/ui/Editor.js";import"../../../formElements/controlled/input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";const io=({row:l,getValue:u,update:f,target:c,rowIndex:d=-1,attachment:r})=>{const[i,g]=C(u()),t=s(!1),m=s(null),{original:a}=l,w=o=>{g(o.target.value),t.current=!0},e=()=>{if(t.current){const o={...a,[c]:i};f(d,o),t.current=!1}};return y(m,e),x("div",{className:"flex items-center justify-between pr-1",children:[p("input",{ref:m,className:"mr-2 w-full outline-none",type:"text",value:i,onChange:w,onBlur:e,onKeyDown:o=>{o.key==="Enter"&&(o.preventDefault(),e())}}),r&&p(N,{intent:"ghost",onClick:o=>{var n;return(n=r==null?void 0:r.handler)==null?void 0:n.call(r,i,o)},className:"mr-1 h-6 w-6 p-0",children:p(j,{name:r.icon,className:"size-4"})})]})};export{io as EditableCell};
|
|
2
2
|
//# sourceMappingURL=EditableCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableCell.js","sources":["../../../../../../../lib/shared/ui/table/ui/editableCell/EditableCell.tsx"],"sourcesContent":["import { useRef, useState } from 'react'\nimport { type CellContext } from '@tanstack/react-table'\nimport { useClickOutside } from '$/shared/hooks'\n\ntype Cell<TData, TValue> = CellContext<TData, TValue> & { rowIndex?: number }\n\ninterface EditableCellProps<TData, TValue> extends Cell<TData, TValue> {\n target: keyof TData\n update: (target: number, values: TData) => void\n}\n\nexport const EditableCell = <TData, TValue extends string | undefined>({\n row,\n getValue,\n update,\n target,\n rowIndex = -1\n}: EditableCellProps<TData, TValue>) => {\n const [
|
|
1
|
+
{"version":3,"file":"EditableCell.js","sources":["../../../../../../../lib/shared/ui/table/ui/editableCell/EditableCell.tsx"],"sourcesContent":["import { useRef, useState } from 'react'\nimport { type CellContext } from '@tanstack/react-table'\nimport { useClickOutside } from '$/shared/hooks'\nimport { type AllowedIcons, Button, Icon } from '$/shared/ui'\n\ntype Cell<TData, TValue> = CellContext<TData, TValue> & { rowIndex?: number }\n\ninterface EditableCellProps<TData, TValue> extends Cell<TData, TValue> {\n target: keyof TData\n update: (target: number, values: TData) => void\n attachment?: {\n icon: AllowedIcons\n handler?: (value: TValue | string, event: React.MouseEvent<HTMLButtonElement>) => void\n }\n}\n\nexport const EditableCell = <TData, TValue extends string | undefined>({\n row,\n getValue,\n update,\n target,\n rowIndex = -1,\n attachment\n}: EditableCellProps<TData, TValue>) => {\n const [value, setValue] = useState<TValue | string>(getValue())\n const changed = useRef<boolean>(false)\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const { original } = row\n\n const onValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setValue(event.target.value)\n\n changed.current = true\n }\n\n const onInputBlur = () => {\n if (changed.current) {\n const updatedRow = { ...original, [target]: value }\n update(rowIndex, updatedRow)\n\n changed.current = false\n }\n }\n\n useClickOutside(inputRef, onInputBlur)\n\n return (\n <div className='flex items-center justify-between pr-1'>\n <input\n ref={inputRef}\n className='mr-2 w-full outline-none'\n type='text'\n value={value}\n onChange={onValueChange}\n onBlur={onInputBlur}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n\n onInputBlur()\n }\n }}\n />\n {attachment && (\n <Button intent='ghost' onClick={(event) => attachment?.handler?.(value, event)} className='mr-1 h-6 w-6 p-0'>\n <Icon name={attachment.icon} className='size-4' />\n </Button>\n )}\n </div>\n )\n}\n"],"names":["EditableCell","row","getValue","update","target","rowIndex","attachment","value","setValue","useState","changed","useRef","inputRef","original","onValueChange","event","onInputBlur","updatedRow","useClickOutside","jsxs","jsx","Button","_a","Icon"],"mappings":"01DAgBO,MAAMA,GAAe,CAA2C,CACrE,IAAAC,EACA,SAAAC,EACA,OAAAC,EACA,OAAAC,EACA,SAAAC,EAAW,GACX,WAAAC,CACF,IAAwC,CACtC,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAA0BP,GAAU,EACxDQ,EAAUC,EAAgB,EAAK,EAE/BC,EAAWD,EAAyB,IAAI,EAExC,CAAE,SAAAE,GAAaZ,EAEfa,EAAiBC,GAA+C,CACpEP,EAASO,EAAM,OAAO,KAAK,EAE3BL,EAAQ,QAAU,EACpB,EAEMM,EAAc,IAAM,CACxB,GAAIN,EAAQ,QAAS,CACnB,MAAMO,EAAa,CAAE,GAAGJ,EAAU,CAACT,CAAM,EAAGG,CAAA,EAC5CJ,EAAOE,EAAUY,CAAU,EAE3BP,EAAQ,QAAU,EACpB,CACF,EAEA,OAAAQ,EAAgBN,EAAUI,CAAW,EAGnCG,EAAC,MAAA,CAAI,UAAU,yCACb,SAAA,CAAAC,EAAC,QAAA,CACC,IAAKR,EACL,UAAU,2BACV,KAAK,OACL,MAAAL,EACA,SAAUO,EACV,OAAQE,EACR,UAAYD,GAAU,CAChBA,EAAM,MAAQ,UAChBA,EAAM,eAAA,EAENC,EAAA,EAEJ,CAAA,CAAA,EAEDV,KACEe,EAAA,CAAO,OAAO,QAAQ,QAAUN,GAAA,OAAU,OAAAO,EAAAhB,GAAA,YAAAA,EAAY,UAAZ,YAAAgB,EAAA,KAAAhB,EAAsBC,EAAOQ,IAAQ,UAAU,mBACxF,SAAAK,EAACG,EAAA,CAAK,KAAMjB,EAAW,KAAM,UAAU,QAAA,CAAS,CAAA,CAClD,CAAA,EAEJ,CAEJ"}
|