@sanity/table 3.1.2 → 3.1.4
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/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/index.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { set, unset, definePlugin, defineType } from "sanity";
|
|
2
2
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
|
-
import {
|
|
4
|
+
import { AddIcon } from "@sanity/icons/Add";
|
|
5
5
|
import { TextInput, Box, Button, Dialog, Card, Inline, MenuItem, MenuDivider, Menu, MenuButton, Text, Flex, Label, Grid } from "@sanity/ui";
|
|
6
6
|
import { uuid } from "@sanity/uuid";
|
|
7
7
|
import { useState } from "react";
|
|
8
|
+
import { RemoveIcon } from "@sanity/icons/Remove";
|
|
9
|
+
import { ControlsIcon } from "@sanity/icons/Controls";
|
|
10
|
+
import { WarningOutlineIcon } from "@sanity/icons/WarningOutline";
|
|
8
11
|
const TableInput = (props) => {
|
|
9
12
|
const $ = c(20), {
|
|
10
13
|
rows,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/TableInput.tsx","../src/components/TableMenu.tsx","../src/components/TableComponent.tsx","../src/components/TableIcon.tsx","../src/components/TablePreview.tsx","../src/index.ts"],"sourcesContent":["import {RemoveIcon} from '@sanity/icons'\nimport {Box, Button, TextInput} from '@sanity/ui'\nimport type {ChangeEvent} from 'react'\n\nimport type {TableRow} from './TableComponent'\n\ninterface TableInputProps {\n rows: TableRow[]\n updateCell: (e: ChangeEvent<HTMLInputElement>, rowIndex: number, cellIndex: number) => void\n removeRow: (index: number) => void\n removeColumn: (index: number) => void\n}\n\nexport const TableInput = (props: TableInputProps) => {\n const {rows, updateCell, removeRow, removeColumn} = props\n\n return (\n <table style={{width: '100%'}}>\n <tbody>\n {rows.map((row, rowIndex) => (\n <tr key={row._key}>\n {row.cells.map((cell, cellIndex) => (\n // Cells are plain strings; the cell position is the only stable identity\n // eslint-disable-next-line react/no-array-index-key\n <td key={`${row._key}-${cellIndex}`}>\n <TextInput\n fontSize={1}\n padding={3}\n value={cell}\n onChange={(e) => updateCell(e, rowIndex, cellIndex)}\n />\n </td>\n ))}\n <td key={`${row._key}-remove`}>\n <Box marginLeft={1} style={{textAlign: 'center'}}>\n <Button\n icon={RemoveIcon}\n padding={2}\n onClick={() => removeRow(rowIndex)}\n mode=\"bleed\"\n />\n </Box>\n </td>\n </tr>\n ))}\n <tr>\n {(rows[0]?.cells || []).map((_, i) => (\n // Cells are plain strings; the column position is the only stable identity\n // eslint-disable-next-line react/no-array-index-key\n <td key={i}>\n <Box marginTop={1} style={{textAlign: 'center'}}>\n <Button\n icon={RemoveIcon}\n padding={2}\n onClick={() => removeColumn(i)}\n mode=\"bleed\"\n />\n </Box>\n </td>\n ))}\n </tr>\n </tbody>\n </table>\n )\n}\n","import {AddIcon, ControlsIcon, WarningOutlineIcon} from '@sanity/icons'\nimport {\n Box,\n Button,\n Card,\n Dialog,\n Inline,\n Menu,\n MenuButton,\n MenuDivider,\n MenuItem,\n type Placement,\n TextInput,\n} from '@sanity/ui'\nimport {type ChangeEventHandler, useState} from 'react'\n\ninterface TableMenuProps {\n id: string\n addColumns: (count: number) => void\n addColumnAt: (index: number) => void\n addRows: (count: number) => void\n addRowAt: (index: number) => void\n remove: () => void\n placement: Placement\n}\n\nexport const TableMenu = (props: TableMenuProps): React.JSX.Element => {\n const {id, remove: handleRemove} = props\n const [dialog, setDialog] = useState<{\n type: string\n callback: (count: number) => void\n } | null>(null)\n\n // Keep `count` always a string so the TextInput is controlled for the component lifetime.\n const [count, setCount] = useState<string>('')\n\n const updateCount: ChangeEventHandler<HTMLInputElement> = (e) => {\n setCount(e.currentTarget.value)\n }\n\n const addRows = () => {\n setDialog({type: 'rows', callback: (c) => props.addRows(c)})\n setCount('') // ensure input starts controlled when dialog opens\n }\n\n const addRowAt = () => {\n setDialog({type: 'rows', callback: (index) => props.addRowAt(index)})\n setCount('')\n }\n\n const addColumns = () => {\n setDialog({\n type: 'columns',\n callback: (c) => props.addColumns(c),\n })\n setCount('')\n }\n\n const addColumnsAt = () => {\n setDialog({type: 'columns', callback: (index) => props.addColumnAt(index)})\n setCount('')\n }\n\n // The dialog is reused for \"add N rows/columns\" (a count) and \"add at index\"\n // (a position where 0 is valid), so allow 0 but reject NaN/negative/too-large.\n const parsedCount = Number.parseInt(count, 10)\n const isValidCount = Number.isInteger(parsedCount) && parsedCount >= 0 && parsedCount < 100\n\n const onConfirm = () => {\n if (!isValidCount) {\n return\n }\n setDialog(null)\n dialog?.callback(parsedCount)\n setCount('')\n }\n\n return (\n <>\n {dialog && (\n <Dialog\n header={`Add ${dialog.type}`}\n id={`${id}-dialog-add`}\n onClose={() => {\n setDialog(null)\n setCount('')\n }}\n zOffset={1000}\n >\n <Card padding={4}>\n <TextInput\n style={{textAlign: 'left'}}\n fontSize={2}\n padding={3}\n type=\"number\"\n value={count}\n onChange={updateCount}\n customValidity={\n count !== '' && !isValidCount ? 'Enter a whole number from 0 to 99' : undefined\n }\n />\n <Box marginTop={4}>\n <Inline gap={1} style={{textAlign: 'right'}}>\n <Button\n text=\"Cancel\"\n mode=\"ghost\"\n onClick={() => {\n setDialog(null)\n setCount('')\n }}\n />\n <Button\n text=\"Confirm\"\n tone=\"critical\"\n onClick={onConfirm}\n disabled={!isValidCount}\n />\n </Inline>\n </Box>\n </Card>\n </Dialog>\n )}\n <MenuButton\n button={<Button icon={ControlsIcon} fontSize={1} padding={2} mode=\"ghost\" />}\n id={`${id}-menu-button`}\n menu={\n <Menu>\n <MenuItem icon={AddIcon} fontSize={1} text=\"Add Row(s)\" onClick={addRows} />\n <MenuItem icon={AddIcon} fontSize={1} text=\"Add Row At Index\" onClick={addRowAt} />\n <MenuItem icon={AddIcon} fontSize={1} text=\"Add Column(s)\" onClick={addColumns} />\n <MenuItem\n icon={AddIcon}\n fontSize={1}\n text=\"Add Column At Index\"\n onClick={addColumnsAt}\n />\n <MenuDivider />\n <MenuItem\n icon={WarningOutlineIcon}\n fontSize={1}\n text=\"Remove\"\n tone=\"critical\"\n onClick={handleRemove}\n />\n </Menu>\n }\n popover={{placement: props.placement}}\n />\n </>\n )\n}\n","import {AddIcon} from '@sanity/icons'\nimport {Box, Button, Card, Dialog, Flex, Inline, Text} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {type ChangeEvent, useState} from 'react'\nimport {type ObjectInputProps, set, unset} from 'sanity'\n\nimport {TableInput} from './TableInput'\nimport {TableMenu} from './TableMenu'\n\nconst deepClone: <T>(data: T) => T =\n globalThis.structuredClone ?? ((data) => JSON.parse(JSON.stringify(data)))\n\nexport interface TableValue {\n _type?: 'table'\n rows?: TableRow[]\n}\n\nexport type TableProps = ObjectInputProps<TableValue>\n\nexport type TableRow = {\n _type: string\n _key: string\n cells: string[]\n}\n\n// TODO refactor deepClone stuff to use proper patches\n// TODO use callback all the things\n\nexport const TableComponent = (props: TableProps & {rowType?: string}) => {\n const {id, rowType = 'tableRow', value, onChange} = props\n const [dialog, setDialog] = useState<{\n type: string\n callback: () => void\n } | null>(null)\n\n const updateValue = (v?: Omit<TableValue, '_type'>) => {\n return onChange(set(v))\n }\n\n const resetValue = () => {\n return onChange(unset())\n }\n\n const createTable = () => {\n const newValue: Omit<TableValue, '_type'> = {\n rows: [\n {\n _type: rowType,\n _key: uuid(),\n cells: ['', ''],\n },\n {\n _type: rowType,\n _key: uuid(),\n cells: ['', ''],\n },\n ],\n }\n return updateValue({...value, ...newValue})\n }\n\n const confirmRemoveTable = () => {\n setDialog({type: 'table', callback: removeTable})\n }\n\n const removeTable = () => {\n resetValue()\n setDialog(null)\n }\n\n const addRows = (count = 1) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n // Calculate the column count from the first row\n const columnCount = value.rows[0]?.cells.length ?? 0\n for (let i = 0; i < count; i++) {\n // Add as many cells as we have columns\n newRows.push({\n _type: rowType,\n _key: uuid(),\n cells: Array(columnCount).fill(''),\n })\n }\n return updateValue({...value, rows: newRows})\n }\n\n const addRowAt = (index = 0) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n // Calculate the column count from the first row\n const columnCount = value.rows[0]?.cells.length ?? 0\n\n newRows.splice(index, 0, {\n _type: rowType,\n _key: uuid(),\n cells: Array(columnCount).fill(''),\n })\n\n return updateValue({...value, rows: newRows})\n }\n\n const removeRow = (index: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n newRows.splice(index, 1)\n updateValue({...value, rows: newRows})\n setDialog(null)\n }\n\n const confirmRemoveRow = (index: number) => {\n if (!value?.rows) {\n return\n }\n if (value.rows.length <= 1) return confirmRemoveTable()\n return setDialog({type: 'row', callback: () => removeRow(index)})\n }\n\n const confirmRemoveColumn = (index: number) => {\n if (!value?.rows) {\n return\n }\n if ((value.rows[0]?.cells.length ?? 0) <= 1) return confirmRemoveTable()\n return setDialog({type: 'column', callback: () => removeColumn(index)})\n }\n\n const addColumns = (count: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n // Add a cell to each of the rows\n newRows.forEach((row) => {\n for (let j = 0; j < count; j++) {\n row.cells.push('')\n }\n })\n return updateValue({...value, rows: newRows})\n }\n\n const addColumnAt = (index: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n\n newRows.forEach((row) => {\n row.cells.splice(index, 0, '')\n })\n\n return updateValue({...value, rows: newRows})\n }\n\n const removeColumn = (index: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n newRows.forEach((row) => {\n row.cells.splice(index, 1)\n })\n updateValue({...value, rows: newRows})\n setDialog(null)\n }\n\n const updateCell = (e: ChangeEvent<HTMLInputElement>, rowIndex: number, cellIndex: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n const row = newRows[rowIndex]\n if (!row) {\n return\n }\n row.cells[cellIndex] = e.currentTarget.value\n return updateValue({...value, rows: newRows})\n }\n\n return (\n <div>\n {dialog && (\n <Dialog\n header={`Remove ${dialog.type}`}\n id={`${id}-dialog-remove`}\n onClose={() => setDialog(null)}\n zOffset={1000}\n >\n <Card padding={4}>\n <Text>Are you sure you want to remove this {dialog.type}?</Text>\n <Box marginTop={4}>\n <Inline gap={1} style={{textAlign: 'right'}}>\n <Button text=\"Cancel\" mode=\"ghost\" onClick={() => setDialog(null)} />\n <Button text=\"Confirm\" tone=\"critical\" onClick={() => dialog.callback()} />\n </Inline>\n </Box>\n </Card>\n </Dialog>\n )}\n <Box>\n <Flex justify=\"flex-end\">\n {value?.rows?.length ? (\n <Inline gap={1}>\n <Button\n fontSize={1}\n padding={2}\n icon={AddIcon}\n text=\"Add row\"\n mode=\"ghost\"\n onClick={() => addRows(1)}\n />\n <Button\n fontSize={1}\n padding={2}\n icon={AddIcon}\n text=\"Add column\"\n mode=\"ghost\"\n onClick={() => addColumns(1)}\n />\n <TableMenu\n id={id}\n addColumns={addColumns}\n addColumnAt={addColumnAt}\n addRows={addRows}\n addRowAt={addRowAt}\n remove={confirmRemoveTable}\n placement=\"left\"\n />\n </Inline>\n ) : null}\n </Flex>\n </Box>\n {value?.rows?.length ? (\n <TableInput\n rows={value.rows}\n removeRow={confirmRemoveRow}\n removeColumn={confirmRemoveColumn}\n updateCell={updateCell}\n />\n ) : null}\n {!value || !value?.rows?.length ? (\n <Inline gap={1}>\n <Button\n fontSize={1}\n padding={3}\n icon={AddIcon}\n text=\"Create Table\"\n tone=\"primary\"\n mode=\"ghost\"\n onClick={createTable}\n />\n </Inline>\n ) : null}\n </div>\n )\n}\n\nexport function createTableComponent(rowType: string) {\n return function Table(props: TableProps) {\n return <TableComponent {...props} rowType={rowType} />\n }\n}\n","export function TableIcon() {\n return (\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n >\n <path d=\"M3 3h18v18H3zM21 9H3M21 15H3M12 3v18\" />\n </svg>\n )\n}\n","import {Box, Card, Grid, Inline, Label, Text} from '@sanity/ui'\nimport type {PreviewProps} from 'sanity'\n\nimport type {TableRow} from './TableComponent'\nimport {TableIcon} from './TableIcon'\n\ninterface TablePreviewProps extends PreviewProps {\n rows?: TableRow[]\n}\n\nconst Table = ({rows}: {rows: TableRow[]}) => {\n const numCols = rows[0]?.cells.length ?? 0\n\n return (\n <Grid gridTemplateColumns={numCols} padding={2}>\n {rows.map((row) =>\n row.cells.map((cell, i) => (\n // Cells are plain strings; the cell position is the only stable identity\n // eslint-disable-next-line react/no-array-index-key\n <Card key={row._key + i} padding={2} style={{outline: '1px solid #DFE2E9'}}>\n <Text textOverflow=\"ellipsis\">{cell}</Text>\n </Card>\n )),\n )}\n </Grid>\n )\n}\n\nexport const TablePreview = (props: TablePreviewProps) => {\n const {schemaType, rows = [], title} = props\n const previewTitle = schemaType?.title ?? (typeof title === 'string' ? title : 'Title missing')\n\n return (\n <>\n <Box padding={3}>\n <Inline gap={3}>\n <Card>\n <Label size={4}>\n <TableIcon />\n </Label>\n </Card>\n <Card>\n <Text>{previewTitle}</Text>\n </Card>\n </Inline>\n </Box>\n <Box padding={2}>\n {rows.length === 0 ? <Label muted>Empty Table</Label> : <Table rows={rows} />}\n </Box>\n </>\n )\n}\n","import {definePlugin, defineType} from 'sanity'\n\nimport {createTableComponent, TableComponent} from './components/TableComponent'\nimport {TablePreview} from './components/TablePreview'\nexport type {TableProps, TableRow, TableValue} from './components/TableComponent'\n\nexport {TableComponent, TablePreview}\n\nexport interface TableConfig {\n rowType?: string\n}\n\nexport const table = definePlugin<TableConfig | void>((config) => {\n const tableRowSchema = defineType({\n title: 'Table Row',\n name: config?.rowType || 'tableRow',\n type: 'object',\n fields: [\n {\n name: 'cells',\n type: 'array',\n of: [{type: 'string'}],\n },\n ],\n })\n\n const tableSchema = defineType({\n title: 'Table',\n name: 'table',\n type: 'object',\n fields: [\n {\n name: 'rows',\n type: 'array',\n of: [\n {\n type: tableRowSchema.name,\n },\n ],\n },\n ],\n components: {\n input: createTableComponent(tableRowSchema.name),\n preview: TablePreview,\n },\n preview: {\n select: {\n rows: 'rows',\n title: 'title',\n },\n prepare: ({title, rows = []}) => ({\n title,\n rows,\n }),\n },\n })\n\n return {\n name: 'table',\n schema: {\n types: [tableRowSchema, tableSchema],\n },\n }\n})\n"],"names":["TableInput","props","$","_c","rows","updateCell","removeRow","removeColumn","t0","for","width","t1","t2","row","rowIndex","cells","map","cell","cellIndex","e","_key","textAlign","RemoveIcon","t3","t4","_","i","t5","TableMenu","id","remove","handleRemove","dialog","setDialog","useState","count","setCount","Symbol","currentTarget","value","updateCount","type","callback","c","addRows","index","addRowAt","c_0","addColumns","index_0","addColumnAt","addColumnsAt","parsedCount","Number","parseInt","isInteger","isValidCount","t6","onConfirm","t7","undefined","t8","ControlsIcon","t9","t10","AddIcon","t11","t12","t13","t14","t15","WarningOutlineIcon","t16","t17","placement","t18","t19","deepClone","globalThis","structuredClone","data","JSON","parse","stringify","TableComponent","rowType","onChange","v","set","updateValue","unset","resetValue","newValue","_type","uuid","createTable","confirmRemoveTable","removeTable","newRows","columnCount","length","push","Array","fill","newRows_0","columnCount_0","splice","newRows_1","index_1","confirmRemoveRow","confirmRemoveColumn","index_2","count_0","newRows_2","forEach","j","index_3","newRows_3","row_0","index_4","newRows_4","row_1","newRows_5","row_2","createTableComponent","TableIcon","Table","numCols","_temp","TablePreview","schemaType","title","previewTitle","outline","table","definePlugin","config","tableRowSchema","defineType","name","fields","of","tableSchema","components","input","preview","select","prepare","schema","types"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/TableInput.tsx","../src/components/TableMenu.tsx","../src/components/TableComponent.tsx","../src/components/TableIcon.tsx","../src/components/TablePreview.tsx","../src/index.ts"],"sourcesContent":["import {RemoveIcon} from '@sanity/icons/Remove'\nimport {Box, Button, TextInput} from '@sanity/ui'\nimport type {ChangeEvent} from 'react'\n\nimport type {TableRow} from './TableComponent'\n\ninterface TableInputProps {\n rows: TableRow[]\n updateCell: (e: ChangeEvent<HTMLInputElement>, rowIndex: number, cellIndex: number) => void\n removeRow: (index: number) => void\n removeColumn: (index: number) => void\n}\n\nexport const TableInput = (props: TableInputProps) => {\n const {rows, updateCell, removeRow, removeColumn} = props\n\n return (\n <table style={{width: '100%'}}>\n <tbody>\n {rows.map((row, rowIndex) => (\n <tr key={row._key}>\n {row.cells.map((cell, cellIndex) => (\n // Cells are plain strings; the cell position is the only stable identity\n // eslint-disable-next-line react/no-array-index-key\n <td key={`${row._key}-${cellIndex}`}>\n <TextInput\n fontSize={1}\n padding={3}\n value={cell}\n onChange={(e) => updateCell(e, rowIndex, cellIndex)}\n />\n </td>\n ))}\n <td key={`${row._key}-remove`}>\n <Box marginLeft={1} style={{textAlign: 'center'}}>\n <Button\n icon={RemoveIcon}\n padding={2}\n onClick={() => removeRow(rowIndex)}\n mode=\"bleed\"\n />\n </Box>\n </td>\n </tr>\n ))}\n <tr>\n {(rows[0]?.cells || []).map((_, i) => (\n // Cells are plain strings; the column position is the only stable identity\n // eslint-disable-next-line react/no-array-index-key\n <td key={i}>\n <Box marginTop={1} style={{textAlign: 'center'}}>\n <Button\n icon={RemoveIcon}\n padding={2}\n onClick={() => removeColumn(i)}\n mode=\"bleed\"\n />\n </Box>\n </td>\n ))}\n </tr>\n </tbody>\n </table>\n )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {ControlsIcon} from '@sanity/icons/Controls'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {\n Box,\n Button,\n Card,\n Dialog,\n Inline,\n Menu,\n MenuButton,\n MenuDivider,\n MenuItem,\n type Placement,\n TextInput,\n} from '@sanity/ui'\nimport {type ChangeEventHandler, useState} from 'react'\n\ninterface TableMenuProps {\n id: string\n addColumns: (count: number) => void\n addColumnAt: (index: number) => void\n addRows: (count: number) => void\n addRowAt: (index: number) => void\n remove: () => void\n placement: Placement\n}\n\nexport const TableMenu = (props: TableMenuProps): React.JSX.Element => {\n const {id, remove: handleRemove} = props\n const [dialog, setDialog] = useState<{\n type: string\n callback: (count: number) => void\n } | null>(null)\n\n // Keep `count` always a string so the TextInput is controlled for the component lifetime.\n const [count, setCount] = useState<string>('')\n\n const updateCount: ChangeEventHandler<HTMLInputElement> = (e) => {\n setCount(e.currentTarget.value)\n }\n\n const addRows = () => {\n setDialog({type: 'rows', callback: (c) => props.addRows(c)})\n setCount('') // ensure input starts controlled when dialog opens\n }\n\n const addRowAt = () => {\n setDialog({type: 'rows', callback: (index) => props.addRowAt(index)})\n setCount('')\n }\n\n const addColumns = () => {\n setDialog({\n type: 'columns',\n callback: (c) => props.addColumns(c),\n })\n setCount('')\n }\n\n const addColumnsAt = () => {\n setDialog({type: 'columns', callback: (index) => props.addColumnAt(index)})\n setCount('')\n }\n\n // The dialog is reused for \"add N rows/columns\" (a count) and \"add at index\"\n // (a position where 0 is valid), so allow 0 but reject NaN/negative/too-large.\n const parsedCount = Number.parseInt(count, 10)\n const isValidCount = Number.isInteger(parsedCount) && parsedCount >= 0 && parsedCount < 100\n\n const onConfirm = () => {\n if (!isValidCount) {\n return\n }\n setDialog(null)\n dialog?.callback(parsedCount)\n setCount('')\n }\n\n return (\n <>\n {dialog && (\n <Dialog\n header={`Add ${dialog.type}`}\n id={`${id}-dialog-add`}\n onClose={() => {\n setDialog(null)\n setCount('')\n }}\n zOffset={1000}\n >\n <Card padding={4}>\n <TextInput\n style={{textAlign: 'left'}}\n fontSize={2}\n padding={3}\n type=\"number\"\n value={count}\n onChange={updateCount}\n customValidity={\n count !== '' && !isValidCount ? 'Enter a whole number from 0 to 99' : undefined\n }\n />\n <Box marginTop={4}>\n <Inline gap={1} style={{textAlign: 'right'}}>\n <Button\n text=\"Cancel\"\n mode=\"ghost\"\n onClick={() => {\n setDialog(null)\n setCount('')\n }}\n />\n <Button\n text=\"Confirm\"\n tone=\"critical\"\n onClick={onConfirm}\n disabled={!isValidCount}\n />\n </Inline>\n </Box>\n </Card>\n </Dialog>\n )}\n <MenuButton\n button={<Button icon={ControlsIcon} fontSize={1} padding={2} mode=\"ghost\" />}\n id={`${id}-menu-button`}\n menu={\n <Menu>\n <MenuItem icon={AddIcon} fontSize={1} text=\"Add Row(s)\" onClick={addRows} />\n <MenuItem icon={AddIcon} fontSize={1} text=\"Add Row At Index\" onClick={addRowAt} />\n <MenuItem icon={AddIcon} fontSize={1} text=\"Add Column(s)\" onClick={addColumns} />\n <MenuItem\n icon={AddIcon}\n fontSize={1}\n text=\"Add Column At Index\"\n onClick={addColumnsAt}\n />\n <MenuDivider />\n <MenuItem\n icon={WarningOutlineIcon}\n fontSize={1}\n text=\"Remove\"\n tone=\"critical\"\n onClick={handleRemove}\n />\n </Menu>\n }\n popover={{placement: props.placement}}\n />\n </>\n )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Box, Button, Card, Dialog, Flex, Inline, Text} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {type ChangeEvent, useState} from 'react'\nimport {type ObjectInputProps, set, unset} from 'sanity'\n\nimport {TableInput} from './TableInput'\nimport {TableMenu} from './TableMenu'\n\nconst deepClone: <T>(data: T) => T =\n globalThis.structuredClone ?? ((data) => JSON.parse(JSON.stringify(data)))\n\nexport interface TableValue {\n _type?: 'table'\n rows?: TableRow[]\n}\n\nexport type TableProps = ObjectInputProps<TableValue>\n\nexport type TableRow = {\n _type: string\n _key: string\n cells: string[]\n}\n\n// TODO refactor deepClone stuff to use proper patches\n// TODO use callback all the things\n\nexport const TableComponent = (props: TableProps & {rowType?: string}) => {\n const {id, rowType = 'tableRow', value, onChange} = props\n const [dialog, setDialog] = useState<{\n type: string\n callback: () => void\n } | null>(null)\n\n const updateValue = (v?: Omit<TableValue, '_type'>) => {\n return onChange(set(v))\n }\n\n const resetValue = () => {\n return onChange(unset())\n }\n\n const createTable = () => {\n const newValue: Omit<TableValue, '_type'> = {\n rows: [\n {\n _type: rowType,\n _key: uuid(),\n cells: ['', ''],\n },\n {\n _type: rowType,\n _key: uuid(),\n cells: ['', ''],\n },\n ],\n }\n return updateValue({...value, ...newValue})\n }\n\n const confirmRemoveTable = () => {\n setDialog({type: 'table', callback: removeTable})\n }\n\n const removeTable = () => {\n resetValue()\n setDialog(null)\n }\n\n const addRows = (count = 1) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n // Calculate the column count from the first row\n const columnCount = value.rows[0]?.cells.length ?? 0\n for (let i = 0; i < count; i++) {\n // Add as many cells as we have columns\n newRows.push({\n _type: rowType,\n _key: uuid(),\n cells: Array(columnCount).fill(''),\n })\n }\n return updateValue({...value, rows: newRows})\n }\n\n const addRowAt = (index = 0) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n // Calculate the column count from the first row\n const columnCount = value.rows[0]?.cells.length ?? 0\n\n newRows.splice(index, 0, {\n _type: rowType,\n _key: uuid(),\n cells: Array(columnCount).fill(''),\n })\n\n return updateValue({...value, rows: newRows})\n }\n\n const removeRow = (index: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n newRows.splice(index, 1)\n updateValue({...value, rows: newRows})\n setDialog(null)\n }\n\n const confirmRemoveRow = (index: number) => {\n if (!value?.rows) {\n return\n }\n if (value.rows.length <= 1) return confirmRemoveTable()\n return setDialog({type: 'row', callback: () => removeRow(index)})\n }\n\n const confirmRemoveColumn = (index: number) => {\n if (!value?.rows) {\n return\n }\n if ((value.rows[0]?.cells.length ?? 0) <= 1) return confirmRemoveTable()\n return setDialog({type: 'column', callback: () => removeColumn(index)})\n }\n\n const addColumns = (count: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n // Add a cell to each of the rows\n newRows.forEach((row) => {\n for (let j = 0; j < count; j++) {\n row.cells.push('')\n }\n })\n return updateValue({...value, rows: newRows})\n }\n\n const addColumnAt = (index: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n\n newRows.forEach((row) => {\n row.cells.splice(index, 0, '')\n })\n\n return updateValue({...value, rows: newRows})\n }\n\n const removeColumn = (index: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n newRows.forEach((row) => {\n row.cells.splice(index, 1)\n })\n updateValue({...value, rows: newRows})\n setDialog(null)\n }\n\n const updateCell = (e: ChangeEvent<HTMLInputElement>, rowIndex: number, cellIndex: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n const row = newRows[rowIndex]\n if (!row) {\n return\n }\n row.cells[cellIndex] = e.currentTarget.value\n return updateValue({...value, rows: newRows})\n }\n\n return (\n <div>\n {dialog && (\n <Dialog\n header={`Remove ${dialog.type}`}\n id={`${id}-dialog-remove`}\n onClose={() => setDialog(null)}\n zOffset={1000}\n >\n <Card padding={4}>\n <Text>Are you sure you want to remove this {dialog.type}?</Text>\n <Box marginTop={4}>\n <Inline gap={1} style={{textAlign: 'right'}}>\n <Button text=\"Cancel\" mode=\"ghost\" onClick={() => setDialog(null)} />\n <Button text=\"Confirm\" tone=\"critical\" onClick={() => dialog.callback()} />\n </Inline>\n </Box>\n </Card>\n </Dialog>\n )}\n <Box>\n <Flex justify=\"flex-end\">\n {value?.rows?.length ? (\n <Inline gap={1}>\n <Button\n fontSize={1}\n padding={2}\n icon={AddIcon}\n text=\"Add row\"\n mode=\"ghost\"\n onClick={() => addRows(1)}\n />\n <Button\n fontSize={1}\n padding={2}\n icon={AddIcon}\n text=\"Add column\"\n mode=\"ghost\"\n onClick={() => addColumns(1)}\n />\n <TableMenu\n id={id}\n addColumns={addColumns}\n addColumnAt={addColumnAt}\n addRows={addRows}\n addRowAt={addRowAt}\n remove={confirmRemoveTable}\n placement=\"left\"\n />\n </Inline>\n ) : null}\n </Flex>\n </Box>\n {value?.rows?.length ? (\n <TableInput\n rows={value.rows}\n removeRow={confirmRemoveRow}\n removeColumn={confirmRemoveColumn}\n updateCell={updateCell}\n />\n ) : null}\n {!value || !value?.rows?.length ? (\n <Inline gap={1}>\n <Button\n fontSize={1}\n padding={3}\n icon={AddIcon}\n text=\"Create Table\"\n tone=\"primary\"\n mode=\"ghost\"\n onClick={createTable}\n />\n </Inline>\n ) : null}\n </div>\n )\n}\n\nexport function createTableComponent(rowType: string) {\n return function Table(props: TableProps) {\n return <TableComponent {...props} rowType={rowType} />\n }\n}\n","export function TableIcon() {\n return (\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n >\n <path d=\"M3 3h18v18H3zM21 9H3M21 15H3M12 3v18\" />\n </svg>\n )\n}\n","import {Box, Card, Grid, Inline, Label, Text} from '@sanity/ui'\nimport type {PreviewProps} from 'sanity'\n\nimport type {TableRow} from './TableComponent'\nimport {TableIcon} from './TableIcon'\n\ninterface TablePreviewProps extends PreviewProps {\n rows?: TableRow[]\n}\n\nconst Table = ({rows}: {rows: TableRow[]}) => {\n const numCols = rows[0]?.cells.length ?? 0\n\n return (\n <Grid gridTemplateColumns={numCols} padding={2}>\n {rows.map((row) =>\n row.cells.map((cell, i) => (\n // Cells are plain strings; the cell position is the only stable identity\n // eslint-disable-next-line react/no-array-index-key\n <Card key={row._key + i} padding={2} style={{outline: '1px solid #DFE2E9'}}>\n <Text textOverflow=\"ellipsis\">{cell}</Text>\n </Card>\n )),\n )}\n </Grid>\n )\n}\n\nexport const TablePreview = (props: TablePreviewProps) => {\n const {schemaType, rows = [], title} = props\n const previewTitle = schemaType?.title ?? (typeof title === 'string' ? title : 'Title missing')\n\n return (\n <>\n <Box padding={3}>\n <Inline gap={3}>\n <Card>\n <Label size={4}>\n <TableIcon />\n </Label>\n </Card>\n <Card>\n <Text>{previewTitle}</Text>\n </Card>\n </Inline>\n </Box>\n <Box padding={2}>\n {rows.length === 0 ? <Label muted>Empty Table</Label> : <Table rows={rows} />}\n </Box>\n </>\n )\n}\n","import {definePlugin, defineType} from 'sanity'\n\nimport {createTableComponent, TableComponent} from './components/TableComponent'\nimport {TablePreview} from './components/TablePreview'\nexport type {TableProps, TableRow, TableValue} from './components/TableComponent'\n\nexport {TableComponent, TablePreview}\n\nexport interface TableConfig {\n rowType?: string\n}\n\nexport const table = definePlugin<TableConfig | void>((config) => {\n const tableRowSchema = defineType({\n title: 'Table Row',\n name: config?.rowType || 'tableRow',\n type: 'object',\n fields: [\n {\n name: 'cells',\n type: 'array',\n of: [{type: 'string'}],\n },\n ],\n })\n\n const tableSchema = defineType({\n title: 'Table',\n name: 'table',\n type: 'object',\n fields: [\n {\n name: 'rows',\n type: 'array',\n of: [\n {\n type: tableRowSchema.name,\n },\n ],\n },\n ],\n components: {\n input: createTableComponent(tableRowSchema.name),\n preview: TablePreview,\n },\n preview: {\n select: {\n rows: 'rows',\n title: 'title',\n },\n prepare: ({title, rows = []}) => ({\n title,\n rows,\n }),\n },\n })\n\n return {\n name: 'table',\n schema: {\n types: [tableRowSchema, tableSchema],\n },\n }\n})\n"],"names":["TableInput","props","$","_c","rows","updateCell","removeRow","removeColumn","t0","for","width","t1","t2","row","rowIndex","cells","map","cell","cellIndex","e","_key","textAlign","RemoveIcon","t3","t4","_","i","t5","TableMenu","id","remove","handleRemove","dialog","setDialog","useState","count","setCount","Symbol","currentTarget","value","updateCount","type","callback","c","addRows","index","addRowAt","c_0","addColumns","index_0","addColumnAt","addColumnsAt","parsedCount","Number","parseInt","isInteger","isValidCount","t6","onConfirm","t7","undefined","t8","ControlsIcon","t9","t10","AddIcon","t11","t12","t13","t14","t15","WarningOutlineIcon","t16","t17","placement","t18","t19","deepClone","globalThis","structuredClone","data","JSON","parse","stringify","TableComponent","rowType","onChange","v","set","updateValue","unset","resetValue","newValue","_type","uuid","createTable","confirmRemoveTable","removeTable","newRows","columnCount","length","push","Array","fill","newRows_0","columnCount_0","splice","newRows_1","index_1","confirmRemoveRow","confirmRemoveColumn","index_2","count_0","newRows_2","forEach","j","index_3","newRows_3","row_0","index_4","newRows_4","row_1","newRows_5","row_2","createTableComponent","TableIcon","Table","numCols","_temp","TablePreview","schemaType","title","previewTitle","outline","table","definePlugin","config","tableRowSchema","defineType","name","fields","of","tableSchema","components","input","preview","select","prepare","schema","types"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanity/table",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.4",
|
|
4
4
|
"description": "Table schema type and input component for Sanity Studio",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sanity",
|
|
@@ -27,20 +27,20 @@
|
|
|
27
27
|
"./package.json": "./package.json"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@sanity/icons": "^
|
|
31
|
-
"@sanity/ui": "^3.
|
|
32
|
-
"@sanity/uuid": "^3.0.
|
|
30
|
+
"@sanity/icons": "^4.1.0",
|
|
31
|
+
"@sanity/ui": "^3.3.0",
|
|
32
|
+
"@sanity/uuid": "^3.0.3"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@sanity/pkg-utils": "^10.
|
|
35
|
+
"@sanity/pkg-utils": "^10.8.2",
|
|
36
36
|
"@types/node": "^24.13.2",
|
|
37
37
|
"@types/react": "^19.2.17",
|
|
38
38
|
"@types/react-dom": "^19.2.3",
|
|
39
39
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
40
40
|
"react": "^19.2.7",
|
|
41
41
|
"react-dom": "^19.2.7",
|
|
42
|
-
"sanity": "^6.
|
|
43
|
-
"styled-components": "^6.4.
|
|
42
|
+
"sanity": "^6.3.0",
|
|
43
|
+
"styled-components": "^6.4.3",
|
|
44
44
|
"@repo/package.config": "0.0.0",
|
|
45
45
|
"@repo/tsconfig": "0.0.0"
|
|
46
46
|
},
|