snice 7.8.0 → 7.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/adapters/react/SniceProvider.js +1 -1
- package/adapters/react/SniceRouter.js +1 -1
- package/adapters/react/matchRoute.js +1 -1
- package/adapters/react/table.d.ts +1 -0
- package/adapters/react/table.d.ts.map +1 -1
- package/adapters/react/table.js +1 -1
- package/adapters/react/table.js.map +1 -1
- package/adapters/react/table.tsx +2 -1
- package/adapters/react/useRequestHandler.js +1 -1
- package/bin/analyzer-contracts.js +17 -1
- package/custom-elements.json +57 -3
- package/dist/cdn/accordion/snice-accordion.js +1 -1
- package/dist/cdn/action-bar/snice-action-bar.js +1 -1
- package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
- package/dist/cdn/alert/snice-alert.js +1 -1
- package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
- package/dist/cdn/availability/snice-availability.js +1 -1
- package/dist/cdn/avatar/snice-avatar.js +1 -1
- package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
- package/dist/cdn/badge/snice-badge.js +1 -1
- package/dist/cdn/banner/snice-banner.js +1 -1
- package/dist/cdn/binpack/snice-binpack.js +1 -1
- package/dist/cdn/book/snice-book.js +1 -1
- package/dist/cdn/booking/snice-booking.js +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
- package/dist/cdn/button/snice-button.js +1 -1
- package/dist/cdn/calendar/README.md +2 -2
- package/dist/cdn/calendar/snice-calendar.js +537 -44
- package/dist/cdn/calendar/snice-calendar.js.map +1 -1
- package/dist/cdn/calendar/snice-calendar.min.js +2 -2
- package/dist/cdn/calendar/snice-calendar.min.js.map +1 -1
- package/dist/cdn/camera/snice-camera.js +1 -1
- package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
- package/dist/cdn/candlestick/snice-candlestick.js +1 -1
- package/dist/cdn/card/snice-card.js +1 -1
- package/dist/cdn/carousel/snice-carousel.js +1 -1
- package/dist/cdn/cart/snice-cart.js +1 -1
- package/dist/cdn/chart/snice-chart.js +1 -1
- package/dist/cdn/chat/snice-chat.js +1 -1
- package/dist/cdn/checkbox/snice-checkbox.js +1 -1
- package/dist/cdn/chip/snice-chip.js +1 -1
- package/dist/cdn/code-block/README.md +2 -2
- package/dist/cdn/code-block/snice-code-block.js +177 -167
- package/dist/cdn/code-block/snice-code-block.js.map +1 -1
- package/dist/cdn/code-block/snice-code-block.min.js +2 -2
- package/dist/cdn/code-block/snice-code-block.min.js.map +1 -1
- package/dist/cdn/color-display/snice-color-display.js +1 -1
- package/dist/cdn/color-picker/snice-color-picker.js +1 -1
- package/dist/cdn/command-palette/README.md +1 -1
- package/dist/cdn/command-palette/snice-command-palette.js +2 -2
- package/dist/cdn/command-palette/snice-command-palette.js.map +1 -1
- package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
- package/dist/cdn/command-palette/snice-command-palette.min.js.map +1 -1
- package/dist/cdn/comments/snice-comments.js +1 -1
- package/dist/cdn/countdown/snice-countdown.js +1 -1
- package/dist/cdn/cropper/snice-cropper.js +1 -1
- package/dist/cdn/data-card/snice-data-card.js +1 -1
- package/dist/cdn/date-picker/snice-date-picker.js +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
- package/dist/cdn/diff/snice-diff.js +1 -1
- package/dist/cdn/divider/snice-divider.js +1 -1
- package/dist/cdn/doc/snice-doc.js +1 -1
- package/dist/cdn/draw/snice-draw.js +1 -1
- package/dist/cdn/drawer/snice-drawer.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.js +1 -1
- package/dist/cdn/estimate/snice-estimate.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.js +1 -1
- package/dist/cdn/flip-card/snice-flip-card.js +1 -1
- package/dist/cdn/flow/snice-flow.js +1 -1
- package/dist/cdn/form-layout/snice-form-layout.js +1 -1
- package/dist/cdn/funnel/snice-funnel.js +1 -1
- package/dist/cdn/gantt/snice-gantt.js +1 -1
- package/dist/cdn/gauge/snice-gauge.js +1 -1
- package/dist/cdn/grid/snice-grid.js +1 -1
- package/dist/cdn/heatmap/snice-heatmap.js +1 -1
- package/dist/cdn/image/snice-image.js +1 -1
- package/dist/cdn/input/snice-input.js +1 -1
- package/dist/cdn/invoice/snice-invoice.js +1 -1
- package/dist/cdn/kanban/snice-kanban.js +1 -1
- package/dist/cdn/key-value/snice-key-value.js +1 -1
- package/dist/cdn/kpi/snice-kpi.js +1 -1
- package/dist/cdn/layout/snice-layout.js +1 -1
- package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
- package/dist/cdn/link/snice-link.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.js +1 -1
- package/dist/cdn/list/snice-list.js +1 -1
- package/dist/cdn/location/snice-location.js +1 -1
- package/dist/cdn/login/snice-login.js +1 -1
- package/dist/cdn/map/snice-map.js +1 -1
- package/dist/cdn/markdown/snice-markdown.js +1 -1
- package/dist/cdn/masonry/snice-masonry.js +1 -1
- package/dist/cdn/menu/snice-menu.js +1 -1
- package/dist/cdn/message-strip/snice-message-strip.js +1 -1
- package/dist/cdn/modal/snice-modal.js +1 -1
- package/dist/cdn/music-player/snice-music-player.js +1 -1
- package/dist/cdn/nav/snice-nav.js +1 -1
- package/dist/cdn/network-graph/snice-network-graph.js +1 -1
- package/dist/cdn/notification-center/snice-notification-center.js +1 -1
- package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
- package/dist/cdn/org-chart/snice-org-chart.js +1 -1
- package/dist/cdn/pagination/snice-pagination.js +1 -1
- package/dist/cdn/paint/snice-paint.js +1 -1
- package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
- package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
- package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
- package/dist/cdn/popover/snice-popover.js +1 -1
- package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
- package/dist/cdn/product-card/snice-product-card.js +1 -1
- package/dist/cdn/progress/snice-progress.js +2 -2
- package/dist/cdn/progress/snice-progress.js.map +1 -1
- package/dist/cdn/progress/snice-progress.min.js +1 -1
- package/dist/cdn/progress/snice-progress.min.js.map +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
- package/dist/cdn/qr-code/README.md +2 -2
- package/dist/cdn/qr-code/snice-qr-code.js +19 -3
- package/dist/cdn/qr-code/snice-qr-code.js.map +1 -1
- package/dist/cdn/qr-code/snice-qr-code.min.js +2 -2
- package/dist/cdn/qr-code/snice-qr-code.min.js.map +1 -1
- package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
- package/dist/cdn/radio/snice-radio.js +1 -1
- package/dist/cdn/range-slider/snice-range-slider.js +1 -1
- package/dist/cdn/rating/snice-rating.js +1 -1
- package/dist/cdn/receipt/snice-receipt.js +5 -2
- package/dist/cdn/receipt/snice-receipt.js.map +1 -1
- package/dist/cdn/receipt/snice-receipt.min.js +1 -1
- package/dist/cdn/receipt/snice-receipt.min.js.map +1 -1
- package/dist/cdn/recipe/snice-recipe.js +1 -1
- package/dist/cdn/runtime/snice-runtime.esm.js +4 -4
- package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.js +4 -4
- package/dist/cdn/runtime/snice-runtime.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
- package/dist/cdn/sankey/snice-sankey.js +1 -1
- package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
- package/dist/cdn/select/README.md +2 -2
- package/dist/cdn/select/snice-select.js +6 -9
- package/dist/cdn/select/snice-select.js.map +1 -1
- package/dist/cdn/select/snice-select.min.js +2 -2
- package/dist/cdn/select/snice-select.min.js.map +1 -1
- package/dist/cdn/skeleton/snice-skeleton.js +1 -1
- package/dist/cdn/slider/snice-slider.js +1 -1
- package/dist/cdn/sortable/snice-sortable.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.js +1 -1
- package/dist/cdn/spinner/snice-spinner.js +1 -1
- package/dist/cdn/split-button/snice-split-button.js +1 -1
- package/dist/cdn/split-pane/snice-split-pane.js +1 -1
- package/dist/cdn/spotlight/snice-spotlight.js +1 -1
- package/dist/cdn/stat-group/snice-stat-group.js +1 -1
- package/dist/cdn/step-input/snice-step-input.js +1 -1
- package/dist/cdn/stepper/snice-stepper.js +1 -1
- package/dist/cdn/switch/snice-switch.js +1 -1
- package/dist/cdn/table/README.md +2 -2
- package/dist/cdn/table/snice-table.esm.js +1940 -407
- package/dist/cdn/table/snice-table.esm.js.map +1 -1
- package/dist/cdn/table/snice-table.esm.min.js +242 -53
- package/dist/cdn/table/snice-table.esm.min.js.map +1 -1
- package/dist/cdn/table/snice-table.js +1940 -407
- package/dist/cdn/table/snice-table.js.map +1 -1
- package/dist/cdn/table/snice-table.min.js +234 -45
- package/dist/cdn/table/snice-table.min.js.map +1 -1
- package/dist/cdn/tabs/snice-tabs.js +1 -1
- package/dist/cdn/tag/snice-tag.js +1 -1
- package/dist/cdn/tag-input/snice-tag-input.js +1 -1
- package/dist/cdn/terminal/snice-terminal.js +1 -1
- package/dist/cdn/testimonial/snice-testimonial.js +1 -1
- package/dist/cdn/textarea/snice-textarea.js +1 -1
- package/dist/cdn/time-picker/snice-time-picker.js +1 -1
- package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
- package/dist/cdn/timeline/snice-timeline.js +1 -1
- package/dist/cdn/timer/snice-timer.js +1 -1
- package/dist/cdn/toast/snice-toast.js +1 -1
- package/dist/cdn/tooltip/snice-tooltip.js +1 -1
- package/dist/cdn/tree/snice-tree.js +1 -1
- package/dist/cdn/treemap/snice-treemap.js +1 -1
- package/dist/cdn/user-card/snice-user-card.js +1 -1
- package/dist/cdn/video-player/snice-video-player.js +1 -1
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
- package/dist/cdn/waterfall/snice-waterfall.js +1 -1
- package/dist/cdn/weather/snice-weather.js +1 -1
- package/dist/cdn/work-order/snice-work-order.js +1 -1
- package/dist/components/calendar/snice-calendar.d.ts +187 -5
- package/dist/components/calendar/snice-calendar.js +537 -44
- package/dist/components/calendar/snice-calendar.js.map +1 -1
- package/dist/components/calendar/snice-calendar.types.d.ts +2 -1
- package/dist/components/code-block/formatter.d.ts +6 -0
- package/dist/components/code-block/formatter.js +174 -164
- package/dist/components/code-block/formatter.js.map +1 -1
- package/dist/components/code-block/grammars/snice.json +1 -1
- package/dist/components/code-block/grammars/typescript.json +1 -1
- package/dist/components/command-palette/snice-command-palette.js +1 -1
- package/dist/components/command-palette/snice-command-palette.js.map +1 -1
- package/dist/components/progress/snice-progress.js +1 -1
- package/dist/components/progress/snice-progress.js.map +1 -1
- package/dist/components/qr-code/qrcode.d.ts +1 -1
- package/dist/components/qr-code/qrcode.js +18 -2
- package/dist/components/qr-code/qrcode.js.map +1 -1
- package/dist/components/receipt/snice-receipt.js +4 -1
- package/dist/components/receipt/snice-receipt.js.map +1 -1
- package/dist/components/select/snice-select.d.ts +1 -1
- package/dist/components/select/snice-select.js +5 -8
- package/dist/components/select/snice-select.js.map +1 -1
- package/dist/components/table/snice-cell-actions.js +1 -1
- package/dist/components/table/snice-cell-actions.js.map +1 -1
- package/dist/components/table/snice-cell-color.js +1 -1
- package/dist/components/table/snice-cell-color.js.map +1 -1
- package/dist/components/table/snice-cell-date.js +20 -8
- package/dist/components/table/snice-cell-date.js.map +1 -1
- package/dist/components/table/snice-cell-email.js +1 -1
- package/dist/components/table/snice-cell-email.js.map +1 -1
- package/dist/components/table/snice-cell-image.js +1 -1
- package/dist/components/table/snice-cell-image.js.map +1 -1
- package/dist/components/table/snice-cell-json.js +1 -1
- package/dist/components/table/snice-cell-json.js.map +1 -1
- package/dist/components/table/snice-cell-link.js +1 -1
- package/dist/components/table/snice-cell-link.js.map +1 -1
- package/dist/components/table/snice-cell-location.js +1 -1
- package/dist/components/table/snice-cell-location.js.map +1 -1
- package/dist/components/table/snice-cell-phone.js +1 -1
- package/dist/components/table/snice-cell-phone.js.map +1 -1
- package/dist/components/table/snice-cell-status.js +1 -1
- package/dist/components/table/snice-cell-status.js.map +1 -1
- package/dist/components/table/snice-cell.d.ts +10 -0
- package/dist/components/table/snice-cell.js +59 -13
- package/dist/components/table/snice-cell.js.map +1 -1
- package/dist/components/table/snice-row.d.ts +0 -1
- package/dist/components/table/snice-row.js +4 -10
- package/dist/components/table/snice-row.js.map +1 -1
- package/dist/components/table/snice-table.d.ts +170 -2
- package/dist/components/table/snice-table.js +868 -189
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/table/snice-table.types.d.ts +17 -0
- package/dist/components/table/table-cell-presentation.d.ts +17 -4
- package/dist/components/table/table-cell-presentation.js +37 -11
- package/dist/components/table/table-cell-presentation.js.map +1 -1
- package/dist/components/table/table-column-manager.d.ts +153 -2
- package/dist/components/table/table-column-manager.js +364 -43
- package/dist/components/table/table-column-manager.js.map +1 -1
- package/dist/components/table/table-date.d.ts +29 -0
- package/dist/components/table/table-date.js +78 -0
- package/dist/components/table/table-date.js.map +1 -0
- package/dist/components/table/table-export.js +6 -2
- package/dist/components/table/table-export.js.map +1 -1
- package/dist/components/table/table-filter-engine.d.ts +9 -0
- package/dist/components/table/table-filter-engine.js +58 -14
- package/dist/components/table/table-filter-engine.js.map +1 -1
- package/dist/components/table/table-keyboard.d.ts +8 -0
- package/dist/components/table/table-keyboard.js +14 -3
- package/dist/components/table/table-keyboard.js.map +1 -1
- package/dist/components/table/table-toolbar.js +1 -0
- package/dist/components/table/table-toolbar.js.map +1 -1
- package/dist/components/table/table-tree-data.d.ts +2 -0
- package/dist/components/table/table-tree-data.js +35 -9
- package/dist/components/table/table-tree-data.js.map +1 -1
- package/dist/components/table/table-virtualizer.d.ts +44 -7
- package/dist/components/table/table-virtualizer.js +101 -54
- package/dist/components/table/table-virtualizer.js.map +1 -1
- package/dist/components/theme/theme.css +9 -0
- package/dist/index.cjs +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.iife.js +1 -1
- package/dist/react/SniceProvider.js +1 -1
- package/dist/react/SniceRouter.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/matchRoute.js +1 -1
- package/dist/react/useRequestHandler.js +1 -1
- package/dist/symbols.cjs +1 -1
- package/dist/symbols.esm.js +1 -1
- package/dist/testing-dom.cjs +1 -1
- package/dist/testing-dom.esm.js +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/DEVELOPMENT.md +93 -2
- package/docs/ai/components/calendar.md +113 -10
- package/docs/ai/components/code-block.md +4 -0
- package/docs/ai/components/doc.md +1 -1
- package/docs/ai/components/progress.md +1 -0
- package/docs/ai/components/receipt.md +1 -1
- package/docs/ai/components/table.md +29 -30
- package/docs/ai/components/theme.md +1 -0
- package/docs/ai/events.md +30 -0
- package/docs/ai/theme.md +1 -0
- package/docs/components/calendar.md +171 -11
- package/docs/components/code-block.md +2 -0
- package/docs/components/doc.md +1 -1
- package/docs/components/progress.md +13 -0
- package/docs/components/receipt.md +1 -0
- package/docs/components/table.md +274 -15
- package/docs/components/theme.md +5 -0
- package/docs/events.md +49 -0
- package/docs/plans/2026-03-06-date-range-picker-plan.md +4 -4
- package/docs/plans/2026-03-07-table-mui-parity-design.md +1 -1
- package/docs/plans/2026-03-09-action-bar-plan.md +11 -11
- package/docs/superpowers/specs/2026-07-09-table-incredible-design.md +1 -1
- package/docs/superpowers/specs/2026-07-09-table-phase0-implementation.md +2 -2
- package/package.json +3 -1
- package/vscode.html-custom-data.json +13 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snice-cell.js","sources":["../../../../components/table/snice-cell.ts"],"sourcesContent":["import { element, property, watch, ready, query, render, styles, html, css } from 'snice';\nimport cssContent from './snice-cell.css?inline';\nimport { installCellPresentation } from './table-cell-presentation';\nimport type { \n SniceCellElement, \n ColumnType, \n ColumnAlign, \n ColumnDefinition,\n NumberFormat,\n DateFormat,\n BooleanFormat,\n RatingFormat,\n ProgressFormat,\n SparklineFormat,\n CellStyle,\n ConditionalFormat\n} from './snice-table.types';\n\n@element('snice-cell')\nexport class SniceCell extends HTMLElement implements SniceCellElement {\n @property({ })\n align: ColumnAlign = 'left';\n\n @property({ })\n type: ColumnType = 'text';\n\n @property()\n value: any = '';\n\n @property({ type: Object, attribute: false })\n column: ColumnDefinition = {\n key: '',\n label: '',\n type: 'text',\n align: 'left'\n };\n\n @property({ type: Object, attribute: false })\n rowData: any = null;\n\n @query('.cell-content')\n contentElement?: HTMLElement;\n\n @render()\n render() {\n return html/*html*/`\n <div class=\"cell-content\" part=\"content\">\n ${this.formatValue()}\n </div>\n `;\n }\n\n @styles()\n styles() {\n return css/*css*/`${cssContent}`;\n }\n\n @ready()\n init() {\n installCellPresentation(this);\n this.applyAlignment();\n this.applyConditionalFormatting();\n }\n\n @watch('align')\n updateAlignment() {\n this.applyAlignment();\n }\n\n @watch('value', 'column')\n updateContent() {\n if (this.contentElement) {\n this.contentElement.innerHTML = this.formatValue();\n }\n this.applyConditionalFormatting();\n }\n\n private applyAlignment() {\n this.style.textAlign = this.align;\n }\n\n private applyConditionalFormatting() {\n if (!this.column) return;\n\n // Reset any previous conditional formatting\n for (const property of ['backgroundColor', 'color', 'fontWeight', 'fontStyle', 'fontSize', 'textDecoration'] as const) {\n this.style[property] = '';\n }\n this.applyAlignment();\n\n // Apply column base style if defined\n if (this.column.style) {\n this.applyStyle(this.column.style);\n }\n\n // Check and apply conditional formats\n for (const format of this.column.conditionalFormats || []) {\n if (format.condition(this.value, this.rowData)) {\n if (format.style) {\n this.applyStyle(format.style);\n }\n if (format.className) {\n this.classList.add(format.className);\n }\n break; // Apply only the first matching format\n }\n }\n }\n\n private applyStyle(style: CellStyle) {\n if (style.backgroundColor) this.style.backgroundColor = style.backgroundColor;\n if (style.color) this.style.color = style.color;\n if (style.fontWeight) this.style.fontWeight = style.fontWeight;\n if (style.fontStyle) this.style.fontStyle = style.fontStyle;\n if (style.fontSize) this.style.fontSize = style.fontSize;\n if (style.textDecoration) this.style.textDecoration = style.textDecoration;\n }\n\n private formatValue(): string {\n if (this.value === null || this.value === undefined) {\n return '';\n }\n\n // Use custom formatter if provided\n if (this.column.formatter) {\n return this.column.formatter(this.value, this.rowData);\n }\n if (this.column.valueFormatter) {\n return this.column.valueFormatter(this.value, this.rowData);\n }\n\n // Apply type-specific formatting\n switch (this.type) {\n case 'text':\n return this.formatText();\n case 'number':\n return this.formatNumber();\n case 'currency':\n return this.formatCurrency();\n case 'percent':\n return this.formatPercent();\n case 'accounting':\n return this.formatAccounting();\n case 'scientific':\n return this.formatScientific();\n case 'fraction':\n return this.formatFraction();\n case 'date':\n return this.formatDate();\n case 'boolean':\n return this.formatBoolean();\n case 'rating':\n return this.formatRating();\n case 'progress':\n return this.formatProgress();\n case 'sparkline':\n return this.formatSparkline();\n case 'duration':\n return this.formatDuration();\n case 'filesize':\n return this.formatFilesize();\n case 'custom':\n return String(this.value);\n default:\n return String(this.value);\n }\n }\n\n private formatText(): string {\n return String(this.value);\n }\n\n private formatNumber(): string {\n const format = this.column.numberFormat || {};\n const num = Number(this.value);\n \n if (isNaN(num)) return String(this.value);\n\n let formatted = num.toFixed(format.decimals ?? 0);\n \n if (format.thousandsSeparator) {\n const parts = formatted.split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n formatted = parts.join('.');\n }\n\n if (num < 0 && format.negativeStyle === 'parentheses') {\n formatted = `(${formatted.replace('-', '')})`;\n }\n\n if (format.prefix) formatted = format.prefix + formatted;\n if (format.suffix) formatted = formatted + format.suffix;\n\n return formatted;\n }\n\n private formatCurrency(): string {\n const format = this.column.numberFormat || {};\n const num = Number(this.value);\n \n if (isNaN(num)) return String(this.value);\n\n const currencyFormat: Intl.NumberFormatOptions = {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: format.decimals ?? 2,\n maximumFractionDigits: format.decimals ?? 2\n };\n\n return new Intl.NumberFormat('en-US', currencyFormat).format(num);\n }\n\n private formatPercent(): string {\n const format = this.column.percentageFormat || this.column.numberFormat || {};\n const num = Number(this.value);\n \n if (isNaN(num)) return String(this.value);\n\n return `${num.toFixed(format.decimals ?? 2)}%`;\n }\n\n private formatAccounting(): string {\n const format = this.column.numberFormat || {};\n const num = Number(this.value);\n \n if (isNaN(num)) return String(this.value);\n\n let formatted = Math.abs(num).toFixed(format.decimals ?? 2);\n \n if (format.thousandsSeparator) {\n const parts = formatted.split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n formatted = parts.join('.');\n }\n\n if (num < 0) {\n formatted = `(${formatted})`;\n } else {\n formatted = ` ${formatted} `;\n }\n\n return formatted;\n }\n\n private formatScientific(): string {\n const format = this.column.numberFormat || {};\n const num = Number(this.value);\n \n if (isNaN(num)) return String(this.value);\n\n return num.toExponential(format.decimals ?? 2);\n }\n\n private formatFraction(): string {\n const num = Number(this.value);\n if (!Number.isFinite(num)) return String(this.value);\n\n const sign = num < 0 ? -1 : 1;\n const target = Math.abs(num);\n const tolerance = 1e-6;\n let previousNumerator = 0;\n let numerator = 1;\n let previousDenominator = 1;\n let denominator = 0;\n let remainder = target;\n\n for (let iteration = 0; iteration < 32; iteration++) {\n const whole = Math.floor(remainder);\n const nextNumerator = whole * numerator + previousNumerator;\n const nextDenominator = whole * denominator + previousDenominator;\n if (nextDenominator > 10000) break;\n previousNumerator = numerator;\n numerator = nextNumerator;\n previousDenominator = denominator;\n denominator = nextDenominator;\n if (Math.abs(target - numerator / denominator) <= tolerance) break;\n const fractional = remainder - whole;\n if (fractional <= Number.EPSILON) break;\n remainder = 1 / fractional;\n }\n\n return `${sign * numerator}/${denominator || 1}`;\n }\n\n private formatDate(): string {\n const format = this.column.dateFormat || {};\n const date = new Date(this.value);\n \n if (isNaN(date.getTime())) return String(this.value);\n\n if (format.customFormat) {\n // Simple custom format implementation\n return format.customFormat\n .replace('YYYY', date.getFullYear().toString())\n .replace('MM', (date.getMonth() + 1).toString().padStart(2, '0'))\n .replace('DD', date.getDate().toString().padStart(2, '0'));\n }\n\n const options: Intl.DateTimeFormatOptions = {};\n switch (format.format) {\n case 'short':\n options.dateStyle = 'short';\n break;\n case 'medium':\n options.dateStyle = 'medium';\n break;\n case 'long':\n options.dateStyle = 'long';\n break;\n case 'full':\n options.dateStyle = 'full';\n break;\n default:\n options.dateStyle = 'short';\n }\n\n return new Intl.DateTimeFormat(format.locale || 'en-US', options).format(date);\n }\n\n private formatBoolean(): string {\n const format = this.column.booleanFormat || {};\n const bool = Boolean(this.value);\n\n if (format.useSymbols) {\n return bool \n ? (format.trueSymbol || '✓') \n : (format.falseSymbol || '✗');\n }\n\n return bool \n ? (format.trueValue || 'true') \n : (format.falseValue || 'false');\n }\n\n private formatRating(): string {\n const format = this.column.ratingFormat || {};\n const rating = Number(this.value);\n const max = format.max || 5;\n const symbol = format.symbol || '★';\n const emptySymbol = format.emptySymbol || '☆';\n\n if (isNaN(rating)) return String(this.value);\n\n let html = '';\n const primaryColor = format.color || getComputedStyle(this).getPropertyValue('--snice-color-warning').trim();\n const emptyColor = getComputedStyle(this).getPropertyValue('--snice-color-border').trim();\n for (let i = 0; i < max; i++) {\n if (i < rating) {\n html += `<span style=\"color: ${primaryColor}\">${symbol}</span>`;\n } else {\n html += `<span style=\"color: ${emptyColor}\">${emptySymbol}</span>`;\n }\n }\n return html;\n }\n\n private formatProgress(): string {\n const format = this.column.progressFormat || {};\n const value = Number(this.value);\n const max = format.max || 100;\n const percentage = Math.min(100, Math.max(0, (value / max) * 100));\n\n if (isNaN(value)) return String(this.value);\n\n const color = format.color || getComputedStyle(this).getPropertyValue('--snice-color-primary').trim();\n const bgColor = format.backgroundColor || getComputedStyle(this).getPropertyValue('--snice-color-border').trim();\n const height = format.height || '1rem'; // Using rem for height\n\n let html = `\n <div style=\"\n width: 100%; \n height: ${height}; \n background-color: ${bgColor}; \n border-radius: 0.25rem; \n overflow: hidden;\n position: relative;\n \">\n <div style=\"\n width: ${percentage}%; \n height: 100%; \n background-color: ${color}; \n transition: width 0.3s ease;\n \"></div>\n `;\n\n if (format.showPercentage) {\n const textColor = percentage > 50\n ? getComputedStyle(this).getPropertyValue('--snice-color-text-inverse').trim()\n : getComputedStyle(this).getPropertyValue('--snice-color-text').trim();\n html += `\n <span style=\"\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 0.75rem;\n font-weight: bold;\n color: ${textColor};\n \">${Math.round(percentage)}%</span>\n `;\n }\n\n html += '</div>';\n return html;\n }\n\n private formatSparkline(): string {\n const format = this.column.sparklineFormat || {};\n const data = Array.isArray(this.value) ? this.value : [];\n\n if (data.length === 0) return '';\n\n const width = format.width || 60;\n const height = format.height || 20;\n const color = format.color || getComputedStyle(this).getPropertyValue('--snice-color-primary').trim();\n const type = format.type || 'line';\n\n const max = Math.max(...data);\n const min = Math.min(...data);\n const range = max - min || 1;\n\n if (type === 'line') {\n const points = data.map((val, i) => {\n const x = (i / (data.length - 1)) * width;\n const y = height - ((val - min) / range) * height;\n return `${x},${y}`;\n }).join(' ');\n\n return `\n <svg width=\"${width}\" height=\"${height}\" style=\"display: block;\">\n <polyline \n points=\"${points}\" \n fill=\"none\" \n stroke=\"${color}\" \n stroke-width=\"2\"\n />\n </svg>\n `;\n } else if (type === 'bar') {\n const barWidth = width / data.length;\n const bars = data.map((val, i) => {\n const barHeight = ((val - min) / range) * height;\n const x = i * barWidth;\n const y = height - barHeight;\n return `<rect x=\"${x}\" y=\"${y}\" width=\"${barWidth - 1}\" height=\"${barHeight}\" fill=\"${color}\" />`;\n }).join('');\n\n return `\n <svg width=\"${width}\" height=\"${height}\" style=\"display: block;\">\n ${bars}\n </svg>\n `;\n }\n\n return String(this.value);\n }\n\n private formatDuration(): string {\n const seconds = Number(this.value);\n if (isNaN(seconds)) return String(this.value);\n\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const secs = seconds % 60;\n\n if (hours > 0) {\n return `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;\n } else {\n return `${minutes}:${secs.toString().padStart(2, '0')}`;\n }\n }\n\n private formatFilesize(): string {\n const bytes = Number(this.value);\n if (isNaN(bytes)) return String(this.value);\n\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let size = bytes;\n let unitIndex = 0;\n\n while (size >= 1024 && unitIndex < units.length - 1) {\n size /= 1024;\n unitIndex++;\n }\n\n return `${size.toFixed(unitIndex === 0 ? 0 : 1)} ${units[unitIndex]}`;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snice-cell.js","sources":["../../../../components/table/snice-cell.ts"],"sourcesContent":["import { element, property, watch, ready, query, render, styles, html, css } from 'snice';\nimport cssContent from './snice-cell.css?inline';\nimport { installCellPresentation } from './table-cell-presentation';\nimport { parseCellDate } from './table-date';\nimport type { \n SniceCellElement, \n ColumnType, \n ColumnAlign, \n ColumnDefinition,\n NumberFormat,\n DateFormat,\n BooleanFormat,\n RatingFormat,\n ProgressFormat,\n SparklineFormat,\n CellStyle,\n ConditionalFormat\n} from './snice-table.types';\n\n@element('snice-cell')\nexport class SniceCell extends HTMLElement implements SniceCellElement {\n @property({ })\n align: ColumnAlign = 'left';\n\n @property({ })\n type: ColumnType = 'text';\n\n @property()\n value: any = '';\n\n @property({ type: Object, attribute: false })\n column: ColumnDefinition = {\n key: '',\n label: '',\n type: 'text',\n align: 'left'\n };\n\n @property({ type: Object, attribute: false })\n rowData: any = null;\n\n @query('.cell-content')\n contentElement?: HTMLElement;\n\n @render()\n render() {\n return html/*html*/`\n <div class=\"cell-content\" part=\"content\">\n ${this.formatValue()}\n </div>\n `;\n }\n\n @styles()\n styles() {\n return css/*css*/`${cssContent}`;\n }\n\n @ready()\n init() {\n installCellPresentation(this);\n this.applyAlignment();\n this.applyConditionalFormatting();\n }\n\n @watch('align')\n updateAlignment() {\n this.applyAlignment();\n }\n\n @watch('value', 'column')\n updateContent() {\n if (this.contentElement) {\n this.contentElement.innerHTML = this.formatValue();\n }\n this.applyConditionalFormatting();\n }\n\n private applyAlignment() {\n // snice-cell.css already encodes each type's default alignment\n // (:host([type=\"accounting\"]) and friends are right-aligned, boolean/rating\n // centred). Writing an inline text-align unconditionally OVERRODE that, so a\n // standalone accounting figure sat left-aligned beside a right-aligned\n // currency cell — and the accounting format's alignment padding meant\n // nothing. Only an alignment the caller actually declared wins.\n const declared = this.getAttribute('align');\n this.style.textAlign = declared ?? '';\n }\n\n private applyConditionalFormatting() {\n if (!this.column) return;\n\n // Reset any previous conditional formatting\n for (const property of ['backgroundColor', 'color', 'fontWeight', 'fontStyle', 'fontSize', 'textDecoration'] as const) {\n this.style[property] = '';\n }\n this.applyAlignment();\n\n // Apply column base style if defined\n if (this.column.style) {\n this.applyStyle(this.column.style);\n }\n\n // Check and apply conditional formats\n for (const format of this.column.conditionalFormats || []) {\n if (format.condition(this.value, this.rowData)) {\n if (format.style) {\n this.applyStyle(format.style);\n }\n if (format.className) {\n this.classList.add(format.className);\n }\n break; // Apply only the first matching format\n }\n }\n }\n\n private applyStyle(style: CellStyle) {\n if (style.backgroundColor) this.style.backgroundColor = style.backgroundColor;\n if (style.color) this.style.color = style.color;\n if (style.fontWeight) this.style.fontWeight = style.fontWeight;\n if (style.fontStyle) this.style.fontStyle = style.fontStyle;\n if (style.fontSize) this.style.fontSize = style.fontSize;\n if (style.textDecoration) this.style.textDecoration = style.textDecoration;\n }\n\n private formatValue(): string {\n if (this.value === null || this.value === undefined) {\n return '';\n }\n\n // Use custom formatter if provided\n if (this.column.formatter) {\n return this.column.formatter(this.value, this.rowData);\n }\n if (this.column.valueFormatter) {\n return this.column.valueFormatter(this.value, this.rowData);\n }\n\n // Apply type-specific formatting\n switch (this.type) {\n case 'text':\n return this.formatText();\n case 'number':\n return this.formatNumber();\n case 'currency':\n return this.formatCurrency();\n case 'percent':\n return this.formatPercent();\n case 'accounting':\n return this.formatAccounting();\n case 'scientific':\n return this.formatScientific();\n case 'fraction':\n return this.formatFraction();\n case 'date':\n return this.formatDate();\n case 'boolean':\n return this.formatBoolean();\n case 'rating':\n return this.formatRating();\n case 'progress':\n return this.formatProgress();\n case 'sparkline':\n return this.formatSparkline();\n case 'duration':\n return this.formatDuration();\n case 'filesize':\n return this.formatFilesize();\n case 'custom':\n return String(this.value);\n default:\n return String(this.value);\n }\n }\n\n private formatText(): string {\n return String(this.value);\n }\n\n private formatNumber(): string {\n const format = this.column.numberFormat || {};\n const num = Number(this.value);\n \n if (isNaN(num)) return String(this.value);\n\n let formatted = num.toFixed(format.decimals ?? 0);\n \n if (format.thousandsSeparator) {\n const parts = formatted.split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n formatted = parts.join('.');\n }\n\n if (num < 0 && format.negativeStyle === 'parentheses') {\n formatted = `(${formatted.replace('-', '')})`;\n }\n\n if (format.prefix) formatted = format.prefix + formatted;\n if (format.suffix) formatted = formatted + format.suffix;\n\n return formatted;\n }\n\n private formatCurrency(): string {\n const format = this.column.numberFormat || {};\n const num = Number(this.value);\n \n if (isNaN(num)) return String(this.value);\n\n const currencyFormat: Intl.NumberFormatOptions = {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: format.decimals ?? 2,\n maximumFractionDigits: format.decimals ?? 2\n };\n\n return new Intl.NumberFormat('en-US', currencyFormat).format(num);\n }\n\n private formatPercent(): string {\n const format = this.column.percentageFormat || this.column.numberFormat || {};\n const num = Number(this.value);\n \n if (isNaN(num)) return String(this.value);\n\n return `${num.toFixed(format.decimals ?? 2)}%`;\n }\n\n /**\n * Accounting notation is currency notation: symbol, grouped digits, and\n * negatives in parentheses instead of a minus sign. It shares its defaults\n * with `formatCurrency()` on purpose — an `accounting` cell and a `currency`\n * cell showing the same amount must not disagree about what money looks\n * like. `numberFormat` still steers decimals/grouping (its historic role\n * here), `currencyFormat` steers the symbol and locale, and an explicit\n * `numberFormat.prefix` opts out of the symbol entirely for ledgers that\n * label their own columns.\n */\n private formatAccounting(): string {\n const format = this.column.numberFormat || {};\n const currency = this.column.currencyFormat || {};\n const num = Number(this.value);\n\n if (isNaN(num)) return String(this.value);\n\n const decimals = format.decimals ?? currency.decimals ?? 2;\n const useGrouping = format.thousandsSeparator ?? currency.thousandsSeparator ?? true;\n const magnitude = Math.abs(num);\n const options: Intl.NumberFormatOptions = {\n useGrouping,\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n };\n\n // An author-supplied prefix/suffix is the caller naming the unit; adding a\n // currency symbol on top would print it twice.\n const symbolIsCallers = !!format.prefix || !!format.suffix;\n if (!symbolIsCallers) {\n options.style = 'currency';\n options.currency = currency.currency || 'USD';\n options.currencyDisplay = currency.currencyDisplay || currency.display || 'symbol';\n }\n\n let formatted: string;\n try {\n formatted = new Intl.NumberFormat(currency.locale || 'en-US', options).format(magnitude);\n } catch {\n formatted = magnitude.toFixed(decimals);\n if (useGrouping) {\n const parts = formatted.split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n formatted = parts.join('.');\n }\n if (!symbolIsCallers) formatted = `$${formatted}`;\n }\n\n if (format.prefix) formatted = format.prefix + formatted;\n if (format.suffix) formatted = formatted + format.suffix;\n\n // The trailing space is the format's whole reason for existing: it keeps a\n // positive row's last digit under the \")\" of the row above in a\n // right-aligned column. A normal space collapses in HTML, so pad with NBSP.\n return num < 0 ? `(${formatted})` : `${formatted}\\u00a0`;\n }\n\n private formatScientific(): string {\n const format = this.column.numberFormat || {};\n const num = Number(this.value);\n \n if (isNaN(num)) return String(this.value);\n\n return num.toExponential(format.decimals ?? 2);\n }\n\n private formatFraction(): string {\n const num = Number(this.value);\n if (!Number.isFinite(num)) return String(this.value);\n\n const sign = num < 0 ? -1 : 1;\n const target = Math.abs(num);\n const tolerance = 1e-6;\n let previousNumerator = 0;\n let numerator = 1;\n let previousDenominator = 1;\n let denominator = 0;\n let remainder = target;\n\n for (let iteration = 0; iteration < 32; iteration++) {\n const whole = Math.floor(remainder);\n const nextNumerator = whole * numerator + previousNumerator;\n const nextDenominator = whole * denominator + previousDenominator;\n if (nextDenominator > 10000) break;\n previousNumerator = numerator;\n numerator = nextNumerator;\n previousDenominator = denominator;\n denominator = nextDenominator;\n if (Math.abs(target - numerator / denominator) <= tolerance) break;\n const fractional = remainder - whole;\n if (fractional <= Number.EPSILON) break;\n remainder = 1 / fractional;\n }\n\n return `${sign * numerator}/${denominator || 1}`;\n }\n\n private formatDate(): string {\n const format = this.column.dateFormat || {};\n // Calendar days are read at local midnight (see table-date.ts) so this\n // generic cell shows the same day as `snice-cell-date` and as the editor.\n const date = parseCellDate(this.value);\n\n if (!date) return String(this.value);\n\n if (format.customFormat) {\n // Simple custom format implementation\n return format.customFormat\n .replace('YYYY', date.getFullYear().toString())\n .replace('MM', (date.getMonth() + 1).toString().padStart(2, '0'))\n .replace('DD', date.getDate().toString().padStart(2, '0'));\n }\n\n const options: Intl.DateTimeFormatOptions = {};\n switch (format.format) {\n case 'short':\n options.dateStyle = 'short';\n break;\n case 'medium':\n options.dateStyle = 'medium';\n break;\n case 'long':\n options.dateStyle = 'long';\n break;\n case 'full':\n options.dateStyle = 'full';\n break;\n default:\n options.dateStyle = 'short';\n }\n\n return new Intl.DateTimeFormat(format.locale || 'en-US', options).format(date);\n }\n\n private formatBoolean(): string {\n const format = this.column.booleanFormat || {};\n const bool = Boolean(this.value);\n\n if (format.useSymbols) {\n return bool \n ? (format.trueSymbol || '✓') \n : (format.falseSymbol || '✗');\n }\n\n return bool \n ? (format.trueValue || 'true') \n : (format.falseValue || 'false');\n }\n\n private formatRating(): string {\n const format = this.column.ratingFormat || {};\n const rating = Number(this.value);\n const max = format.max || 5;\n const symbol = format.symbol || '★';\n const emptySymbol = format.emptySymbol || '☆';\n\n if (isNaN(rating)) return String(this.value);\n\n let html = '';\n const primaryColor = format.color || getComputedStyle(this).getPropertyValue('--snice-color-warning').trim();\n const emptyColor = getComputedStyle(this).getPropertyValue('--snice-color-border').trim();\n for (let i = 0; i < max; i++) {\n if (i < rating) {\n html += `<span style=\"color: ${primaryColor}\">${symbol}</span>`;\n } else {\n html += `<span style=\"color: ${emptyColor}\">${emptySymbol}</span>`;\n }\n }\n return html;\n }\n\n private formatProgress(): string {\n const format = this.column.progressFormat || {};\n const value = Number(this.value);\n const max = format.max || 100;\n const percentage = Math.min(100, Math.max(0, (value / max) * 100));\n\n if (isNaN(value)) return String(this.value);\n\n const color = format.color || getComputedStyle(this).getPropertyValue('--snice-color-primary').trim();\n const bgColor = format.backgroundColor || getComputedStyle(this).getPropertyValue('--snice-color-border').trim();\n const height = format.height || '1rem'; // Using rem for height\n\n let html = `\n <div style=\"\n width: 100%; \n height: ${height}; \n background-color: ${bgColor}; \n border-radius: 0.25rem; \n overflow: hidden;\n position: relative;\n \">\n <div style=\"\n width: ${percentage}%; \n height: 100%; \n background-color: ${color}; \n transition: width 0.3s ease;\n \"></div>\n `;\n\n if (format.showPercentage) {\n const textColor = percentage > 50\n ? getComputedStyle(this).getPropertyValue('--snice-color-text-inverse').trim()\n : getComputedStyle(this).getPropertyValue('--snice-color-text').trim();\n html += `\n <span style=\"\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 0.75rem;\n font-weight: bold;\n color: ${textColor};\n \">${Math.round(percentage)}%</span>\n `;\n }\n\n html += '</div>';\n return html;\n }\n\n private formatSparkline(): string {\n const format = this.column.sparklineFormat || {};\n const data = Array.isArray(this.value) ? this.value : [];\n\n if (data.length === 0) return '';\n\n const width = format.width || 60;\n const height = format.height || 20;\n const color = format.color || getComputedStyle(this).getPropertyValue('--snice-color-primary').trim();\n const type = format.type || 'line';\n\n const max = Math.max(...data);\n const min = Math.min(...data);\n const range = max - min || 1;\n\n if (type === 'line') {\n const points = data.map((val, i) => {\n const x = (i / (data.length - 1)) * width;\n const y = height - ((val - min) / range) * height;\n return `${x},${y}`;\n }).join(' ');\n\n return `\n <svg width=\"${width}\" height=\"${height}\" style=\"display: block;\">\n <polyline \n points=\"${points}\" \n fill=\"none\" \n stroke=\"${color}\" \n stroke-width=\"2\"\n />\n </svg>\n `;\n } else if (type === 'bar') {\n const barWidth = width / data.length;\n const bars = data.map((val, i) => {\n const barHeight = ((val - min) / range) * height;\n const x = i * barWidth;\n const y = height - barHeight;\n return `<rect x=\"${x}\" y=\"${y}\" width=\"${barWidth - 1}\" height=\"${barHeight}\" fill=\"${color}\" />`;\n }).join('');\n\n return `\n <svg width=\"${width}\" height=\"${height}\" style=\"display: block;\">\n ${bars}\n </svg>\n `;\n }\n\n return String(this.value);\n }\n\n private formatDuration(): string {\n const seconds = Number(this.value);\n if (isNaN(seconds)) return String(this.value);\n\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const secs = seconds % 60;\n\n if (hours > 0) {\n return `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;\n } else {\n return `${minutes}:${secs.toString().padStart(2, '0')}`;\n }\n }\n\n private formatFilesize(): string {\n const bytes = Number(this.value);\n if (isNaN(bytes)) return String(this.value);\n\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let size = bytes;\n let unitIndex = 0;\n\n while (size >= 1024 && unitIndex < units.length - 1) {\n size /= 1024;\n unitIndex++;\n }\n\n return `${size.toFixed(unitIndex === 0 ? 0 : 1)} ${units[unitIndex]}`;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -52,7 +52,6 @@ export declare class SniceRow extends HTMLElement implements SniceRowElement {
|
|
|
52
52
|
private handleRowHover;
|
|
53
53
|
private renderCheckbox;
|
|
54
54
|
private renderCell;
|
|
55
|
-
private getDefaultAlign;
|
|
56
55
|
private applyCellPresentation;
|
|
57
56
|
private getCellComponent;
|
|
58
57
|
private getCellStyles;
|
|
@@ -22,14 +22,15 @@ import './snice-cell-json.js';
|
|
|
22
22
|
import './snice-cell-currency.js';
|
|
23
23
|
import './snice-cell-percentage.js';
|
|
24
24
|
import './snice-cell-location.js';
|
|
25
|
+
import { defaultCellAlign } from './table-cell-presentation.js';
|
|
25
26
|
import '../snice-cell-l6czK2XW.js';
|
|
26
|
-
import './table-
|
|
27
|
+
import './table-date.js';
|
|
27
28
|
import '../rating/snice-rating.js';
|
|
28
29
|
import '../utils.js';
|
|
29
30
|
import '../icons/index.js';
|
|
30
31
|
import './snice-progress.js';
|
|
31
32
|
|
|
32
|
-
var cssContent = ":host([hidden]){display:none}:host{display:block;width:100%;min-height:2.5rem}.row-container{display:flex;align-items:stretch;width:100%;min-height:2.5rem;background:0 0;color:var(--snice-color-text,rgb(23 23 23));border-bottom:1px solid var(--snice-color-border,rgb(226 226 226));transition:background-color .15s}.cell{display:flex;align-items:center;border-right:1px solid var(--snice-color-border,rgb(226 226 226));min-height:2.5rem;min-width:6.25rem;flex:1;word-wrap:break-word;overflow:hidden;color:var(--snice-color-text,rgb(23 23 23))}.cell:last-child{border-right:none}.cell--checkbox{width:3rem;min-width:3rem;max-width:3rem;padding:.75rem;justify-content:center}.row-checkbox{width:1rem;height:1rem;cursor:pointer;margin:0;display:block;accent-color:var(--snice-color-primary,rgb(37 99 235))}.cells-container{display:flex;flex:1;align-items:stretch}.cell--text{text-align:left}.cell--accounting,.cell--currency,.cell--fraction,.cell--number,.cell--percent,.cell--scientific{text-align:right;font-variant-numeric:tabular-nums}.cell--date{min-width:8rem;font-variant-numeric:tabular-nums}.cell--boolean{text-align:center;font-size:1rem}.cell--rating{text-align:center;min-width:6rem}.cell--progress{min-width:8rem}.cell--sparkline{text-align:center;min-width:6rem}.cell--duration,.cell--filesize{text-align:right;font-variant-numeric:tabular-nums}:host(.row--hoverable) .row-container:hover{background-color:var(--snice-color-surface-hover,rgb(243 244 246))}:host(.row--clickable) .row-container{cursor:pointer}:host(.row--clickable) .row-container:hover{background-color:var(--snice-color-surface-hover,rgb(243 244 246))}:host(.row--selected) .row-container{background-color:var(--snice-color-primary-subtle,rgb(239 246 255));box-shadow:inset 2px 0 0 0 var(--snice-color-primary,rgb(37 99 235))}:host(.row--selected.row--hoverable) .row-container:hover{background-color:var(--snice-color-primary-subtle-hover,var(--snice-color-primary-subtle,rgb(219 234 254)))}:host(.row--highlighted) .row-container{background-color:var(--snice-color-warning-subtle,rgb(254 249 195))!important;animation:2s ease-out row-highlight-fade}@keyframes row-highlight-fade{0%{background-color:var(--snice-color-warning-subtle-hover,rgb(254 252 232))}100%{background-color:var(--snice-color-warning-subtle,rgb(254 249 195))}}:host(:focus) .row-container{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(37 99 235 / .5));outline-offset:-2px}:host(.row--selectable){tabindex:0}:host(.row--striped) .row-container{background-color:var(--snice-color-
|
|
33
|
+
var cssContent = ":host([hidden]){display:none}:host{display:block;width:100%;min-height:2.5rem}.row-container{display:flex;align-items:stretch;width:100%;min-height:2.5rem;background:0 0;color:var(--snice-color-text,rgb(23 23 23));border-bottom:1px solid var(--snice-color-border,rgb(226 226 226));transition:background-color .15s}.cell{display:flex;align-items:center;border-right:1px solid var(--snice-color-border,rgb(226 226 226));min-height:2.5rem;min-width:6.25rem;flex:1;word-wrap:break-word;overflow:hidden;color:var(--snice-color-text,rgb(23 23 23))}.cell:last-child{border-right:none}.cell--checkbox{width:3rem;min-width:3rem;max-width:3rem;padding:.75rem;justify-content:center}.row-checkbox{width:1rem;height:1rem;cursor:pointer;margin:0;display:block;accent-color:var(--snice-color-primary,rgb(37 99 235))}.cells-container{display:flex;flex:1;align-items:stretch}.cell--text{text-align:left}.cell--accounting,.cell--currency,.cell--fraction,.cell--number,.cell--percent,.cell--scientific{text-align:right;font-variant-numeric:tabular-nums}.cell--date{min-width:8rem;font-variant-numeric:tabular-nums}.cell--boolean{text-align:center;font-size:1rem}.cell--rating{text-align:center;min-width:6rem}.cell--progress{min-width:8rem}.cell--sparkline{text-align:center;min-width:6rem}.cell--duration,.cell--filesize{text-align:right;font-variant-numeric:tabular-nums}:host(.row--hoverable) .row-container:hover{background-color:var(--snice-color-surface-hover,rgb(243 244 246))}:host(.row--clickable) .row-container{cursor:pointer}:host(.row--clickable) .row-container:hover{background-color:var(--snice-color-surface-hover,rgb(243 244 246))}:host(.row--selected) .row-container{background-color:var(--snice-color-primary-subtle,rgb(239 246 255));box-shadow:inset 2px 0 0 0 var(--snice-color-primary,rgb(37 99 235))}:host(.row--selected.row--hoverable) .row-container:hover{background-color:var(--snice-color-primary-subtle-hover,var(--snice-color-primary-subtle,rgb(219 234 254)))}:host(.row--highlighted) .row-container{background-color:var(--snice-color-warning-subtle,rgb(254 249 195))!important;animation:2s ease-out row-highlight-fade}@keyframes row-highlight-fade{0%{background-color:var(--snice-color-warning-subtle-hover,rgb(254 252 232))}100%{background-color:var(--snice-color-warning-subtle,rgb(254 249 195))}}:host(:focus) .row-container{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(37 99 235 / .5));outline-offset:-2px}:host(.row--selectable){tabindex:0}:host(.row--striped) .row-container{background-color:var(--snice-table-stripe-bg,var(--snice-color-overlay-stripe,hsl(0 0% 0% / .02)))}:host(.row--bordered) .row-container{border-bottom:1px solid var(--snice-color-border,rgb(226 226 226))}:host(.row--small) .cell{padding:.5rem .75rem;min-height:2rem;font-size:.75rem}:host(.row--small) .row-container{min-height:2rem}:host(.row--large) .cell{padding:1rem 1.25rem;min-height:3.5rem;font-size:1rem}:host(.row--large) .row-container{min-height:3.5rem}@media (max-width:768px){.cell{padding:.5rem .75rem;font-size:.875rem}.cell--checkbox{width:2.5rem;min-width:2.5rem;max-width:2.5rem;padding:.5rem}.row-checkbox{width:.875rem;height:.875rem}}:host(.row--loading) .row-container{opacity:.6;pointer-events:none}:host(.row--loading) .row-container::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,var(--snice-color-surface,rgb(255 255 255 / .6)),transparent);animation:1.5s infinite loading-shimmer}@keyframes loading-shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@media (prefers-reduced-motion:reduce){.row-container{transition:none}:host(.row--highlighted) .row-container{animation:none;background-color:var(--snice-color-warning-subtle,rgb(254 249 195))!important}:host(.row--loading) .row-container::after{animation:none}}@media (prefers-contrast:high){.cell{border-right:1px solid}.row-container{border-bottom:1px solid}:host(.row--selected) .row-container{border:2px solid}}";
|
|
33
34
|
|
|
34
35
|
let SniceRow = (() => {
|
|
35
36
|
let _classDecorators = [element('snice-row')];
|
|
@@ -282,19 +283,12 @@ let SniceRow = (() => {
|
|
|
282
283
|
<div class="cell cell--${column.type}" part="cell" style="${this.getCellStyles(column)}">
|
|
283
284
|
${unsafeHTML(`<${cellComponent}
|
|
284
285
|
type="${column.type}"
|
|
285
|
-
align="${column.align ||
|
|
286
|
+
align="${column.align || defaultCellAlign(column.type)}"
|
|
286
287
|
data-column-index="${columnIndex}"
|
|
287
288
|
></${cellComponent}>`)}
|
|
288
289
|
</div>
|
|
289
290
|
`;
|
|
290
291
|
}
|
|
291
|
-
getDefaultAlign(type) {
|
|
292
|
-
if (['number', 'currency', 'percent', 'percentage', 'duration', 'filesize', 'accounting', 'scientific', 'fraction'].includes(type || ''))
|
|
293
|
-
return 'right';
|
|
294
|
-
if (['boolean', 'rating', 'image'].includes(type || ''))
|
|
295
|
-
return 'center';
|
|
296
|
-
return 'left';
|
|
297
|
-
}
|
|
298
292
|
applyCellPresentation(wrapper, column, value) {
|
|
299
293
|
if (!wrapper)
|
|
300
294
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snice-row.js","sources":["../../../components/table/snice-row.css?inline","../../../../components/table/snice-row.ts"],"sourcesContent":["export default \":host([hidden]){display:none}:host{display:block;width:100%;min-height:2.5rem}.row-container{display:flex;align-items:stretch;width:100%;min-height:2.5rem;background:0 0;color:var(--snice-color-text,rgb(23 23 23));border-bottom:1px solid var(--snice-color-border,rgb(226 226 226));transition:background-color .15s}.cell{display:flex;align-items:center;border-right:1px solid var(--snice-color-border,rgb(226 226 226));min-height:2.5rem;min-width:6.25rem;flex:1;word-wrap:break-word;overflow:hidden;color:var(--snice-color-text,rgb(23 23 23))}.cell:last-child{border-right:none}.cell--checkbox{width:3rem;min-width:3rem;max-width:3rem;padding:.75rem;justify-content:center}.row-checkbox{width:1rem;height:1rem;cursor:pointer;margin:0;display:block;accent-color:var(--snice-color-primary,rgb(37 99 235))}.cells-container{display:flex;flex:1;align-items:stretch}.cell--text{text-align:left}.cell--accounting,.cell--currency,.cell--fraction,.cell--number,.cell--percent,.cell--scientific{text-align:right;font-variant-numeric:tabular-nums}.cell--date{min-width:8rem;font-variant-numeric:tabular-nums}.cell--boolean{text-align:center;font-size:1rem}.cell--rating{text-align:center;min-width:6rem}.cell--progress{min-width:8rem}.cell--sparkline{text-align:center;min-width:6rem}.cell--duration,.cell--filesize{text-align:right;font-variant-numeric:tabular-nums}:host(.row--hoverable) .row-container:hover{background-color:var(--snice-color-surface-hover,rgb(243 244 246))}:host(.row--clickable) .row-container{cursor:pointer}:host(.row--clickable) .row-container:hover{background-color:var(--snice-color-surface-hover,rgb(243 244 246))}:host(.row--selected) .row-container{background-color:var(--snice-color-primary-subtle,rgb(239 246 255));box-shadow:inset 2px 0 0 0 var(--snice-color-primary,rgb(37 99 235))}:host(.row--selected.row--hoverable) .row-container:hover{background-color:var(--snice-color-primary-subtle-hover,var(--snice-color-primary-subtle,rgb(219 234 254)))}:host(.row--highlighted) .row-container{background-color:var(--snice-color-warning-subtle,rgb(254 249 195))!important;animation:2s ease-out row-highlight-fade}@keyframes row-highlight-fade{0%{background-color:var(--snice-color-warning-subtle-hover,rgb(254 252 232))}100%{background-color:var(--snice-color-warning-subtle,rgb(254 249 195))}}:host(:focus) .row-container{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(37 99 235 / .5));outline-offset:-2px}:host(.row--selectable){tabindex:0}:host(.row--striped) .row-container{background-color:var(--snice-color-surface-container-low,rgb(245 245 245))}:host(.row--bordered) .row-container{border-bottom:1px solid var(--snice-color-border,rgb(226 226 226))}:host(.row--small) .cell{padding:.5rem .75rem;min-height:2rem;font-size:.75rem}:host(.row--small) .row-container{min-height:2rem}:host(.row--large) .cell{padding:1rem 1.25rem;min-height:3.5rem;font-size:1rem}:host(.row--large) .row-container{min-height:3.5rem}@media (max-width:768px){.cell{padding:.5rem .75rem;font-size:.875rem}.cell--checkbox{width:2.5rem;min-width:2.5rem;max-width:2.5rem;padding:.5rem}.row-checkbox{width:.875rem;height:.875rem}}:host(.row--loading) .row-container{opacity:.6;pointer-events:none}:host(.row--loading) .row-container::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,var(--snice-color-surface,rgb(255 255 255 / .6)),transparent);animation:1.5s infinite loading-shimmer}@keyframes loading-shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@media (prefers-reduced-motion:reduce){.row-container{transition:none}:host(.row--highlighted) .row-container{animation:none;background-color:var(--snice-color-warning-subtle,rgb(254 249 195))!important}:host(.row--loading) .row-container::after{animation:none}}@media (prefers-contrast:high){.cell{border-right:1px solid}.row-container{border-bottom:1px solid}:host(.row--selected) .row-container{border:2px solid}}\";","import { element, property, watch, ready, dispatch, render, styles, html, css, unsafeHTML, on } from 'snice';\nimport cssContent from './snice-row.css?inline';\nimport type {\n SniceRowElement,\n ColumnDefinition,\n SniceCellElement\n} from './snice-table.types';\nimport './snice-cell';\nimport './snice-cell-text';\nimport './snice-cell-number';\nimport './snice-cell-date';\nimport './snice-cell-boolean';\nimport './snice-cell-rating';\nimport './snice-cell-progress';\nimport './snice-cell-duration';\nimport './snice-cell-filesize';\nimport './snice-cell-sparkline';\nimport './snice-cell-link';\nimport './snice-cell-actions';\nimport './snice-cell-tag';\nimport './snice-cell-image';\nimport './snice-cell-email';\nimport './snice-cell-phone';\nimport './snice-cell-status';\nimport './snice-cell-color';\nimport './snice-cell-json';\nimport './snice-cell-currency';\nimport './snice-cell-percentage';\nimport './snice-cell-location';\n\n@element('snice-row')\nexport class SniceRow extends HTMLElement implements SniceRowElement {\n @property({ type: Boolean, })\n selected: boolean = false;\n\n @property({ type: Boolean, })\n hoverable: boolean = true;\n\n @property({ type: Boolean, })\n clickable: boolean = false;\n\n @property({ type: Boolean, })\n selectable: boolean = false;\n\n /** Table-owned guard for declarative rows that remain visible but fail a\n * conditional selectability predicate. */\n @property({ type: Boolean, attribute: false })\n selectionDisabled: boolean = false;\n\n @property({ type: Object, attribute: false })\n data: any = {};\n\n // Extract data from data-* attributes - pass raw values, let cells handle conversion\n private extractDataFromAttributes() {\n const data: any = {};\n\n // Get all attribute names that start with data-\n const attrNames = this.getAttributeNames().filter(name =>\n name.startsWith('data-') && name !== 'data-column-index'\n );\n\n attrNames.forEach(attrName => {\n const key = attrName.slice(5); // Remove 'data-' prefix\n const value = this.getAttribute(attrName);\n if (value !== null) {\n data[key] = value; // Keep as raw string, let cells convert\n }\n });\n return data;\n }\n\n @property({ type: Number, })\n index: number = 0;\n\n @property({ type: Array, attribute: false })\n columns: ColumnDefinition[] = [];\n\n @render()\n render() {\n return html/*html*/`\n <div class=\"row-container\" part=\"container\" @click=${(e: MouseEvent) => this.handleRowClick(e)} @keydown=${(e: KeyboardEvent) => this.handleKeyDown(e)}>\n <if ${this.selectable}>\n ${this.renderCheckbox()}\n </if>\n <div class=\"cells-container\">\n <if ${this.columns && this.columns.length}>\n ${this.columns.map((column, columnIndex) => this.renderCell(column, columnIndex))}\n </if>\n <if ${!this.columns || !this.columns.length}>\n <!-- No columns set yet -->\n </if>\n </div>\n </div>\n `;\n }\n\n @styles()\n styles() {\n return css/*css*/`${cssContent}`;\n }\n\n @ready()\n init() {\n // Extract data from data-* attributes if data object is empty\n if (!this.data || Object.keys(this.data).length === 0) {\n this.data = this.extractDataFromAttributes();\n }\n this.updateRowAttributes();\n this.configureCells();\n }\n\n /**\n * The column's working value for this row: `valueGetter` runs for display\n * here exactly as it does on the table's own render path, so a column whose\n * key names a server field rather than a row field still paints.\n */\n private cellValue(column: ColumnDefinition): any {\n const raw = this.data?.[column.key];\n return column.valueGetter ? column.valueGetter(raw, this.data) : raw;\n }\n\n private configureCells() {\n if (!this.columns) {\n return;\n }\n\n this.columns.forEach((column, index) => {\n const cellElement = this.shadowRoot?.querySelector(`[data-column-index=\"${index}\"]`) as any;\n if (cellElement) {\n const value = this.cellValue(column);\n if (typeof column.renderCell === 'function') {\n const output = column.renderCell(value, this.data, column);\n const replacement = output instanceof HTMLElement ? output : document.createElement('span');\n if (!(output instanceof HTMLElement)) replacement.textContent = output == null ? '' : String(output);\n replacement.setAttribute('data-column-index', String(index));\n cellElement.replaceWith(replacement);\n this.applyCellPresentation(replacement.parentElement as HTMLElement, column, value);\n return;\n }\n\n const formatter = column.formatter || column.valueFormatter;\n cellElement.value = formatter ? String(formatter(value, this.data) ?? '') : value;\n cellElement.column = formatter\n ? { ...column, type: 'text', formatter: undefined, valueFormatter: undefined }\n : column;\n cellElement.rowData = this.data;\n this.applyCellPresentation(cellElement.parentElement as HTMLElement, column, value);\n\n // For sparkline cells, also set the data property if value is an array\n if (column.type === 'sparkline' && Array.isArray(value)) {\n cellElement.data = value;\n }\n }\n });\n }\n\n @watch('selected')\n updateSelection() {\n this.updateRowAttributes();\n const checkbox = this.shadowRoot?.querySelector('.row-checkbox') as HTMLInputElement;\n if (checkbox) {\n checkbox.checked = this.selected;\n }\n }\n\n @watch('hoverable', 'clickable', 'selectable', 'selectionDisabled')\n updateRowAttributes() {\n this.classList.toggle('row--hoverable', this.hoverable);\n this.classList.toggle('row--clickable', this.clickable);\n this.classList.toggle('row--selectable', this.selectable);\n this.classList.toggle('row--selection-disabled', this.selectionDisabled);\n this.classList.toggle('row--selected', this.selected);\n }\n\n @watch('data', 'columns')\n updateCells() {\n // Re-render is handled automatically by @render decorator\n // Just need to reconfigure cells after the template updates\n setTimeout(() => this.configureCells(), 0);\n }\n\n private handleRowClick(e: MouseEvent) {\n const target = e.target as HTMLElement;\n\n // Handle checkbox change separately\n if (target.matches('.row-checkbox')) {\n return; // Let the change event handle this\n }\n\n // Don't trigger row click if clicking on other interactive elements\n if (target.matches('button, a, .interactive')) {\n return;\n }\n\n if (this.clickable) {\n this.dispatchRowClick();\n }\n\n if (this.selectable && !this.selectionDisabled) {\n this.toggleSelection();\n }\n }\n\n private handleChange(e: Event) {\n const target = e.target as HTMLElement;\n if (!target.matches('.row-checkbox')) return;\n\n const checkbox = target as HTMLInputElement;\n if (this.selectionDisabled) {\n checkbox.checked = this.selected;\n return;\n }\n this.selected = checkbox.checked;\n this.dispatchRowSelect();\n }\n\n private handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n\n if (this.selectable && !this.selectionDisabled) {\n this.toggleSelection();\n } else if (this.clickable) {\n this.dispatchRowClick();\n }\n }\n }\n\n @on('mouseenter')\n private handleRowHover() {\n this.dispatchRowHover();\n }\n\n private renderCheckbox() {\n return html/*html*/`\n <div class=\"cell cell--checkbox\" part=\"checkbox-cell\">\n <input\n type=\"checkbox\"\n class=\"row-checkbox\"\n ?checked=${this.selected}\n ?disabled=${this.selectionDisabled}\n tabindex=\"-1\"\n @change=${(e: Event) => this.handleChange(e)}\n />\n </div>\n `;\n }\n\n private renderCell(column: ColumnDefinition, columnIndex: number) {\n const cellComponent = this.getCellComponent(\n column.formatter || column.valueFormatter ? 'text' : column.type\n );\n\n return html/*html*/`\n <div class=\"cell cell--${column.type}\" part=\"cell\" style=\"${this.getCellStyles(column)}\">\n ${unsafeHTML(`<${cellComponent}\n type=\"${column.type}\"\n align=\"${column.align || this.getDefaultAlign(column.type)}\"\n data-column-index=\"${columnIndex}\"\n ></${cellComponent}>`)}\n </div>\n `;\n }\n\n private getDefaultAlign(type?: string): 'left' | 'center' | 'right' {\n if (['number', 'currency', 'percent', 'percentage', 'duration', 'filesize', 'accounting', 'scientific', 'fraction'].includes(type || '')) return 'right';\n if (['boolean', 'rating', 'image'].includes(type || '')) return 'center';\n return 'left';\n }\n\n private applyCellPresentation(wrapper: HTMLElement | null, column: ColumnDefinition, value: any) {\n if (!wrapper) return;\n const applyStyle = (style?: ColumnDefinition['style']) => {\n if (!style) return;\n Object.assign(wrapper.style, style);\n };\n applyStyle(column.style);\n for (const rule of column.conditionalFormats || []) {\n if (!rule.condition(value, this.data)) continue;\n applyStyle(rule.style);\n if (rule.className) wrapper.classList.add(rule.className);\n break;\n }\n if (column.tooltip) {\n wrapper.title = typeof column.tooltip === 'function'\n ? column.tooltip(value, this.data)\n : (value == null ? '' : String(value));\n }\n }\n\n private getCellComponent(type: string | undefined): string {\n switch (type) {\n case 'text':\n return 'snice-cell-text';\n case 'number':\n case 'accounting':\n case 'scientific':\n case 'fraction':\n return 'snice-cell-number';\n case 'date':\n return 'snice-cell-date';\n case 'boolean':\n return 'snice-cell-boolean';\n case 'sparkline':\n return 'snice-cell-sparkline';\n case 'rating':\n return 'snice-cell-rating';\n case 'progress':\n return 'snice-cell-progress';\n case 'duration':\n return 'snice-cell-duration';\n case 'filesize':\n return 'snice-cell-filesize';\n case 'link':\n case 'url':\n return 'snice-cell-link';\n case 'actions':\n return 'snice-cell-actions';\n case 'tag':\n case 'tags':\n case 'badge':\n case 'badges':\n return 'snice-cell-tag';\n case 'image':\n case 'avatar':\n case 'thumbnail':\n return 'snice-cell-image';\n case 'email':\n return 'snice-cell-email';\n case 'phone':\n case 'tel':\n case 'telephone':\n return 'snice-cell-phone';\n case 'status':\n return 'snice-cell-status';\n case 'color':\n return 'snice-cell-color';\n case 'json':\n case 'object':\n return 'snice-cell-json';\n case 'currency':\n case 'money':\n return 'snice-cell-currency';\n case 'percent':\n case 'percentage':\n return 'snice-cell-percentage';\n case 'location':\n case 'address':\n case 'coordinates':\n return 'snice-cell-location';\n case 'custom':\n default:\n return 'snice-cell';\n }\n }\n\n private getCellStyles(column: ColumnDefinition): string {\n let styles = [];\n\n if (column.width) {\n styles.push(`width: ${column.width}`);\n styles.push(`min-width: ${column.width}`);\n styles.push(`max-width: ${column.width}`);\n }\n\n if (column.align) {\n styles.push(`text-align: ${column.align}`);\n }\n\n return styles.join('; ');\n }\n\n private escapeHtml(value: any): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n const str = String(value);\n const div = document.createElement('div');\n div.textContent = str;\n return div.innerHTML;\n }\n\n private toggleSelection() {\n this.selected = !this.selected;\n this.dispatchRowSelect();\n }\n\n @dispatch('row-click', { bubbles: true, composed: true })\n private dispatchRowClick() {\n return {\n data: this.data,\n index: this.index,\n element: this\n };\n }\n\n @dispatch('row-select', { bubbles: true, composed: true })\n private dispatchRowSelect() {\n return {\n selected: this.selected,\n data: this.data,\n index: this.index,\n element: this\n };\n }\n\n @dispatch('row-hover', { bubbles: true, composed: true })\n private dispatchRowHover() {\n return {\n data: this.data,\n index: this.index,\n element: this\n };\n }\n\n // Public API methods\n select() {\n if (this.selectionDisabled || !this.selectable) return;\n this.selected = true;\n this.dispatchRowSelect();\n }\n\n deselect() {\n this.selected = false;\n this.dispatchRowSelect();\n }\n\n focusRow() {\n super.focus();\n this.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n\n getCellValue(columnKey: string): any {\n return this.data[columnKey];\n }\n\n setCellValue(columnKey: string, value: any) {\n this.data = { ...this.data, [columnKey]: value };\n this.updateCells();\n }\n\n getCellElement(columnKey: string): SniceCellElement | null {\n const column = this.columns.find(col => col.key === columnKey);\n if (!column) return null;\n\n const columnIndex = this.columns.indexOf(column);\n return this.shadowRoot?.querySelector(`[data-column-index=\"${columnIndex}\"]`) as SniceCellElement || null;\n }\n\n // Highlight row temporarily (useful for showing updates)\n highlight(duration: number = 2000) {\n this.classList.add('row--highlighted');\n setTimeout(() => {\n this.classList.remove('row--highlighted');\n }, duration);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snice-row.js","sources":["../../../components/table/snice-row.css?inline","../../../../components/table/snice-row.ts"],"sourcesContent":["export default \":host([hidden]){display:none}:host{display:block;width:100%;min-height:2.5rem}.row-container{display:flex;align-items:stretch;width:100%;min-height:2.5rem;background:0 0;color:var(--snice-color-text,rgb(23 23 23));border-bottom:1px solid var(--snice-color-border,rgb(226 226 226));transition:background-color .15s}.cell{display:flex;align-items:center;border-right:1px solid var(--snice-color-border,rgb(226 226 226));min-height:2.5rem;min-width:6.25rem;flex:1;word-wrap:break-word;overflow:hidden;color:var(--snice-color-text,rgb(23 23 23))}.cell:last-child{border-right:none}.cell--checkbox{width:3rem;min-width:3rem;max-width:3rem;padding:.75rem;justify-content:center}.row-checkbox{width:1rem;height:1rem;cursor:pointer;margin:0;display:block;accent-color:var(--snice-color-primary,rgb(37 99 235))}.cells-container{display:flex;flex:1;align-items:stretch}.cell--text{text-align:left}.cell--accounting,.cell--currency,.cell--fraction,.cell--number,.cell--percent,.cell--scientific{text-align:right;font-variant-numeric:tabular-nums}.cell--date{min-width:8rem;font-variant-numeric:tabular-nums}.cell--boolean{text-align:center;font-size:1rem}.cell--rating{text-align:center;min-width:6rem}.cell--progress{min-width:8rem}.cell--sparkline{text-align:center;min-width:6rem}.cell--duration,.cell--filesize{text-align:right;font-variant-numeric:tabular-nums}:host(.row--hoverable) .row-container:hover{background-color:var(--snice-color-surface-hover,rgb(243 244 246))}:host(.row--clickable) .row-container{cursor:pointer}:host(.row--clickable) .row-container:hover{background-color:var(--snice-color-surface-hover,rgb(243 244 246))}:host(.row--selected) .row-container{background-color:var(--snice-color-primary-subtle,rgb(239 246 255));box-shadow:inset 2px 0 0 0 var(--snice-color-primary,rgb(37 99 235))}:host(.row--selected.row--hoverable) .row-container:hover{background-color:var(--snice-color-primary-subtle-hover,var(--snice-color-primary-subtle,rgb(219 234 254)))}:host(.row--highlighted) .row-container{background-color:var(--snice-color-warning-subtle,rgb(254 249 195))!important;animation:2s ease-out row-highlight-fade}@keyframes row-highlight-fade{0%{background-color:var(--snice-color-warning-subtle-hover,rgb(254 252 232))}100%{background-color:var(--snice-color-warning-subtle,rgb(254 249 195))}}:host(:focus) .row-container{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(37 99 235 / .5));outline-offset:-2px}:host(.row--selectable){tabindex:0}:host(.row--striped) .row-container{background-color:var(--snice-table-stripe-bg,var(--snice-color-overlay-stripe,hsl(0 0% 0% / .02)))}:host(.row--bordered) .row-container{border-bottom:1px solid var(--snice-color-border,rgb(226 226 226))}:host(.row--small) .cell{padding:.5rem .75rem;min-height:2rem;font-size:.75rem}:host(.row--small) .row-container{min-height:2rem}:host(.row--large) .cell{padding:1rem 1.25rem;min-height:3.5rem;font-size:1rem}:host(.row--large) .row-container{min-height:3.5rem}@media (max-width:768px){.cell{padding:.5rem .75rem;font-size:.875rem}.cell--checkbox{width:2.5rem;min-width:2.5rem;max-width:2.5rem;padding:.5rem}.row-checkbox{width:.875rem;height:.875rem}}:host(.row--loading) .row-container{opacity:.6;pointer-events:none}:host(.row--loading) .row-container::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,var(--snice-color-surface,rgb(255 255 255 / .6)),transparent);animation:1.5s infinite loading-shimmer}@keyframes loading-shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@media (prefers-reduced-motion:reduce){.row-container{transition:none}:host(.row--highlighted) .row-container{animation:none;background-color:var(--snice-color-warning-subtle,rgb(254 249 195))!important}:host(.row--loading) .row-container::after{animation:none}}@media (prefers-contrast:high){.cell{border-right:1px solid}.row-container{border-bottom:1px solid}:host(.row--selected) .row-container{border:2px solid}}\";","import { element, property, watch, ready, dispatch, render, styles, html, css, unsafeHTML, on } from 'snice';\nimport cssContent from './snice-row.css?inline';\nimport type {\n SniceRowElement,\n ColumnDefinition,\n SniceCellElement\n} from './snice-table.types';\nimport './snice-cell';\nimport './snice-cell-text';\nimport './snice-cell-number';\nimport './snice-cell-date';\nimport './snice-cell-boolean';\nimport './snice-cell-rating';\nimport './snice-cell-progress';\nimport './snice-cell-duration';\nimport './snice-cell-filesize';\nimport './snice-cell-sparkline';\nimport './snice-cell-link';\nimport './snice-cell-actions';\nimport './snice-cell-tag';\nimport './snice-cell-image';\nimport './snice-cell-email';\nimport './snice-cell-phone';\nimport './snice-cell-status';\nimport './snice-cell-color';\nimport './snice-cell-json';\nimport './snice-cell-currency';\nimport './snice-cell-percentage';\nimport './snice-cell-location';\nimport { defaultCellAlign } from './table-cell-presentation';\n\n@element('snice-row')\nexport class SniceRow extends HTMLElement implements SniceRowElement {\n @property({ type: Boolean, })\n selected: boolean = false;\n\n @property({ type: Boolean, })\n hoverable: boolean = true;\n\n @property({ type: Boolean, })\n clickable: boolean = false;\n\n @property({ type: Boolean, })\n selectable: boolean = false;\n\n /** Table-owned guard for declarative rows that remain visible but fail a\n * conditional selectability predicate. */\n @property({ type: Boolean, attribute: false })\n selectionDisabled: boolean = false;\n\n @property({ type: Object, attribute: false })\n data: any = {};\n\n // Extract data from data-* attributes - pass raw values, let cells handle conversion\n private extractDataFromAttributes() {\n const data: any = {};\n\n // Get all attribute names that start with data-\n const attrNames = this.getAttributeNames().filter(name =>\n name.startsWith('data-') && name !== 'data-column-index'\n );\n\n attrNames.forEach(attrName => {\n const key = attrName.slice(5); // Remove 'data-' prefix\n const value = this.getAttribute(attrName);\n if (value !== null) {\n data[key] = value; // Keep as raw string, let cells convert\n }\n });\n return data;\n }\n\n @property({ type: Number, })\n index: number = 0;\n\n @property({ type: Array, attribute: false })\n columns: ColumnDefinition[] = [];\n\n @render()\n render() {\n return html/*html*/`\n <div class=\"row-container\" part=\"container\" @click=${(e: MouseEvent) => this.handleRowClick(e)} @keydown=${(e: KeyboardEvent) => this.handleKeyDown(e)}>\n <if ${this.selectable}>\n ${this.renderCheckbox()}\n </if>\n <div class=\"cells-container\">\n <if ${this.columns && this.columns.length}>\n ${this.columns.map((column, columnIndex) => this.renderCell(column, columnIndex))}\n </if>\n <if ${!this.columns || !this.columns.length}>\n <!-- No columns set yet -->\n </if>\n </div>\n </div>\n `;\n }\n\n @styles()\n styles() {\n return css/*css*/`${cssContent}`;\n }\n\n @ready()\n init() {\n // Extract data from data-* attributes if data object is empty\n if (!this.data || Object.keys(this.data).length === 0) {\n this.data = this.extractDataFromAttributes();\n }\n this.updateRowAttributes();\n this.configureCells();\n }\n\n /**\n * The column's working value for this row: `valueGetter` runs for display\n * here exactly as it does on the table's own render path, so a column whose\n * key names a server field rather than a row field still paints.\n */\n private cellValue(column: ColumnDefinition): any {\n const raw = this.data?.[column.key];\n return column.valueGetter ? column.valueGetter(raw, this.data) : raw;\n }\n\n private configureCells() {\n if (!this.columns) {\n return;\n }\n\n this.columns.forEach((column, index) => {\n const cellElement = this.shadowRoot?.querySelector(`[data-column-index=\"${index}\"]`) as any;\n if (cellElement) {\n const value = this.cellValue(column);\n if (typeof column.renderCell === 'function') {\n const output = column.renderCell(value, this.data, column);\n const replacement = output instanceof HTMLElement ? output : document.createElement('span');\n if (!(output instanceof HTMLElement)) replacement.textContent = output == null ? '' : String(output);\n replacement.setAttribute('data-column-index', String(index));\n cellElement.replaceWith(replacement);\n this.applyCellPresentation(replacement.parentElement as HTMLElement, column, value);\n return;\n }\n\n const formatter = column.formatter || column.valueFormatter;\n cellElement.value = formatter ? String(formatter(value, this.data) ?? '') : value;\n cellElement.column = formatter\n ? { ...column, type: 'text', formatter: undefined, valueFormatter: undefined }\n : column;\n cellElement.rowData = this.data;\n this.applyCellPresentation(cellElement.parentElement as HTMLElement, column, value);\n\n // For sparkline cells, also set the data property if value is an array\n if (column.type === 'sparkline' && Array.isArray(value)) {\n cellElement.data = value;\n }\n }\n });\n }\n\n @watch('selected')\n updateSelection() {\n this.updateRowAttributes();\n const checkbox = this.shadowRoot?.querySelector('.row-checkbox') as HTMLInputElement;\n if (checkbox) {\n checkbox.checked = this.selected;\n }\n }\n\n @watch('hoverable', 'clickable', 'selectable', 'selectionDisabled')\n updateRowAttributes() {\n this.classList.toggle('row--hoverable', this.hoverable);\n this.classList.toggle('row--clickable', this.clickable);\n this.classList.toggle('row--selectable', this.selectable);\n this.classList.toggle('row--selection-disabled', this.selectionDisabled);\n this.classList.toggle('row--selected', this.selected);\n }\n\n @watch('data', 'columns')\n updateCells() {\n // Re-render is handled automatically by @render decorator\n // Just need to reconfigure cells after the template updates\n setTimeout(() => this.configureCells(), 0);\n }\n\n private handleRowClick(e: MouseEvent) {\n const target = e.target as HTMLElement;\n\n // Handle checkbox change separately\n if (target.matches('.row-checkbox')) {\n return; // Let the change event handle this\n }\n\n // Don't trigger row click if clicking on other interactive elements\n if (target.matches('button, a, .interactive')) {\n return;\n }\n\n if (this.clickable) {\n this.dispatchRowClick();\n }\n\n if (this.selectable && !this.selectionDisabled) {\n this.toggleSelection();\n }\n }\n\n private handleChange(e: Event) {\n const target = e.target as HTMLElement;\n if (!target.matches('.row-checkbox')) return;\n\n const checkbox = target as HTMLInputElement;\n if (this.selectionDisabled) {\n checkbox.checked = this.selected;\n return;\n }\n this.selected = checkbox.checked;\n this.dispatchRowSelect();\n }\n\n private handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n\n if (this.selectable && !this.selectionDisabled) {\n this.toggleSelection();\n } else if (this.clickable) {\n this.dispatchRowClick();\n }\n }\n }\n\n @on('mouseenter')\n private handleRowHover() {\n this.dispatchRowHover();\n }\n\n private renderCheckbox() {\n return html/*html*/`\n <div class=\"cell cell--checkbox\" part=\"checkbox-cell\">\n <input\n type=\"checkbox\"\n class=\"row-checkbox\"\n ?checked=${this.selected}\n ?disabled=${this.selectionDisabled}\n tabindex=\"-1\"\n @change=${(e: Event) => this.handleChange(e)}\n />\n </div>\n `;\n }\n\n private renderCell(column: ColumnDefinition, columnIndex: number) {\n const cellComponent = this.getCellComponent(\n column.formatter || column.valueFormatter ? 'text' : column.type\n );\n\n return html/*html*/`\n <div class=\"cell cell--${column.type}\" part=\"cell\" style=\"${this.getCellStyles(column)}\">\n ${unsafeHTML(`<${cellComponent}\n type=\"${column.type}\"\n align=\"${column.align || defaultCellAlign(column.type)}\"\n data-column-index=\"${columnIndex}\"\n ></${cellComponent}>`)}\n </div>\n `;\n }\n\n private applyCellPresentation(wrapper: HTMLElement | null, column: ColumnDefinition, value: any) {\n if (!wrapper) return;\n const applyStyle = (style?: ColumnDefinition['style']) => {\n if (!style) return;\n Object.assign(wrapper.style, style);\n };\n applyStyle(column.style);\n for (const rule of column.conditionalFormats || []) {\n if (!rule.condition(value, this.data)) continue;\n applyStyle(rule.style);\n if (rule.className) wrapper.classList.add(rule.className);\n break;\n }\n if (column.tooltip) {\n wrapper.title = typeof column.tooltip === 'function'\n ? column.tooltip(value, this.data)\n : (value == null ? '' : String(value));\n }\n }\n\n private getCellComponent(type: string | undefined): string {\n switch (type) {\n case 'text':\n return 'snice-cell-text';\n case 'number':\n case 'accounting':\n case 'scientific':\n case 'fraction':\n return 'snice-cell-number';\n case 'date':\n return 'snice-cell-date';\n case 'boolean':\n return 'snice-cell-boolean';\n case 'sparkline':\n return 'snice-cell-sparkline';\n case 'rating':\n return 'snice-cell-rating';\n case 'progress':\n return 'snice-cell-progress';\n case 'duration':\n return 'snice-cell-duration';\n case 'filesize':\n return 'snice-cell-filesize';\n case 'link':\n case 'url':\n return 'snice-cell-link';\n case 'actions':\n return 'snice-cell-actions';\n case 'tag':\n case 'tags':\n case 'badge':\n case 'badges':\n return 'snice-cell-tag';\n case 'image':\n case 'avatar':\n case 'thumbnail':\n return 'snice-cell-image';\n case 'email':\n return 'snice-cell-email';\n case 'phone':\n case 'tel':\n case 'telephone':\n return 'snice-cell-phone';\n case 'status':\n return 'snice-cell-status';\n case 'color':\n return 'snice-cell-color';\n case 'json':\n case 'object':\n return 'snice-cell-json';\n case 'currency':\n case 'money':\n return 'snice-cell-currency';\n case 'percent':\n case 'percentage':\n return 'snice-cell-percentage';\n case 'location':\n case 'address':\n case 'coordinates':\n return 'snice-cell-location';\n case 'custom':\n default:\n return 'snice-cell';\n }\n }\n\n private getCellStyles(column: ColumnDefinition): string {\n let styles = [];\n\n if (column.width) {\n styles.push(`width: ${column.width}`);\n styles.push(`min-width: ${column.width}`);\n styles.push(`max-width: ${column.width}`);\n }\n\n if (column.align) {\n styles.push(`text-align: ${column.align}`);\n }\n\n return styles.join('; ');\n }\n\n private escapeHtml(value: any): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n const str = String(value);\n const div = document.createElement('div');\n div.textContent = str;\n return div.innerHTML;\n }\n\n private toggleSelection() {\n this.selected = !this.selected;\n this.dispatchRowSelect();\n }\n\n @dispatch('row-click', { bubbles: true, composed: true })\n private dispatchRowClick() {\n return {\n data: this.data,\n index: this.index,\n element: this\n };\n }\n\n @dispatch('row-select', { bubbles: true, composed: true })\n private dispatchRowSelect() {\n return {\n selected: this.selected,\n data: this.data,\n index: this.index,\n element: this\n };\n }\n\n @dispatch('row-hover', { bubbles: true, composed: true })\n private dispatchRowHover() {\n return {\n data: this.data,\n index: this.index,\n element: this\n };\n }\n\n // Public API methods\n select() {\n if (this.selectionDisabled || !this.selectable) return;\n this.selected = true;\n this.dispatchRowSelect();\n }\n\n deselect() {\n this.selected = false;\n this.dispatchRowSelect();\n }\n\n focusRow() {\n super.focus();\n this.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n\n getCellValue(columnKey: string): any {\n return this.data[columnKey];\n }\n\n setCellValue(columnKey: string, value: any) {\n this.data = { ...this.data, [columnKey]: value };\n this.updateCells();\n }\n\n getCellElement(columnKey: string): SniceCellElement | null {\n const column = this.columns.find(col => col.key === columnKey);\n if (!column) return null;\n\n const columnIndex = this.columns.indexOf(column);\n return this.shadowRoot?.querySelector(`[data-column-index=\"${columnIndex}\"]`) as SniceCellElement || null;\n }\n\n // Highlight row temporarily (useful for showing updates)\n highlight(duration: number = 2000) {\n this.classList.add('row--highlighted');\n setTimeout(() => {\n this.classList.remove('row--highlighted');\n }, duration);\n }\n}\n"],"names":[],"mappings":"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"}
|