@panneau/lists 5.0.0-alpha.11 → 5.0.0-alpha.13

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.
Files changed (85) hide show
  1. package/README.md +13 -11
  2. package/dist/ItemDetails.css +16 -0
  3. package/dist/ItemDetails.d.ts +12 -3
  4. package/dist/ItemDetails.d.ts.map +1 -1
  5. package/dist/ItemDetails.js +89 -59
  6. package/dist/ItemDetails.js.map +1 -1
  7. package/dist/ItemDetails.module.js +6 -2
  8. package/dist/ItemDetails.module.js.map +1 -1
  9. package/dist/List.d.ts +1 -1
  10. package/dist/List.d.ts.map +1 -1
  11. package/dist/List.js +29 -50
  12. package/dist/List.js.map +1 -1
  13. package/dist/ListView.d.ts +34 -5
  14. package/dist/ListView.d.ts.map +1 -1
  15. package/dist/ListView.js +416 -359
  16. package/dist/ListView.js.map +1 -1
  17. package/dist/columns.d.ts +10 -0
  18. package/dist/columns.d.ts.map +1 -0
  19. package/dist/columns.js +25 -0
  20. package/dist/columns.js.map +1 -0
  21. package/dist/displays/Displays.css +12 -0
  22. package/dist/displays/Displays.module.js +6 -2
  23. package/dist/displays/Displays.module.js.map +1 -1
  24. package/dist/displays/displays.d.ts +11 -1
  25. package/dist/displays/displays.d.ts.map +1 -1
  26. package/dist/displays/displays.js +185 -22
  27. package/dist/displays/displays.js.map +1 -1
  28. package/dist/images.d.ts +6 -0
  29. package/dist/images.d.ts.map +1 -0
  30. package/dist/images.js +18 -0
  31. package/dist/images.js.map +1 -0
  32. package/dist/index.d.ts +6 -3
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +5 -2
  35. package/dist/inline/Inline.css +58 -0
  36. package/dist/inline/Inline.module.js +20 -0
  37. package/dist/inline/Inline.module.js.map +1 -0
  38. package/dist/inline/InlineCell.d.ts +27 -0
  39. package/dist/inline/InlineCell.d.ts.map +1 -0
  40. package/dist/inline/InlineCell.js +471 -0
  41. package/dist/inline/InlineCell.js.map +1 -0
  42. package/dist/inline/editable.d.ts +12 -0
  43. package/dist/inline/editable.d.ts.map +1 -0
  44. package/dist/inline/editable.js +29 -0
  45. package/dist/inline/editable.js.map +1 -0
  46. package/dist/layouts/CalendarLayout.css +153 -0
  47. package/dist/layouts/CalendarLayout.d.ts +9 -0
  48. package/dist/layouts/CalendarLayout.d.ts.map +1 -0
  49. package/dist/layouts/CalendarLayout.js +298 -0
  50. package/dist/layouts/CalendarLayout.js.map +1 -0
  51. package/dist/layouts/CalendarLayout.module.js +28 -0
  52. package/dist/layouts/CalendarLayout.module.js.map +1 -0
  53. package/dist/layouts/CardsLayout.js +1 -1
  54. package/dist/layouts/GalleryLayout.css +80 -0
  55. package/dist/layouts/GalleryLayout.d.ts +8 -0
  56. package/dist/layouts/GalleryLayout.d.ts.map +1 -0
  57. package/dist/layouts/GalleryLayout.js +129 -0
  58. package/dist/layouts/GalleryLayout.js.map +1 -0
  59. package/dist/layouts/GalleryLayout.module.js +26 -0
  60. package/dist/layouts/GalleryLayout.module.js.map +1 -0
  61. package/dist/layouts/TableLayout.d.ts +1 -1
  62. package/dist/layouts/TableLayout.d.ts.map +1 -1
  63. package/dist/layouts/TableLayout.js +44 -39
  64. package/dist/layouts/TableLayout.js.map +1 -1
  65. package/dist/layouts/builtIn.d.ts +1 -1
  66. package/dist/layouts/builtIn.d.ts.map +1 -1
  67. package/dist/layouts/builtIn.js +6 -2
  68. package/dist/layouts/builtIn.js.map +1 -1
  69. package/dist/toolbar/ColumnMenu.d.ts +17 -0
  70. package/dist/toolbar/ColumnMenu.d.ts.map +1 -0
  71. package/dist/toolbar/ColumnMenu.js +193 -0
  72. package/dist/toolbar/ColumnMenu.js.map +1 -0
  73. package/dist/toolbar/LayoutSwitch.d.ts.map +1 -1
  74. package/dist/toolbar/LayoutSwitch.js +73 -55
  75. package/dist/toolbar/LayoutSwitch.js.map +1 -1
  76. package/dist/toolbar/Toolbar.css +36 -0
  77. package/dist/toolbar/Toolbar.module.js +12 -2
  78. package/dist/toolbar/Toolbar.module.js.map +1 -1
  79. package/dist/types.d.ts +42 -0
  80. package/dist/types.d.ts.map +1 -1
  81. package/dist/values.d.ts +1 -0
  82. package/dist/values.d.ts.map +1 -1
  83. package/dist/values.js +1 -1
  84. package/dist/values.js.map +1 -1
  85. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"displays.js","names":["Check","Minus","toReferences","formatDuration","Badge","Icon","Tone","usePanneauIntl","messages","DisplayEntry","DisplayProps","findOption","getFieldOptions","toText","styles","EmptyValue","$","_c","t0","Symbol","for","empty","isEmpty","value","undefined","Array","isArray","length","TextDisplay","field","intl","t1","locale","text","t2","settings","secret","formatMessage","secretValue","t3","RichTextDisplay","replace","trim","NumberDisplay","number","Number","NaN","isNaN","formatNumber","BooleanDisplay","checked","boolean","true","false","yes","no","t4","t5","DATE_ONLY","TIME_ONLY","parseDate","Date","day","exec","date","getTime","DateDisplay","bb0","String","formatDate","dateStyle","DateTimeDisplay","timeStyle","TimeDisplay","match","formatTime","SelectDisplay","options","values","badges","map","entry","option","tone","label","RelationDisplay","references","_temp","join","reference","UrlDisplay","link","EmailDisplay","TelDisplay","DurationDisplay","precision","JsonDisplay","json","JSON","stringify","code","slice","TagsDisplay","tags","filter","_temp2","tag_0","tag","find","EmbedDisplay","url","title","thumbnailUrl","thumbnail","media","LocationDisplay","lat","lng","address","maximumFractionDigits","format","ColorDisplay","swatch","backgroundColor","color","MediaDisplay","name","filename","Record","source","builtInDisplays","Readonly","textarea","slug","richtext","datetime","time","select","relation","email","tel","range","duration","embed","location","_c","styles"],"sources":["../../src/displays/displays.tsx"],"sourcesContent":["import { Check, Minus } from 'lucide-react';\n\nimport { toReferences } from '@panneau/fields';\nimport { formatDuration } from '@panneau/fields/duration';\nimport { Badge, Icon, type Tone, usePanneauIntl } from '@panneau/ui';\n\nimport { messages } from '../messages';\nimport type { DisplayEntry, DisplayProps } from '../types';\nimport { findOption, getFieldOptions, toText } from '../values';\nimport styles from './Displays.module.css';\n\n/** What a cell shows without a value. Hidden from assistive technologies, which skip the cell. */\nexport function EmptyValue() {\n return (\n <span className={styles.empty} aria-hidden=\"true\">\n —\n </span>\n );\n}\n\nfunction isEmpty(value: unknown): boolean {\n return (\n value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0)\n );\n}\n\n/**\n * Text, on two lines at most. The default display. The value of a `secret` text field\n * (`settings.secret`) shows as dots, never in clear.\n */\nexport function TextDisplay({ value, field }: DisplayProps) {\n const intl = usePanneauIntl();\n const text = toText(value, intl.locale);\n if (text === '') {\n return <EmptyValue />;\n }\n if (field?.settings?.secret === true) {\n return (\n <span role=\"img\" aria-label={intl.formatMessage(messages.secretValue)}>\n ••••••••\n </span>\n );\n }\n return <span className={styles.text}>{text}</span>;\n}\n\n/** HTML as plain text. */\nexport function RichTextDisplay({ value }: DisplayProps) {\n const text =\n typeof value === 'string'\n ? value\n .replace(/<[^>]*>/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim()\n : '';\n return text === '' ? <EmptyValue /> : <span className={styles.text}>{text}</span>;\n}\n\n/** A number, in the format of the locale. */\nexport function NumberDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const number =\n typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : NaN;\n if (Number.isNaN(number) || isEmpty(value)) {\n return <EmptyValue />;\n }\n return <span className={styles.number}>{intl.formatNumber(number)}</span>;\n}\n\n/** Yes or no, as an icon with its label. */\nexport function BooleanDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n if (value === null || value === undefined) {\n return <EmptyValue />;\n }\n const checked = value === true || value === 1 || value === 'true' || value === '1';\n return (\n <span className={`${styles.boolean} ${checked ? styles.true : styles.false}`}>\n <Icon\n icon={checked ? Check : Minus}\n label={intl.formatMessage(checked ? messages.yes : messages.no)}\n />\n </span>\n );\n}\n\nconst DATE_ONLY = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\nconst TIME_ONLY = /^(\\d{2}):(\\d{2})(?::(\\d{2}))?$/;\n\n/** A date (`2026-10-15`) as a local date, so that it doesn't move with the time zone. */\nfunction parseDate(value: unknown): Date | null {\n if (typeof value !== 'string' || value === '') {\n return null;\n }\n const day = DATE_ONLY.exec(value);\n const date =\n day !== null\n ? new Date(Number(day[1]), Number(day[2]) - 1, Number(day[3]))\n : new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\n/** A date, in the format of the locale. */\nexport function DateDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const date = parseDate(value);\n if (date === null) {\n return <EmptyValue />;\n }\n return <time dateTime={String(value)}>{intl.formatDate(date, { dateStyle: 'medium' })}</time>;\n}\n\n/** A date and a time, in the format and the time zone of the user. */\nexport function DateTimeDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const date = parseDate(value);\n if (date === null) {\n return <EmptyValue />;\n }\n return (\n <time dateTime={String(value)}>\n {intl.formatDate(date, { dateStyle: 'medium', timeStyle: 'short' })}\n </time>\n );\n}\n\n/** A time of day (`14:30`), in the format of the locale. */\nexport function TimeDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const match = typeof value === 'string' ? TIME_ONLY.exec(value) : null;\n if (match === null) {\n return <EmptyValue />;\n }\n const date = new Date(2000, 0, 1, Number(match[1]), Number(match[2]), Number(match[3] ?? 0));\n return <time dateTime={String(value)}>{intl.formatTime(date, { timeStyle: 'short' })}</time>;\n}\n\n/** The labels of the selected options, as badges. */\nexport function SelectDisplay({ value, field }: DisplayProps) {\n const options = getFieldOptions(field);\n const values: unknown[] = Array.isArray(value) ? value : isEmpty(value) ? [] : [value];\n if (values.length === 0) {\n return <EmptyValue />;\n }\n return (\n <span className={styles.badges}>\n {values.map((entry) => {\n const option = findOption(options, entry);\n return (\n <Badge key={String(entry)} tone={(option?.tone ?? 'neutral') as Tone}>\n {option?.label ?? String(entry)}\n </Badge>\n );\n })}\n </span>\n );\n}\n\n/** The labels of related items. */\nexport function RelationDisplay({ value }: DisplayProps) {\n const references = toReferences(value);\n if (references.length === 0) {\n return <EmptyValue />;\n }\n return (\n <span className={styles.text}>\n {references.map((reference) => reference.label).join(', ')}\n </span>\n );\n}\n\n/** A link that opens the URL. */\nexport function UrlDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n return (\n <a className={styles.link} href={value} target=\"_blank\" rel=\"noreferrer\">\n {value.replace(/^https?:\\/\\//, '')}\n </a>\n );\n}\n\n/** A link that writes an email. */\nexport function EmailDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n return (\n <a className={styles.link} href={`mailto:${value}`}>\n {value}\n </a>\n );\n}\n\n/** A link that calls the phone number. */\nexport function TelDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value.trim() === '') {\n return <EmptyValue />;\n }\n return (\n <a className={styles.link} href={`tel:${value.replace(/[^\\d+]/g, '')}`}>\n {value}\n </a>\n );\n}\n\n/** A duration in seconds, with its units: `1 h 5 min`, to the precision of its field. */\nexport function DurationDisplay({ value, field }: DisplayProps) {\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return <EmptyValue />;\n }\n const precision = field?.settings?.precision === 'minutes' ? 'minutes' : 'seconds';\n return <span className={styles.number}>{formatDuration(value, { precision })}</span>;\n}\n\n/** JSON on one line, shortened. */\nexport function JsonDisplay({ value }: DisplayProps) {\n if (value === null || value === undefined || typeof value !== 'object') {\n return <EmptyValue />;\n }\n const json = JSON.stringify(value);\n return (\n <code className={styles.code} title={json.length > 80 ? json : undefined}>\n {json.length > 80 ? `${json.slice(0, 79)}…` : json}\n </code>\n );\n}\n\n/** Tags, as badges, with the labels of their options. */\nexport function TagsDisplay({ value, field }: DisplayProps) {\n const tags = Array.isArray(value) ? value.filter((tag) => typeof tag === 'string') : [];\n if (tags.length === 0) {\n return <EmptyValue />;\n }\n const options = field?.options ?? [];\n return (\n <span className={styles.tags}>\n {tags.map((tag) => (\n <Badge key={tag}>\n {options.find((option) => String(option.value) === tag)?.label ?? tag}\n </Badge>\n ))}\n </span>\n );\n}\n\n/** What a URL embeds: its thumbnail and title, linked to it. */\nexport function EmbedDisplay({ value }: DisplayProps) {\n if (\n value === null ||\n typeof value !== 'object' ||\n typeof (value as { url?: unknown }).url !== 'string'\n ) {\n return <EmptyValue />;\n }\n const { url, title, thumbnailUrl } = value as {\n url: string;\n title?: unknown;\n thumbnailUrl?: unknown;\n };\n return (\n <a className={`${styles.link} ${styles.media}`} href={url} target=\"_blank\" rel=\"noreferrer\">\n {typeof thumbnailUrl === 'string' ? (\n <img className={styles.thumbnail} src={thumbnailUrl} alt=\"\" />\n ) : null}\n <span className={styles.text}>\n {typeof title === 'string' ? title : url.replace(/^https?:\\/\\//, '')}\n </span>\n </a>\n );\n}\n\n/** A place: its address, or its coordinates. */\nexport function LocationDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n if (value === null || typeof value !== 'object') {\n return <EmptyValue />;\n }\n const { lat, lng, address } = value as { lat?: unknown; lng?: unknown; address?: unknown };\n if (typeof address === 'string' && address !== '') {\n return <span className={styles.text}>{address}</span>;\n }\n if (typeof lat !== 'number' || typeof lng !== 'number') {\n return <EmptyValue />;\n }\n const format = (number: number) => intl.formatNumber(number, { maximumFractionDigits: 5 });\n return (\n <span className={styles.number}>\n {format(lat)}, {format(lng)}\n </span>\n );\n}\n\n/** A swatch, with the color's code. */\nexport function ColorDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n return (\n <span className={styles.color}>\n <span className={styles.swatch} style={{ backgroundColor: value }} aria-hidden=\"true\" />\n {value}\n </span>\n );\n}\n\n/** A thumbnail and the name of a media item (or of the first one). */\nexport function MediaDisplay({ value }: DisplayProps) {\n const media: unknown = Array.isArray(value) ? value[0] : value;\n if (media === null || typeof media !== 'object') {\n return <EmptyValue />;\n }\n const { thumbnailUrl, url, name, filename } = media as Record<string, unknown>;\n const source =\n typeof thumbnailUrl === 'string' ? thumbnailUrl : typeof url === 'string' ? url : null;\n const label = typeof name === 'string' ? name : typeof filename === 'string' ? filename : '';\n return (\n <span className={styles.media}>\n {source !== null ? <img className={styles.thumbnail} src={source} alt=\"\" /> : null}\n {label !== '' ? <span className={styles.text}>{label}</span> : null}\n </span>\n );\n}\n\n/**\n * The built-in displays, by name. A column's display is its `display`, its field's `display`, or\n * its field's type: field types are display names. Values without a known display are shown as\n * text.\n */\nexport const builtInDisplays: Readonly<Record<string, DisplayEntry>> = {\n text: TextDisplay,\n textarea: TextDisplay,\n slug: TextDisplay,\n richtext: RichTextDisplay,\n number: NumberDisplay,\n boolean: BooleanDisplay,\n date: DateDisplay,\n datetime: DateTimeDisplay,\n time: TimeDisplay,\n select: SelectDisplay,\n relation: RelationDisplay,\n url: UrlDisplay,\n email: EmailDisplay,\n color: ColorDisplay,\n media: MediaDisplay,\n tel: TelDisplay,\n range: NumberDisplay,\n duration: DurationDisplay,\n json: JsonDisplay,\n tags: TagsDisplay,\n embed: EmbedDisplay,\n location: LocationDisplay,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"displays.js","names":["Check","Minus","toReferences","getCountryFlag","getCountryName","isCountryCode","formatDuration","getRegionCountry","getRegionName","parsePhone","Badge","Icon","Tone","usePanneauIntl","messages","DisplayEntry","DisplayProps","findOption","getFieldOptions","toText","styles","EmptyValue","$","_c","t0","Symbol","for","empty","isEmpty","value","undefined","Array","isArray","length","TextDisplay","field","intl","t1","locale","text","t2","settings","secret","formatMessage","secretValue","t3","RichTextDisplay","replace","trim","NumberDisplay","number","Number","NaN","isNaN","formatNumber","BooleanDisplay","checked","boolean","true","false","yes","no","t4","t5","DATE_ONLY","TIME_ONLY","parseDate","Date","day","exec","date","getTime","DateDisplay","bb0","String","formatDate","dateStyle","DateTimeDisplay","timeStyle","TimeDisplay","match","formatTime","SelectDisplay","options","values","badges","map","entry","option","tone","label","RelationDisplay","references","_temp","join","reference","UrlDisplay","link","EmailDisplay","TelDisplay","t6","t7","flagged","country","flag","international","CountryDisplay","RegionDisplay","item","DurationDisplay","precision","JsonDisplay","json","JSON","stringify","code","slice","TagsDisplay","tags","filter","_temp2","tag_0","tag","find","EmbedDisplay","url","title","thumbnailUrl","thumbnail","media","LocationDisplay","lat","lng","address","maximumFractionDigits","format","ColorDisplay","swatch","backgroundColor","color","MediaDisplay","name","filename","Record","source","builtInDisplays","Readonly","textarea","slug","richtext","datetime","time","select","relation","email","tel","range","duration","embed","location","region","_c","styles"],"sources":["../../src/displays/displays.tsx"],"sourcesContent":["import { Check, Minus } from 'lucide-react';\n\nimport { toReferences } from '@panneau/fields';\nimport { getCountryFlag, getCountryName, isCountryCode } from '@panneau/fields/country';\nimport { formatDuration } from '@panneau/fields/duration';\nimport { getRegionCountry, getRegionName } from '@panneau/fields/region';\nimport { parsePhone } from '@panneau/fields/tel';\nimport { Badge, Icon, type Tone, usePanneauIntl } from '@panneau/ui';\n\nimport { messages } from '../messages';\nimport type { DisplayEntry, DisplayProps } from '../types';\nimport { findOption, getFieldOptions, toText } from '../values';\nimport styles from './Displays.module.css';\n\n/** What a cell shows without a value. Hidden from assistive technologies, which skip the cell. */\nexport function EmptyValue() {\n return (\n <span className={styles.empty} aria-hidden=\"true\">\n —\n </span>\n );\n}\n\nfunction isEmpty(value: unknown): boolean {\n return (\n value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0)\n );\n}\n\n/**\n * Text, on two lines at most. The default display. The value of a `secret` text field\n * (`settings.secret`) shows as dots, never in clear.\n */\nexport function TextDisplay({ value, field }: DisplayProps) {\n const intl = usePanneauIntl();\n const text = toText(value, intl.locale);\n if (text === '') {\n return <EmptyValue />;\n }\n if (field?.settings?.secret === true) {\n return (\n <span role=\"img\" aria-label={intl.formatMessage(messages.secretValue)}>\n ••••••••\n </span>\n );\n }\n return <span className={styles.text}>{text}</span>;\n}\n\n/** HTML as plain text. */\nexport function RichTextDisplay({ value }: DisplayProps) {\n const text =\n typeof value === 'string'\n ? value\n .replace(/<[^>]*>/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim()\n : '';\n return text === '' ? <EmptyValue /> : <span className={styles.text}>{text}</span>;\n}\n\n/** A number, in the format of the locale. */\nexport function NumberDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const number =\n typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : NaN;\n if (Number.isNaN(number) || isEmpty(value)) {\n return <EmptyValue />;\n }\n return <span className={styles.number}>{intl.formatNumber(number)}</span>;\n}\n\n/** Yes or no, as an icon with its label. */\nexport function BooleanDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n if (value === null || value === undefined) {\n return <EmptyValue />;\n }\n const checked = value === true || value === 1 || value === 'true' || value === '1';\n return (\n <span className={`${styles.boolean} ${checked ? styles.true : styles.false}`}>\n <Icon\n icon={checked ? Check : Minus}\n label={intl.formatMessage(checked ? messages.yes : messages.no)}\n />\n </span>\n );\n}\n\nconst DATE_ONLY = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\nconst TIME_ONLY = /^(\\d{2}):(\\d{2})(?::(\\d{2}))?$/;\n\n/** A date (`2026-10-15`) as a local date, so that it doesn't move with the time zone. */\nfunction parseDate(value: unknown): Date | null {\n if (typeof value !== 'string' || value === '') {\n return null;\n }\n const day = DATE_ONLY.exec(value);\n const date =\n day !== null\n ? new Date(Number(day[1]), Number(day[2]) - 1, Number(day[3]))\n : new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\n/** A date, in the format of the locale. */\nexport function DateDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const date = parseDate(value);\n if (date === null) {\n return <EmptyValue />;\n }\n return <time dateTime={String(value)}>{intl.formatDate(date, { dateStyle: 'medium' })}</time>;\n}\n\n/** A date and a time, in the format and the time zone of the user. */\nexport function DateTimeDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const date = parseDate(value);\n if (date === null) {\n return <EmptyValue />;\n }\n return (\n <time dateTime={String(value)}>\n {intl.formatDate(date, { dateStyle: 'medium', timeStyle: 'short' })}\n </time>\n );\n}\n\n/** A time of day (`14:30`), in the format of the locale. */\nexport function TimeDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const match = typeof value === 'string' ? TIME_ONLY.exec(value) : null;\n if (match === null) {\n return <EmptyValue />;\n }\n const date = new Date(2000, 0, 1, Number(match[1]), Number(match[2]), Number(match[3] ?? 0));\n return <time dateTime={String(value)}>{intl.formatTime(date, { timeStyle: 'short' })}</time>;\n}\n\n/** The labels of the selected options, as badges. */\nexport function SelectDisplay({ value, field }: DisplayProps) {\n const options = getFieldOptions(field);\n const values: unknown[] = Array.isArray(value) ? value : isEmpty(value) ? [] : [value];\n if (values.length === 0) {\n return <EmptyValue />;\n }\n return (\n <span className={styles.badges}>\n {values.map((entry) => {\n const option = findOption(options, entry);\n return (\n <Badge key={String(entry)} tone={(option?.tone ?? 'neutral') as Tone}>\n {option?.label ?? String(entry)}\n </Badge>\n );\n })}\n </span>\n );\n}\n\n/** The labels of related items. */\nexport function RelationDisplay({ value }: DisplayProps) {\n const references = toReferences(value);\n if (references.length === 0) {\n return <EmptyValue />;\n }\n return (\n <span className={styles.text}>\n {references.map((reference) => reference.label).join(', ')}\n </span>\n );\n}\n\n/** A link that opens the URL. */\nexport function UrlDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n return (\n <a className={styles.link} href={value} target=\"_blank\" rel=\"noreferrer\">\n {value.replace(/^https?:\\/\\//, '')}\n </a>\n );\n}\n\n/** A link that writes an email. */\nexport function EmailDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n return (\n <a className={styles.link} href={`mailto:${value}`}>\n {value}\n </a>\n );\n}\n\n/**\n * A link that calls the phone number: the flag of its country and the number in its international\n * format (`+1 514 555 0199`). A value that isn't E.164 shows as it is.\n */\nexport function TelDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value.trim() === '') {\n return <EmptyValue />;\n }\n const number = parsePhone(value);\n if (number === null) {\n return (\n <a className={styles.link} href={`tel:${value.replace(/[^\\d+]/g, '')}`}>\n {value}\n </a>\n );\n }\n return (\n <a className={`${styles.link} ${styles.flagged}`} href={`tel:${number.number}`}>\n {number.country !== null ? (\n <span className={styles.flag} aria-hidden=\"true\">\n {getCountryFlag(number.country)}\n </span>\n ) : null}\n {number.international}\n </a>\n );\n}\n\n/** A country: its flag and its name in the user's locale. */\nexport function CountryDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n if (!isCountryCode(value)) {\n return <span className={styles.text}>{value}</span>;\n }\n return (\n <span className={styles.flagged}>\n <span className={styles.flag} aria-hidden=\"true\">\n {getCountryFlag(value)}\n </span>\n <span className={styles.text}>{getCountryName(value, intl.locale)}</span>\n </span>\n );\n}\n\n/**\n * A region: its name in the user's locale, from its country in the item (the field's `from`) or\n * the field's settings. A region that Panneau doesn't know shows as it is.\n */\nexport function RegionDisplay({ value, field, item }: DisplayProps) {\n const intl = usePanneauIntl();\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n const country = field !== null ? getRegionCountry(field, item) : null;\n return (\n <span className={styles.text}>{getRegionName(country, value, intl.locale) ?? value}</span>\n );\n}\n\n/** A duration in seconds, with its units: `1 h 5 min`, to the precision of its field. */\nexport function DurationDisplay({ value, field }: DisplayProps) {\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return <EmptyValue />;\n }\n const precision = field?.settings?.precision === 'minutes' ? 'minutes' : 'seconds';\n return <span className={styles.number}>{formatDuration(value, { precision })}</span>;\n}\n\n/** JSON on one line, shortened. */\nexport function JsonDisplay({ value }: DisplayProps) {\n if (value === null || value === undefined || typeof value !== 'object') {\n return <EmptyValue />;\n }\n const json = JSON.stringify(value);\n return (\n <code className={styles.code} title={json.length > 80 ? json : undefined}>\n {json.length > 80 ? `${json.slice(0, 79)}…` : json}\n </code>\n );\n}\n\n/** Tags, as badges, with the labels of their options. */\nexport function TagsDisplay({ value, field }: DisplayProps) {\n const tags = Array.isArray(value) ? value.filter((tag) => typeof tag === 'string') : [];\n if (tags.length === 0) {\n return <EmptyValue />;\n }\n const options = field?.options ?? [];\n return (\n <span className={styles.tags}>\n {tags.map((tag) => (\n <Badge key={tag}>\n {options.find((option) => String(option.value) === tag)?.label ?? tag}\n </Badge>\n ))}\n </span>\n );\n}\n\n/** What a URL embeds: its thumbnail and title, linked to it. */\nexport function EmbedDisplay({ value }: DisplayProps) {\n if (\n value === null ||\n typeof value !== 'object' ||\n typeof (value as { url?: unknown }).url !== 'string'\n ) {\n return <EmptyValue />;\n }\n const { url, title, thumbnailUrl } = value as {\n url: string;\n title?: unknown;\n thumbnailUrl?: unknown;\n };\n return (\n <a className={`${styles.link} ${styles.media}`} href={url} target=\"_blank\" rel=\"noreferrer\">\n {typeof thumbnailUrl === 'string' ? (\n <img className={styles.thumbnail} src={thumbnailUrl} alt=\"\" />\n ) : null}\n <span className={styles.text}>\n {typeof title === 'string' ? title : url.replace(/^https?:\\/\\//, '')}\n </span>\n </a>\n );\n}\n\n/** A place: its address, or its coordinates. */\nexport function LocationDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n if (value === null || typeof value !== 'object') {\n return <EmptyValue />;\n }\n const { lat, lng, address } = value as { lat?: unknown; lng?: unknown; address?: unknown };\n if (typeof address === 'string' && address !== '') {\n return <span className={styles.text}>{address}</span>;\n }\n if (typeof lat !== 'number' || typeof lng !== 'number') {\n return <EmptyValue />;\n }\n const format = (number: number) => intl.formatNumber(number, { maximumFractionDigits: 5 });\n return (\n <span className={styles.number}>\n {format(lat)}, {format(lng)}\n </span>\n );\n}\n\n/** A swatch, with the color's code. */\nexport function ColorDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n return (\n <span className={styles.color}>\n <span className={styles.swatch} style={{ backgroundColor: value }} aria-hidden=\"true\" />\n {value}\n </span>\n );\n}\n\n/** A thumbnail and the name of a media item (or of the first one). */\nexport function MediaDisplay({ value }: DisplayProps) {\n const media: unknown = Array.isArray(value) ? value[0] : value;\n if (media === null || typeof media !== 'object') {\n return <EmptyValue />;\n }\n const { thumbnailUrl, url, name, filename } = media as Record<string, unknown>;\n const source =\n typeof thumbnailUrl === 'string' ? thumbnailUrl : typeof url === 'string' ? url : null;\n const label = typeof name === 'string' ? name : typeof filename === 'string' ? filename : '';\n return (\n <span className={styles.media}>\n {source !== null ? <img className={styles.thumbnail} src={source} alt=\"\" /> : null}\n {label !== '' ? <span className={styles.text}>{label}</span> : null}\n </span>\n );\n}\n\n/**\n * The built-in displays, by name. A column's display is its `display`, its field's `display`, or\n * its field's type: field types are display names. Values without a known display are shown as\n * text.\n */\nexport const builtInDisplays: Readonly<Record<string, DisplayEntry>> = {\n text: TextDisplay,\n textarea: TextDisplay,\n slug: TextDisplay,\n richtext: RichTextDisplay,\n number: NumberDisplay,\n boolean: BooleanDisplay,\n date: DateDisplay,\n datetime: DateTimeDisplay,\n time: TimeDisplay,\n select: SelectDisplay,\n relation: RelationDisplay,\n url: UrlDisplay,\n email: EmailDisplay,\n color: ColorDisplay,\n media: MediaDisplay,\n tel: TelDisplay,\n range: NumberDisplay,\n duration: DurationDisplay,\n json: JsonDisplay,\n tags: TagsDisplay,\n embed: EmbedDisplay,\n location: LocationDisplay,\n country: CountryDisplay,\n region: RegionDisplay,\n};\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The URL of an image value: a media reference (its thumbnail, or its URL), a stored file, or a
3
+ * URL. `null` for anything else.
4
+ */
5
+ export declare function getImageUrl(value: unknown): string | null;
6
+ //# sourceMappingURL=images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../src/images.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAWzD"}
package/dist/images.js ADDED
@@ -0,0 +1,18 @@
1
+ import { isRecord } from "./values.js";
2
+ //#region src/images.ts
3
+ /**
4
+ * The URL of an image value: a media reference (its thumbnail, or its URL), a stored file, or a
5
+ * URL. `null` for anything else.
6
+ */
7
+ function getImageUrl(value) {
8
+ const first = Array.isArray(value) ? value[0] : value;
9
+ if (typeof first === "string") return first !== "" ? first : null;
10
+ if (!isRecord(first)) return null;
11
+ const source = isRecord(first.media) ? first.media : first;
12
+ const url = source.thumbnailUrl ?? source.url;
13
+ return typeof url === "string" && url !== "" ? url : null;
14
+ }
15
+ //#endregion
16
+ export { getImageUrl };
17
+
18
+ //# sourceMappingURL=images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"images.js","names":["isRecord","getImageUrl","value","first","Array","isArray","source","media","url","thumbnailUrl"],"sources":["../src/images.ts"],"sourcesContent":["import { isRecord } from './values';\n\n/**\n * The URL of an image value: a media reference (its thumbnail, or its URL), a stored file, or a\n * URL. `null` for anything else.\n */\nexport function getImageUrl(value: unknown): string | null {\n const first: unknown = Array.isArray(value) ? value[0] : value;\n if (typeof first === 'string') {\n return first !== '' ? first : null;\n }\n if (!isRecord(first)) {\n return null;\n }\n const source = isRecord(first.media) ? first.media : first;\n const url = source.thumbnailUrl ?? source.url;\n return typeof url === 'string' && url !== '' ? url : null;\n}\n"],"mappings":";;;;;;AAMA,SAAgBC,YAAYC,OAA+B;CACvD,MAAMC,QAAiBC,MAAMC,QAAQH,KAAK,IAAIA,MAAM,KAAKA;CACzD,IAAI,OAAOC,UAAU,UACjB,OAAOA,UAAU,KAAKA,QAAQ;CAElC,IAAI,CAACH,SAASG,KAAK,GACf,OAAO;CAEX,MAAMG,SAASN,SAASG,MAAMI,KAAK,IAAIJ,MAAMI,QAAQJ;CACrD,MAAMK,MAAMF,OAAOG,gBAAgBH,OAAOE;CAC1C,OAAO,OAAOA,QAAQ,YAAYA,QAAQ,KAAKA,MAAM;AACzD"}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  export { type ListActions, getActionHref, groupListActions, isAllowedOn } from './actions/actions.js';
2
2
  export { ConfirmDialog, type ConfirmDialogProps, type ConfirmPreview, } from './actions/ConfirmDialog.js';
3
3
  export { type ActionIcons, getActionIcon } from './actions/icons.js';
4
- export { BooleanDisplay, ColorDisplay, DateDisplay, DateTimeDisplay, DurationDisplay, EmailDisplay, EmbedDisplay, EmptyValue, JsonDisplay, LocationDisplay, MediaDisplay, NumberDisplay, RelationDisplay, RichTextDisplay, SelectDisplay, TagsDisplay, TelDisplay, TextDisplay, TimeDisplay, UrlDisplay, builtInDisplays, } from './displays/displays.js';
4
+ export { BooleanDisplay, ColorDisplay, CountryDisplay, DateDisplay, DateTimeDisplay, DurationDisplay, EmailDisplay, EmbedDisplay, EmptyValue, JsonDisplay, LocationDisplay, MediaDisplay, NumberDisplay, RegionDisplay, RelationDisplay, RichTextDisplay, SelectDisplay, TagsDisplay, TelDisplay, TextDisplay, TimeDisplay, UrlDisplay, builtInDisplays, } from './displays/displays.js';
5
5
  export { DateFilter, DateRangeFilter, RelationFilter, SelectFilter, TextFilter, ToggleFilter, builtInFilters, } from './filters/controls.js';
6
+ export { CalendarLayout } from './layouts/CalendarLayout.js';
6
7
  export { CardsLayout } from './layouts/CardsLayout.js';
8
+ export { GalleryLayout } from './layouts/GalleryLayout.js';
7
9
  export { TableLayout } from './layouts/TableLayout.js';
8
10
  export { builtInLayouts } from './layouts/builtIn.js';
9
- export { ItemDetails, type ItemDetailsProps } from './ItemDetails.js';
11
+ export { ItemDetails, type ItemDetailsColumn, type ItemDetailsProps } from './ItemDetails.js';
10
12
  export { List, type ListProps } from './List.js';
11
13
  export { ListView, type ListViewProps } from './ListView.js';
12
14
  export { listsPlugin } from './plugin.js';
@@ -14,7 +16,8 @@ export { type LocalQueryOptions, type LocalQueryResult, applyListQuery } from '.
14
16
  export { countSelected, getPageSelection, isItemSelected } from './selection.js';
15
17
  export { CursorPagination, type CursorPaginationProps, Pagination, type PaginationProps, getPagingProps, } from './toolbar/Pagination.js';
16
18
  export { SearchField, type SearchFieldProps } from './toolbar/SearchField.js';
17
- export type { DisplayEntry, DisplayProps, FilterControlProps, FilterEntry, ListActionEvent, ListActionHandler, ListActionPreview, ListActionPreviewer, ListColumn, ListItem, ListLayoutEntry, ListLayoutProps, } from './types.js';
19
+ export type { DisplayEntry, DisplayProps, FilterControlProps, FilterEntry, ListActionEvent, ListActionHandler, ListActionPreview, ListActionPreviewer, ListColumn, ListCalendarProps, ListItem, ListLayoutEntry, ListLayoutProps, } from './types.js';
18
20
  export { useListState } from './useListState.js';
21
+ export { getImageUrl } from './images.js';
19
22
  export { getLocalizedValue, toText } from './values.js';
20
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EACH,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EACH,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,eAAe,EACf,YAAY,EACZ,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,UAAU,EACV,eAAe,EACf,cAAc,EACd,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,cAAc,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EACH,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,UAAU,EACV,KAAK,eAAe,EACpB,cAAc,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,YAAY,EACR,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,QAAQ,EACR,eAAe,EACf,eAAe,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EACH,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EACH,cAAc,EACd,YAAY,EACZ,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,UAAU,EACV,eAAe,EACf,cAAc,EACd,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,cAAc,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EACH,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,UAAU,EACV,KAAK,eAAe,EACpB,cAAc,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,YAAY,EACR,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,eAAe,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -2,12 +2,15 @@ import { getActionHref, groupListActions, isAllowedOn } from "./actions/actions.
2
2
  import { ConfirmDialog } from "./actions/ConfirmDialog.js";
3
3
  import { getActionIcon } from "./actions/icons.js";
4
4
  import { getLocalizedValue, toText } from "./values.js";
5
- import { BooleanDisplay, ColorDisplay, DateDisplay, DateTimeDisplay, DurationDisplay, EmailDisplay, EmbedDisplay, EmptyValue, JsonDisplay, LocationDisplay, MediaDisplay, NumberDisplay, RelationDisplay, RichTextDisplay, SelectDisplay, TagsDisplay, TelDisplay, TextDisplay, TimeDisplay, UrlDisplay, builtInDisplays } from "./displays/displays.js";
5
+ import { BooleanDisplay, ColorDisplay, CountryDisplay, DateDisplay, DateTimeDisplay, DurationDisplay, EmailDisplay, EmbedDisplay, EmptyValue, JsonDisplay, LocationDisplay, MediaDisplay, NumberDisplay, RegionDisplay, RelationDisplay, RichTextDisplay, SelectDisplay, TagsDisplay, TelDisplay, TextDisplay, TimeDisplay, UrlDisplay, builtInDisplays } from "./displays/displays.js";
6
6
  import { DateFilter, DateRangeFilter, RelationFilter, SelectFilter, TextFilter, ToggleFilter, builtInFilters } from "./filters/controls.js";
7
+ import { CalendarLayout } from "./layouts/CalendarLayout.js";
7
8
  import { CardsLayout } from "./layouts/CardsLayout.js";
9
+ import { GalleryLayout } from "./layouts/GalleryLayout.js";
8
10
  import { TableLayout } from "./layouts/TableLayout.js";
9
11
  import { builtInLayouts } from "./layouts/builtIn.js";
10
12
  import { ItemDetails } from "./ItemDetails.js";
13
+ import { getImageUrl } from "./images.js";
11
14
  import { countSelected, getPageSelection, isItemSelected } from "./selection.js";
12
15
  import { CursorPagination, Pagination, getPagingProps } from "./toolbar/Pagination.js";
13
16
  import { SearchField } from "./toolbar/SearchField.js";
@@ -16,4 +19,4 @@ import { ListView } from "./ListView.js";
16
19
  import { applyListQuery } from "./query.js";
17
20
  import { List } from "./List.js";
18
21
  import { listsPlugin } from "./plugin.js";
19
- export { BooleanDisplay, CardsLayout, ColorDisplay, ConfirmDialog, CursorPagination, DateDisplay, DateFilter, DateRangeFilter, DateTimeDisplay, DurationDisplay, EmailDisplay, EmbedDisplay, EmptyValue, ItemDetails, JsonDisplay, List, ListView, LocationDisplay, MediaDisplay, NumberDisplay, Pagination, RelationDisplay, RelationFilter, RichTextDisplay, SearchField, SelectDisplay, SelectFilter, TableLayout, TagsDisplay, TelDisplay, TextDisplay, TextFilter, TimeDisplay, ToggleFilter, UrlDisplay, applyListQuery, builtInDisplays, builtInFilters, builtInLayouts, countSelected, getActionHref, getActionIcon, getLocalizedValue, getPageSelection, getPagingProps, groupListActions, isAllowedOn, isItemSelected, listsPlugin, toText, useListState };
22
+ export { BooleanDisplay, CalendarLayout, CardsLayout, ColorDisplay, ConfirmDialog, CountryDisplay, CursorPagination, DateDisplay, DateFilter, DateRangeFilter, DateTimeDisplay, DurationDisplay, EmailDisplay, EmbedDisplay, EmptyValue, GalleryLayout, ItemDetails, JsonDisplay, List, ListView, LocationDisplay, MediaDisplay, NumberDisplay, Pagination, RegionDisplay, RelationDisplay, RelationFilter, RichTextDisplay, SearchField, SelectDisplay, SelectFilter, TableLayout, TagsDisplay, TelDisplay, TextDisplay, TextFilter, TimeDisplay, ToggleFilter, UrlDisplay, applyListQuery, builtInDisplays, builtInFilters, builtInLayouts, countSelected, getActionHref, getActionIcon, getImageUrl, getLocalizedValue, getPageSelection, getPagingProps, groupListActions, isAllowedOn, isItemSelected, listsPlugin, toText, useListState };
@@ -0,0 +1,58 @@
1
+ .panneau-inline-cell {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--panneau-space-1);
5
+ min-width: 8rem;
6
+ }
7
+
8
+ .panneau-inline-cell:has(> .panneau-inline-value) {
9
+ flex-direction: row;
10
+ align-items: center;
11
+ min-width: 0;
12
+ }
13
+
14
+ .panneau-inline-value {
15
+ min-width: 0;
16
+ }
17
+
18
+ /* The edit button shows on the row under the pointer, and when it has focus. */
19
+ .panneau-inline-edit {
20
+ flex-shrink: 0;
21
+ opacity: 0;
22
+ }
23
+
24
+ tr:hover .panneau-inline-edit,
25
+ .panneau-inline-edit[data-focus-visible],
26
+ .panneau-inline-edit[data-pressed] {
27
+ opacity: 1;
28
+ }
29
+
30
+ @media (hover: none) {
31
+ .panneau-inline-edit {
32
+ opacity: 1;
33
+ }
34
+ }
35
+
36
+ .panneau-inline-control {
37
+ display: flex;
38
+ align-items: center;
39
+ gap: var(--panneau-space-2);
40
+ }
41
+
42
+ .panneau-inline-control > :first-child {
43
+ flex: 1;
44
+ }
45
+
46
+ .panneau-inline-conflict {
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: var(--panneau-space-1);
50
+ font-size: var(--panneau-font-size-sm);
51
+ color: var(--panneau-color-text-muted);
52
+ }
53
+
54
+ .panneau-inline-conflict-actions {
55
+ display: flex;
56
+ flex-wrap: wrap;
57
+ gap: var(--panneau-space-1);
58
+ }
@@ -0,0 +1,20 @@
1
+ import "./Inline.css";
2
+ //#region src/inline/Inline.module.css
3
+ var cell = "panneau-inline-cell";
4
+ var value = "panneau-inline-value";
5
+ var edit = "panneau-inline-edit";
6
+ var control = "panneau-inline-control";
7
+ var conflict = "panneau-inline-conflict";
8
+ var conflictActions = "panneau-inline-conflict-actions";
9
+ var Inline_module_default = {
10
+ cell,
11
+ value,
12
+ edit,
13
+ control,
14
+ conflict,
15
+ conflictActions
16
+ };
17
+ //#endregion
18
+ export { cell, conflict, conflictActions, control, Inline_module_default as default, edit, value };
19
+
20
+ //# sourceMappingURL=Inline.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Inline.module.js","names":[],"sources":["../../src/inline/Inline.module.css"],"sourcesContent":[".cell {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-space-1);\n min-width: 8rem;\n}\n\n.cell:has(> .value) {\n flex-direction: row;\n align-items: center;\n min-width: 0;\n}\n\n.value {\n min-width: 0;\n}\n\n/* The edit button shows on the row under the pointer, and when it has focus. */\n.edit {\n flex-shrink: 0;\n opacity: 0;\n}\n\n:global(tr):hover .edit,\n.edit[data-focus-visible],\n.edit[data-pressed] {\n opacity: 1;\n}\n\n@media (hover: none) {\n .edit {\n opacity: 1;\n }\n}\n\n.control {\n display: flex;\n align-items: center;\n gap: var(--panneau-space-2);\n}\n\n.control > :first-child {\n flex: 1;\n}\n\n.conflict {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-space-1);\n font-size: var(--panneau-font-size-sm);\n color: var(--panneau-color-text-muted);\n}\n\n.conflictActions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--panneau-space-1);\n}\n"],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { Field, RuleFailure } from '@panneau/protocol';
3
+ import type { ListItem } from '../types.js';
4
+ export interface InlineCellProps {
5
+ item: ListItem;
6
+ /** The field the cell edits, of a type of `INLINE_TYPES`. */
7
+ field: Field;
8
+ /** The label of the item, for the name of the edit button. */
9
+ itemLabel: string;
10
+ /** The content of the cell when it doesn't edit: the value, or the title's link. */
11
+ children: ReactNode;
12
+ /** Renders a value of the field, for the current value of a conflict. */
13
+ renderValue: (item: ListItem) => ReactNode;
14
+ /** Saves the value on an item (the current one after a conflict), with its version. */
15
+ onSave: (item: ListItem, value: unknown) => Promise<ListItem>;
16
+ /** Shows an item the backend gave back: saved, or changed by someone else. */
17
+ onItem: (item: ListItem) => void;
18
+ formatError: (failure: RuleFailure) => string;
19
+ }
20
+ /**
21
+ * A cell that edits its field in place (decision 0043): a checkbox for a boolean, otherwise the
22
+ * value with a button that turns it into the field's control. Enter or leaving the cell saves,
23
+ * Escape cancels; a select and a date save when one is picked. The value is checked by the
24
+ * field's portable rules, then saved alone; errors and conflicts show in the cell.
25
+ */
26
+ export declare function InlineCell({ item, field, itemLabel, children, renderValue, onSave, onItem, formatError, }: InlineCellProps): import("react").JSX.Element;
27
+ //# sourceMappingURL=InlineCell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineCell.d.ts","sourceRoot":"","sources":["../../src/inline/InlineCell.tsx"],"names":[],"mappings":"AACA,OAAO,EAGH,KAAK,SAAS,EAIjB,MAAM,OAAO,CAAC;AAQf,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAK5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAoBzC,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,6DAA6D;IAC7D,KAAK,EAAE,KAAK,CAAC;IACb,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,QAAQ,EAAE,SAAS,CAAC;IACpB,yEAAyE;IACzE,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,SAAS,CAAC;IAC3C,uFAAuF;IACvF,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9D,8EAA8E;IAC9E,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjC,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC;CACjD;AAMD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,SAAS,EACT,QAAQ,EACR,WAAW,EACX,MAAM,EACN,MAAM,EACN,WAAW,GACd,EAAE,eAAe,+BAmMjB"}