@aquera/nile-elements 1.8.2 → 1.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +6 -0
  2. package/dist/index.js +87 -43
  3. package/dist/nile-detail/nile-detail.cjs.js +1 -1
  4. package/dist/nile-detail/nile-detail.cjs.js.map +1 -1
  5. package/dist/nile-detail/nile-detail.css.cjs.js +1 -1
  6. package/dist/nile-detail/nile-detail.css.cjs.js.map +1 -1
  7. package/dist/nile-detail/nile-detail.css.esm.js +37 -1
  8. package/dist/nile-detail/nile-detail.esm.js +17 -9
  9. package/dist/nile-detail/nile-detail.utils.cjs.js +1 -1
  10. package/dist/nile-detail/nile-detail.utils.cjs.js.map +1 -1
  11. package/dist/nile-detail/nile-detail.utils.esm.js +1 -1
  12. package/dist/nile-tree/nile-tree.css.cjs.js +1 -1
  13. package/dist/nile-tree/nile-tree.css.cjs.js.map +1 -1
  14. package/dist/nile-tree/nile-tree.css.esm.js +1 -1
  15. package/dist/nile-tree-item/nile-tree-item.css.cjs.js +1 -1
  16. package/dist/nile-tree-item/nile-tree-item.css.cjs.js.map +1 -1
  17. package/dist/nile-tree-item/nile-tree-item.css.esm.js +10 -10
  18. package/dist/src/nile-detail/nile-detail.css.js +37 -1
  19. package/dist/src/nile-detail/nile-detail.css.js.map +1 -1
  20. package/dist/src/nile-detail/nile-detail.d.ts +15 -0
  21. package/dist/src/nile-detail/nile-detail.js +85 -4
  22. package/dist/src/nile-detail/nile-detail.js.map +1 -1
  23. package/dist/src/nile-detail/nile-detail.utils.d.ts +1 -0
  24. package/dist/src/nile-detail/nile-detail.utils.js +34 -4
  25. package/dist/src/nile-detail/nile-detail.utils.js.map +1 -1
  26. package/dist/src/nile-tree/nile-tree.css.js +1 -1
  27. package/dist/src/nile-tree/nile-tree.css.js.map +1 -1
  28. package/dist/src/nile-tree-item/nile-tree-item.css.js +10 -10
  29. package/dist/src/nile-tree-item/nile-tree-item.css.js.map +1 -1
  30. package/dist/src/version.js +1 -1
  31. package/dist/src/version.js.map +1 -1
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +1 -1
  34. package/src/nile-detail/nile-detail.css.ts +37 -1
  35. package/src/nile-detail/nile-detail.ts +87 -3
  36. package/src/nile-detail/nile-detail.utils.ts +34 -4
  37. package/src/nile-tree/nile-tree.css.ts +1 -1
  38. package/src/nile-tree-item/nile-tree-item.css.ts +10 -10
  39. package/vscode-html-custom-data.json +10 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nile-detail.js","sourceRoot":"","sources":["../../../src/nile-detail/nile-detail.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\nimport { styles } from './nile-detail.css';\nimport NileElement from '../internal/nile-element';\nimport { watch } from '../internal/watch';\nimport {\n animateShow,\n animateHide,\n showDetail,\n hideDetail,\n handleSummaryClick,\n handleSummaryKeyDown,\n} from './nile-detail.utils';\nimport '../nile-checkbox/index';\nimport '../nile-input/index';\nimport '../nile-link/index';\nimport '../nile-icon/index';\nimport '../nile-lite-tooltip/index';\nimport { VirtualizerController } from '@tanstack/lit-virtual';\nimport type { CSSResultGroup } from 'lit';\n\nexport type NileDetailVariant = 'default' | 'selection' | 'light' | 'select-light';\n\nexport interface NileDetailSelectionItem {\n value: string;\n label?: string;\n description?: string;\n prefix?: string;\n suffix?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport interface NileDetailRenderItemConfig {\n getDisplayText: (item: any) => string;\n getValue?: (item: any) => string;\n getSearchText?: (item: any) => string;\n getDescription?: (item: any) => string;\n getPrefix?: (item: any) => string;\n getSuffix?: (item: any) => string;\n getDisabled?: (item: any) => boolean;\n getClassName?: (item: any) => string;\n}\n\ntype SelectionItem = string | NileDetailSelectionItem | Record<string, any>;\n\nconst IS_BROWSER = typeof window !== 'undefined';\n\nexport interface NileDetailSelectionConfig {\n // Identity\n variant?: NileDetailVariant;\n heading?: string;\n description?: string;\n itemsLabel?: string;\n\n // Items / selection\n items?: SelectionItem[];\n selected?: string[];\n renderItemConfig?: NileDetailRenderItemConfig;\n allowHtmlLabel?: boolean;\n\n // Layout\n layout?: {\n orientation?: 'horizontal' | 'vertical' | 'both';\n gridRows?: number;\n gridColumns?: number;\n matrixColumns?: number;\n minColumnWidth?: string;\n laneHeight?: number;\n maxHeight?: string;\n expandIconPlacement?: 'left' | 'right';\n };\n\n // Search\n search?: {\n placeholder?: string;\n disableLocal?: boolean;\n };\n\n // Virtualization\n virtualization?: {\n enabled?: boolean;\n threshold?: number;\n overscan?: number;\n };\n\n // Pagination / infinite scroll\n pagination?: {\n totalCount?: number;\n pageSize?: number;\n fetchPage?: (offset: number, limit: number) => Promise<SelectionItem[]>;\n placeholderLabel?: string;\n };\n\n // Action labels\n labels?: {\n restore?: string;\n clear?: string;\n selectedOnly?: string;\n showAll?: string;\n };\n\n showSelectedToggle?: boolean;\n\n // Inherited / passthrough\n open?: boolean;\n disabled?: boolean;\n}\n\n@customElement('nile-detail')\nexport class NileDetail extends NileElement {\n\n static styles: CSSResultGroup = styles;\n\n @query('details') detail: HTMLDetailsElement;\n @query('summary') header: HTMLElement;\n @query('.detail__body') body: HTMLElement;\n\n @property({ attribute: true, type: Boolean, reflect: true }) open = false;\n\n @property({ attribute: true, type: String, reflect: true }) heading = '';\n\n @property({ attribute: true, type: String, reflect: true }) description = '';\n\n @property({ attribute: true, reflect: true }) expandIconPlacement: 'left' | 'right' = 'right';\n\n @property({ attribute: true, type: Boolean, reflect: true }) disabled = false;\n\n @property({ attribute: true, type: String, reflect: true }) variant: NileDetailVariant = 'default';\n\n @property({ attribute: false, type: Array }) items: SelectionItem[] = [];\n\n @property({ attribute: false, type: Array }) selected: string[] = [];\n\n @property({ attribute: false }) renderItemConfig?: NileDetailRenderItemConfig;\n\n @property({ attribute: 'allow-html-label', type: Boolean }) allowHtmlLabel = false;\n\n @property({ attribute: 'disable-local-search', type: Boolean }) disableLocalSearch = false;\n\n @property({ attribute: 'total-count', type: Number }) totalCount?: number;\n\n @property({ attribute: 'page-size', type: Number }) pageSize = 200;\n\n @property({ attribute: false }) fetchPage?: (offset: number, limit: number) => Promise<SelectionItem[]>;\n\n @property({ attribute: 'placeholder-label', type: String }) placeholderLabel = 'Loading…';\n\n @property({ attribute: false }) config?: NileDetailSelectionConfig;\n\n @property({ attribute: 'search-placeholder', type: String }) searchPlaceholder = 'Search...';\n\n @property({ attribute: 'items-label', type: String }) itemsLabel = 'attributes';\n\n @property({ attribute: 'restore-label', type: String }) restoreLabel = 'Restore';\n\n @property({ attribute: 'clear-label', type: String }) clearLabel = 'Clear';\n\n @property({ attribute: 'grid-rows', type: Number }) gridRows = 6;\n\n @property({ attribute: 'grid-columns', type: Number }) gridColumns = 3;\n\n @property({ attribute: 'min-column-width', type: String }) minColumnWidth = '220px';\n\n @property({ attribute: 'lane-height', type: Number }) laneHeight = 32;\n\n @property({ attribute: true, type: String, reflect: true }) orientation: 'horizontal' | 'vertical' | 'both' = 'horizontal';\n\n @property({ attribute: 'max-height', type: String }) maxHeight = '320px';\n\n @property({ attribute: 'matrix-columns', type: Number }) matrixColumns = 20;\n\n @property({ attribute: true, type: Boolean }) virtualize = false;\n\n @property({ attribute: 'virtualize-threshold', type: Number }) virtualizeThreshold = 60;\n\n @property({ attribute: 'overscan', type: Number }) overscan = 4;\n\n @state() private _detailOpen = false;\n\n @state() private _hasSlottedContent = false;\n\n @state() private _searchTerm = '';\n\n @state() private _selectedSet: Set<string> = new Set();\n\n @state() private _showSelectedOnly = false;\n\n @property({ attribute: 'show-selected-toggle', type: Boolean, reflect: true }) showSelectedToggle = false;\n\n @property({ attribute: 'selected-only-label', type: String }) selectedOnlyLabel = 'Selected';\n\n @property({ attribute: 'show-all-label', type: String }) showAllLabel = 'Show all';\n\n private _restoreDefaults: string[] | null = null;\n\n private _gridResizeObserver: ResizeObserver | null = null;\n\n private _virtCtrl: VirtualizerController<HTMLElement, HTMLElement> | null = null;\n\n private _rowVirtCtrl: VirtualizerController<HTMLElement, HTMLElement> | null = null;\n\n private _colVirtCtrl: VirtualizerController<HTMLElement, HTMLElement> | null = null;\n\n private _pageCache: any = new Map();\n\n private _pendingPages: any = new Set();\n\n /** True for any variant that renders the selection UI/behavior. */\n private get _isSelectionVariant(): boolean {\n return this.variant === 'selection' || this.variant === 'select-light';\n }\n\n /** True for any variant that applies the light styling. */\n private get _isLightVariant(): boolean {\n return this.variant === 'light' || this.variant === 'select-light';\n }\n\n private get _isInfiniteMode(): boolean {\n return (\n this._isSelectionVariant &&\n typeof this.fetchPage === 'function' &&\n typeof this.totalCount === 'number' &&\n this.orientation !== 'both'\n );\n }\n\n private _effectiveTotalCount(): number {\n if (this._isInfiniteMode) return this.totalCount ?? 0;\n return this._filteredItems.length;\n }\n\n private _getItemAt(index: number): SelectionItem | undefined {\n if (!this._isInfiniteMode) return this._filteredItems[index];\n const pageSize = Math.max(1, this.pageSize);\n const pageIndex = Math.floor(index / pageSize);\n const page = this._pageCache.get(pageIndex);\n if (!page) return undefined;\n return page[index - pageIndex * pageSize];\n }\n\n private _scheduleFetchForRange(start: number, end: number) {\n if (!this._isInfiniteMode || !this.fetchPage) return;\n const pageSize = Math.max(1, this.pageSize);\n const total = this.totalCount ?? 0;\n if (total <= 0) return;\n\n const firstPage = Math.floor(start / pageSize);\n const lastPage = Math.floor(Math.min(end, total - 1) / pageSize);\n for (let p = firstPage; p <= lastPage; p++) {\n if (this._pageCache.has(p) || this._pendingPages.has(p)) continue;\n this._loadPage(p);\n }\n }\n\n private async _loadPage(pageIndex: number) {\n if (!this.fetchPage) return;\n const pageSize = Math.max(1, this.pageSize);\n const offset = pageIndex * pageSize;\n const total = this.totalCount ?? 0;\n const limit = Math.min(pageSize, Math.max(0, total - offset));\n if (limit <= 0) return;\n\n this._pendingPages.add(pageIndex);\n try {\n const rows = await this.fetchPage(offset, limit);\n this._pageCache.set(pageIndex, Array.isArray(rows) ? rows : []);\n this.dispatchEvent(\n new CustomEvent('nile-page-load', {\n detail: { pageIndex, offset, limit, rows: this._pageCache.get(pageIndex) },\n bubbles: true,\n composed: true,\n })\n );\n } catch (err) {\n this.dispatchEvent(\n new CustomEvent('nile-page-error', {\n detail: { pageIndex, offset, limit, error: err },\n bubbles: true,\n composed: true,\n })\n );\n } finally {\n this._pendingPages.delete(pageIndex);\n this.requestUpdate();\n }\n }\n\n /** Public: clear the page cache (use after a query change to refetch). */\n resetPages() {\n this._pageCache = new Map();\n this._pendingPages = new Set();\n this.requestUpdate();\n }\n\n private get _isVirtualized(): boolean {\n if (!IS_BROWSER) return false;\n if (this._isInfiniteMode) return true;\n return this._isSelectionVariant\n && (this.virtualize || this.items.length > this.virtualizeThreshold);\n }\n\n private get _columnWidthPx(): number {\n const parsed = parseInt(this.minColumnWidth, 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 220;\n }\n\n firstUpdated() {\n this._detailOpen = this.open;\n this.body.hidden = !this.open;\n this.body.style.height = this.open ? 'auto' : '0';\n this._syncSelectedFromProperty();\n if (this._restoreDefaults === null) {\n this._restoreDefaults = [...this._selectedSet];\n }\n this._setupGridResizeObserver();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._gridResizeObserver?.disconnect();\n this._gridResizeObserver = null;\n }\n\n updated(_changed: Map<string, unknown>) {\n if (this._isSelectionVariant) {\n this._setupGridResizeObserver();\n this._syncVirtualizer();\n this._scheduleTooltipOverflowCheck();\n }\n }\n\n private _syncVirtualizer() {\n if (!IS_BROWSER) return;\n if (!this._isVirtualized) {\n this._virtCtrl = null;\n this._rowVirtCtrl = null;\n this._colVirtCtrl = null;\n return;\n }\n const grid = this.shadowRoot?.querySelector('.detail__selection-grid') as HTMLElement | null;\n if (!grid) return;\n\n if (this.orientation === 'both') {\n this._virtCtrl = null;\n this._syncBothVirtualizers();\n return;\n }\n\n // Reset 2-axis controllers if we switched away from 'both'.\n this._rowVirtCtrl = null;\n this._colVirtCtrl = null;\n\n const count = this._effectiveTotalCount();\n const isVertical = this.orientation === 'vertical';\n const lanes = Math.max(1, isVertical ? this.gridColumns : this.gridRows);\n const itemSize = isVertical ? this.laneHeight : this._columnWidthPx;\n\n if (!this._virtCtrl) {\n this._virtCtrl = new VirtualizerController<HTMLElement, HTMLElement>(this, {\n count,\n getScrollElement: () =>\n this.shadowRoot?.querySelector('.detail__selection-grid') as HTMLElement | null,\n estimateSize: () => itemSize,\n horizontal: !isVertical,\n lanes,\n overscan: this.overscan,\n });\n return;\n }\n\n const v = this._virtCtrl.getVirtualizer();\n const prev = v.options;\n const orientationChanged = !!prev.horizontal !== !isVertical;\n if (\n prev.count !== count ||\n prev.lanes !== lanes ||\n prev.overscan !== this.overscan ||\n orientationChanged\n ) {\n v.setOptions({\n ...prev,\n count,\n lanes,\n overscan: this.overscan,\n horizontal: !isVertical,\n estimateSize: () => itemSize,\n });\n v.measure();\n }\n }\n\n private _syncBothVirtualizers() {\n const totalItems = this._filteredItems.length;\n const cols = Math.max(1, this.matrixColumns);\n const rows = Math.max(1, Math.ceil(totalItems / cols));\n const columnWidth = this._columnWidthPx;\n const rowHeight = this.laneHeight;\n const getScrollEl = () =>\n this.shadowRoot?.querySelector('.detail__selection-grid') as HTMLElement | null;\n\n if (!this._rowVirtCtrl) {\n this._rowVirtCtrl = new VirtualizerController<HTMLElement, HTMLElement>(this, {\n count: rows,\n getScrollElement: getScrollEl,\n estimateSize: () => rowHeight,\n horizontal: false,\n overscan: this.overscan,\n });\n } else {\n const rv = this._rowVirtCtrl.getVirtualizer();\n const prev = rv.options;\n if (prev.count !== rows || prev.overscan !== this.overscan) {\n rv.setOptions({\n ...prev,\n count: rows,\n overscan: this.overscan,\n estimateSize: () => rowHeight,\n });\n rv.measure();\n }\n }\n\n if (!this._colVirtCtrl) {\n this._colVirtCtrl = new VirtualizerController<HTMLElement, HTMLElement>(this, {\n count: cols,\n getScrollElement: getScrollEl,\n estimateSize: () => columnWidth,\n horizontal: true,\n overscan: this.overscan,\n });\n } else {\n const cv = this._colVirtCtrl.getVirtualizer();\n const prev = cv.options;\n if (prev.count !== cols || prev.overscan !== this.overscan) {\n cv.setOptions({\n ...prev,\n count: cols,\n overscan: this.overscan,\n estimateSize: () => columnWidth,\n });\n cv.measure();\n }\n }\n }\n\n private _setupGridResizeObserver() {\n if (!this._isSelectionVariant) return;\n if (typeof ResizeObserver === 'undefined') return;\n const grid = this.shadowRoot?.querySelector('.detail__selection-grid') as HTMLElement | null;\n if (!grid) return;\n if (this._gridResizeObserver) return;\n this._gridResizeObserver = new ResizeObserver(() => this._scheduleTooltipOverflowCheck());\n this._gridResizeObserver.observe(grid);\n }\n\n private _scheduleTooltipOverflowCheck() {\n if (typeof requestAnimationFrame === 'undefined') return;\n requestAnimationFrame(() => this._updateTooltipOverflowStates());\n }\n\n private async _updateTooltipOverflowStates() {\n const tooltips = this.shadowRoot?.querySelectorAll(\n '.detail__selection-tooltip'\n ) as NodeListOf<HTMLElement> | undefined;\n if (!tooltips) return;\n for (const tip of tooltips) {\n const cb = tip.querySelector('nile-checkbox') as HTMLElement & { updateComplete?: Promise<unknown> } | null;\n if (!cb) continue;\n if (cb.updateComplete) await cb.updateComplete;\n const labelEl = cb.shadowRoot?.querySelector('[part=\"label\"]') as HTMLElement | null;\n const overflowing = !!labelEl && labelEl.scrollWidth > labelEl.clientWidth + 1;\n if (overflowing) tip.removeAttribute('disabled');\n else tip.setAttribute('disabled', '');\n }\n }\n\n @watch('selected', { waitUntilFirstUpdate: false })\n _onSelectedPropertyChange() {\n this._syncSelectedFromProperty();\n }\n\n @watch('config', { waitUntilFirstUpdate: false })\n _onConfigChange() {\n this._applyConfig();\n }\n\n private _applyConfig() {\n const c = this.config;\n if (!c) return;\n\n if (c.variant !== undefined) this.variant = c.variant;\n if (c.heading !== undefined) this.heading = c.heading;\n if (c.description !== undefined) this.description = c.description;\n if (c.itemsLabel !== undefined) this.itemsLabel = c.itemsLabel;\n if (c.open !== undefined) this.open = c.open;\n if (c.disabled !== undefined) this.disabled = c.disabled;\n\n if (c.items !== undefined) this.items = c.items;\n if (c.selected !== undefined) this.selected = c.selected;\n if (c.renderItemConfig !== undefined) this.renderItemConfig = c.renderItemConfig;\n if (c.allowHtmlLabel !== undefined) this.allowHtmlLabel = c.allowHtmlLabel;\n\n if (c.layout) {\n const l = c.layout;\n if (l.orientation !== undefined) this.orientation = l.orientation;\n if (l.gridRows !== undefined) this.gridRows = l.gridRows;\n if (l.gridColumns !== undefined) this.gridColumns = l.gridColumns;\n if (l.matrixColumns !== undefined) this.matrixColumns = l.matrixColumns;\n if (l.minColumnWidth !== undefined) this.minColumnWidth = l.minColumnWidth;\n if (l.laneHeight !== undefined) this.laneHeight = l.laneHeight;\n if (l.maxHeight !== undefined) this.maxHeight = l.maxHeight;\n if (l.expandIconPlacement !== undefined) this.expandIconPlacement = l.expandIconPlacement;\n }\n\n if (c.search) {\n if (c.search.placeholder !== undefined) this.searchPlaceholder = c.search.placeholder;\n if (c.search.disableLocal !== undefined) this.disableLocalSearch = c.search.disableLocal;\n }\n\n if (c.virtualization) {\n if (c.virtualization.enabled !== undefined) this.virtualize = c.virtualization.enabled;\n if (c.virtualization.threshold !== undefined) this.virtualizeThreshold = c.virtualization.threshold;\n if (c.virtualization.overscan !== undefined) this.overscan = c.virtualization.overscan;\n }\n\n if (c.pagination) {\n if (c.pagination.totalCount !== undefined) this.totalCount = c.pagination.totalCount;\n if (c.pagination.pageSize !== undefined) this.pageSize = c.pagination.pageSize;\n if (c.pagination.fetchPage !== undefined) this.fetchPage = c.pagination.fetchPage;\n if (c.pagination.placeholderLabel !== undefined) this.placeholderLabel = c.pagination.placeholderLabel;\n }\n\n if (c.labels) {\n if (c.labels.restore !== undefined) this.restoreLabel = c.labels.restore;\n if (c.labels.clear !== undefined) this.clearLabel = c.labels.clear;\n if (c.labels.selectedOnly !== undefined) this.selectedOnlyLabel = c.labels.selectedOnly;\n if (c.labels.showAll !== undefined) this.showAllLabel = c.labels.showAll;\n }\n\n if (c.showSelectedToggle !== undefined) this.showSelectedToggle = c.showSelectedToggle;\n }\n\n private _syncSelectedFromProperty() {\n this._selectedSet = new Set(this.selected || []);\n }\n\n private _getItemValue(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getValue) return String(rc.getValue(item));\n if (typeof item === 'string') return item;\n return String((item as NileDetailSelectionItem).value ?? '');\n }\n\n private _getItemLabel(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getDisplayText) return rc.getDisplayText(item);\n if (typeof item === 'string') return item;\n return (item as NileDetailSelectionItem).label ?? this._getItemValue(item);\n }\n\n private _getItemSearchText(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getSearchText) return rc.getSearchText(item);\n return this._getItemLabel(item);\n }\n\n private _getItemDescription(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getDescription) return rc.getDescription(item) ?? '';\n if (typeof item === 'string') return '';\n return (item as NileDetailSelectionItem).description ?? '';\n }\n\n private _getItemPrefix(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getPrefix) return rc.getPrefix(item) ?? '';\n if (typeof item === 'string') return '';\n return (item as NileDetailSelectionItem).prefix ?? '';\n }\n\n private _getItemSuffix(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getSuffix) return rc.getSuffix(item) ?? '';\n if (typeof item === 'string') return '';\n return (item as NileDetailSelectionItem).suffix ?? '';\n }\n\n private _getItemDisabled(item: SelectionItem): boolean {\n const rc = this.renderItemConfig;\n if (rc?.getDisabled) return !!rc.getDisabled(item);\n if (typeof item === 'string') return false;\n return !!(item as NileDetailSelectionItem).disabled;\n }\n\n private _getItemClassName(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getClassName) return rc.getClassName(item) ?? '';\n if (typeof item === 'string') return '';\n return (item as NileDetailSelectionItem).className ?? '';\n }\n\n private get _filteredItems(): SelectionItem[] {\n let source: SelectionItem[] = this.items;\n\n if (this._showSelectedOnly) {\n source = source.filter(item => this._selectedSet.has(this._getItemValue(item)));\n }\n\n if (this.disableLocalSearch) return source;\n const q = this._searchTerm.trim().toLowerCase();\n if (!q) return source;\n return source.filter(item =>\n this._getItemSearchText(item).toLowerCase().includes(q)\n );\n }\n\n private _onToggleSelectedOnly(event: Event) {\n event.preventDefault();\n const next = !this._showSelectedOnly;\n if (next && this._selectedSet.size === 0) return;\n this._showSelectedOnly = next;\n }\n\n private _selectableValues(): string[] {\n const source: SelectionItem[] = this._isInfiniteMode\n ? (Array.from(this._pageCache.values()).flat() as SelectionItem[])\n : this.items;\n return source\n .filter(i => !this._getItemDisabled(i))\n .map(i => this._getItemValue(i));\n }\n\n private get _allChecked(): boolean {\n const selectable = this._selectableValues();\n if (selectable.length === 0) return false;\n return selectable.every(v => this._selectedSet.has(v));\n }\n\n private get _indeterminate(): boolean {\n const selectable = this._selectableValues();\n const sel = selectable.filter(v => this._selectedSet.has(v)).length;\n return sel > 0 && sel < selectable.length;\n }\n\n private get _countLabel(): string {\n const total = this._isInfiniteMode ? (this.totalCount ?? 0) : this.items.length;\n return `${this._selectedSet.size} of ${total} ${this.itemsLabel} selected`;\n }\n\n private _emitSelectionChange() {\n this.selected = [...this._selectedSet];\n this.dispatchEvent(\n new CustomEvent('nile-change', {\n detail: { selected: [...this._selectedSet] },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _onItemChange(value: string, disabled: boolean, event: Event) {\n if (disabled) {\n event.preventDefault();\n return;\n }\n const target = event.target as HTMLInputElement;\n const next = new Set(this._selectedSet);\n if (target.checked) next.add(value);\n else next.delete(value);\n this._selectedSet = next;\n this._emitSelectionChange();\n }\n\n private _onSelectAllChange(event: Event) {\n const target = event.target as HTMLInputElement;\n const selectable = this._selectableValues();\n const next = new Set(this._selectedSet);\n if (target.checked) selectable.forEach(v => next.add(v));\n else selectable.forEach(v => next.delete(v));\n this._selectedSet = next;\n this._emitSelectionChange();\n }\n\n private _emitSearch(value: string) {\n this.dispatchEvent(\n new CustomEvent('nile-search', {\n detail: { value },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _onSearchInput(event: Event) {\n const target = event.target as HTMLInputElement;\n const value = target.value ?? '';\n this._searchTerm = value;\n if (this.disableLocalSearch) this._emitSearch(value);\n }\n\n private _onSearchClear() {\n this._searchTerm = '';\n if (this.disableLocalSearch) this._emitSearch('');\n }\n\n private _onRestore(event: Event) {\n event.preventDefault();\n const source = this._restoreDefaults ?? this._selectableValues();\n this._selectedSet = new Set(source);\n this._emitSelectionChange();\n }\n\n private _onClear(event: Event) {\n event.preventDefault();\n this._selectedSet = new Set();\n this._showSelectedOnly = false;\n this._emitSelectionChange();\n }\n\n private _handleDefaultSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n const nodes = slot.assignedNodes({ flatten: true });\n this._hasSlottedContent = nodes.some(node => {\n if (node.nodeType === Node.ELEMENT_NODE) return true;\n if (node.nodeType === Node.TEXT_NODE) return !!(node.textContent && node.textContent.trim());\n return false;\n });\n }\n\n private _stopHeaderToggle(event: Event) {\n event.stopPropagation();\n }\n\n private _handleSummaryClick(event: Event) {\n event.preventDefault();\n handleSummaryClick(this);\n }\n\n private _handleSummaryKeyDown(event: KeyboardEvent) {\n handleSummaryKeyDown(event, this);\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange() {\n if (this.open) {\n this._detailOpen = true;\n await animateShow(this);\n } else {\n await animateHide(this);\n this._detailOpen = false;\n }\n }\n\n async show() {\n return showDetail(this);\n }\n\n async hide() {\n return hideDetail(this);\n }\n\n private get _summaryLabel(): string {\n return [this.heading, this.description].filter(Boolean).join(', ');\n }\n\n private _renderSelectionLabel(): TemplateResult {\n return html`\n <div part=\"selection-label\" class=\"detail__selection-label\">\n <nile-checkbox\n part=\"select-all\"\n class=\"detail__select-all\"\n ?checked=${this._allChecked}\n ?indeterminate=${this._indeterminate}\n aria-label=${`Select all ${this.heading || this.itemsLabel}`}\n @click=${this._stopHeaderToggle}\n @nile-change=${this._onSelectAllChange}\n ></nile-checkbox>\n <div class=\"detail__selection-title\">\n <span part=\"label-text\" class=\"detail__heading-text\">${this.heading}</span>\n <span part=\"selection-count\" class=\"detail__selection-count\">${this._countLabel}</span>\n </div>\n </div>\n `;\n }\n\n private _renderSelectionBody(): TemplateResult {\n const virtualized = this._isVirtualized;\n const isVertical = this.orientation === 'vertical';\n const isBoth = this.orientation === 'both';\n const laneHeightPx = this.laneHeight;\n const columnWidth = this._columnWidthPx;\n\n let gridStyle = '';\n if (virtualized) {\n if (isBoth) {\n gridStyle = `max-height: ${this.maxHeight}; height: ${this.maxHeight};`;\n } else if (isVertical) {\n gridStyle = `max-height: ${this.maxHeight}; height: ${this.maxHeight};`;\n } else {\n const lanes = Math.max(1, this.gridRows);\n gridStyle = `height: ${lanes * laneHeightPx}px;`;\n }\n } else if (isVertical) {\n const cols = Math.max(1, this.gridColumns);\n gridStyle = `grid-template-columns: repeat(${cols}, minmax(0, 1fr)); grid-auto-flow: row; max-height: ${this.maxHeight}; overflow-y: auto; overflow-x: hidden;`;\n } else {\n const lanes = Math.max(1, this.gridRows);\n gridStyle = `grid-template-rows: repeat(${lanes}, auto); grid-auto-columns: minmax(${this.minColumnWidth}, 1fr);`;\n }\n\n return html`\n <div part=\"selection-toolbar\" class=\"detail__selection-toolbar\">\n <slot name=\"tooblar-actions-prefix\"></slot>\n <slot name=\"toolbar-search\" class=\"detail__selection-search-slot\">\n <nile-input\n part=\"search\"\n class=\"detail__selection-search\"\n placeholder=${this.searchPlaceholder}\n clearable\n .value=${this._searchTerm}\n @nile-input=${this._onSearchInput}\n @nile-clear=${this._onSearchClear}\n >\n <nile-icon slot=\"prefix\" name=\"search\" library=\"system\"></nile-icon>\n </nile-input>\n </slot>\n <slot name=\"toolbar-actions\" class=\"detail__selection-actions\">\n ${this.showSelectedToggle\n ? html`\n <nile-link\n href=\"#\"\n variant=\"subtle\"\n class=\"detail__selected-toggle\"\n @click=${this._onToggleSelectedOnly}\n >\n <nile-icon slot=\"prefix\" name=\"filter\" library=\"system\"></nile-icon>\n ${this._showSelectedOnly ? this.showAllLabel : this.selectedOnlyLabel}\n </nile-link>\n `\n : nothing}\n <nile-link href=\"#\" variant=\"subtle\" @click=${this._onRestore}>${this.restoreLabel}</nile-link>\n <nile-link href=\"#\" variant=\"subtle\" @click=${this._onClear}>${this.clearLabel}</nile-link>\n </slot>\n <slot name=\"tooblar-actions-suffix\"></slot>\n </div>\n <div\n part=\"selection-grid\"\n class=${classMap({\n 'detail__selection-grid': true,\n 'detail__selection-grid--virtual': virtualized,\n 'detail__selection-grid--vertical': isVertical,\n 'detail__selection-grid--both': isBoth,\n })}\n style=${gridStyle}\n >\n ${virtualized\n ? (isBoth\n ? this._renderBothVirtualGrid(laneHeightPx, columnWidth)\n : this._renderVirtualGrid(laneHeightPx, columnWidth, isVertical))\n : this._renderStaticGrid()}\n </div>\n `;\n }\n\n private _renderItemContent(item: SelectionItem): TemplateResult {\n const label = this._getItemLabel(item);\n const description = this._getItemDescription(item);\n const prefix = this._getItemPrefix(item);\n const suffix = this._getItemSuffix(item);\n const allowHtml = this.allowHtmlLabel;\n return html`\n ${prefix\n ? html`<span class=\"detail__selection-prefix\" part=\"item-prefix\">${allowHtml ? unsafeHTML(prefix) : prefix}</span>`\n : ''}\n <span class=\"detail__selection-text\" part=\"item-text\">\n <span class=\"detail__selection-item-label\" part=\"item-label\">${allowHtml ? unsafeHTML(label) : label}</span>\n ${description\n ? html`<span class=\"detail__selection-desc\" part=\"item-description\">${allowHtml ? unsafeHTML(description) : description}</span>`\n : ''}\n </span>\n ${suffix\n ? html`<span class=\"detail__selection-suffix\" part=\"item-suffix\">${allowHtml ? unsafeHTML(suffix) : suffix}</span>`\n : ''}\n `;\n }\n\n private _renderItemTooltip(item: SelectionItem, opts: { positionStyle?: string; extraClasses?: string } = {}): TemplateResult {\n const value = this._getItemValue(item);\n const label = this._getItemLabel(item);\n const description = this._getItemDescription(item);\n const isDisabled = this._getItemDisabled(item);\n const className = this._getItemClassName(item);\n const tooltipContent = description ? `${label} — ${description}` : label;\n\n const tooltipClass = `detail__selection-tooltip${opts.extraClasses ? ' ' + opts.extraClasses : ''}`;\n const checkboxClass = classMap({\n 'detail__selection-checkbox': true,\n 'detail__selection-checkbox--disabled': isDisabled,\n [className]: !!className,\n });\n\n return html`\n <nile-lite-tooltip\n class=${tooltipClass}\n content=${tooltipContent}\n size=\"small\"\n disabled\n style=${opts.positionStyle ?? nothing as any}\n >\n <nile-checkbox\n class=${checkboxClass}\n ?checked=${this._selectedSet.has(value)}\n ?disabled=${isDisabled}\n @nile-change=${(e: Event) => this._onItemChange(value, isDisabled, e)}\n >${this._renderItemContent(item)}</nile-checkbox>\n </nile-lite-tooltip>\n `;\n }\n\n private _renderStaticGrid(): TemplateResult {\n return html`${this._filteredItems.map(item => this._renderItemTooltip(item))}`;\n }\n\n private _renderBothVirtualGrid(_laneHeightPx: number, _columnWidthPx: number): TemplateResult {\n const rowV = this._rowVirtCtrl?.getVirtualizer();\n const colV = this._colVirtCtrl?.getVirtualizer();\n const rowTotal = rowV?.getTotalSize() ?? 0;\n const colTotal = colV?.getTotalSize() ?? 0;\n const rowItems = rowV?.getVirtualItems() ?? [];\n const colItems = colV?.getVirtualItems() ?? [];\n const cols = Math.max(1, this.matrixColumns);\n const total = this._filteredItems.length;\n\n return html`\n <div\n class=\"detail__selection-track\"\n style=\"width: ${colTotal}px; height: ${rowTotal}px; position: relative;\"\n >\n ${rowItems.flatMap(rvi =>\n colItems.map(cvi => {\n const idx = rvi.index * cols + cvi.index;\n if (idx >= total) return null;\n const item = this._filteredItems[idx];\n if (item === undefined) return null;\n const positionStyle = `position: absolute; top: ${rvi.start}px; left: ${cvi.start}px; width: ${cvi.size}px; height: ${rvi.size}px;`;\n return this._renderItemTooltip(item, {\n positionStyle,\n extraClasses: 'detail__selection-tooltip--virtual',\n });\n })\n )}\n </div>\n `;\n }\n\n private _renderVirtualGrid(\n laneHeightPx: number,\n _columnWidthPx: number,\n isVertical: boolean\n ): TemplateResult {\n const v = this._virtCtrl?.getVirtualizer();\n const totalSize = v?.getTotalSize() ?? 0;\n const virtualItems = v?.getVirtualItems() ?? [];\n const lanes = Math.max(1, isVertical ? this.gridColumns : this.gridRows);\n\n if (this._isInfiniteMode && virtualItems.length > 0) {\n const first = virtualItems[0].index;\n const last = virtualItems[virtualItems.length - 1].index;\n this._scheduleFetchForRange(first, last);\n }\n\n const trackStyle = isVertical\n ? `width: 100%; height: ${totalSize}px; position: relative;`\n : `width: ${totalSize}px; height: 100%; position: relative;`;\n\n return html`\n <div class=\"detail__selection-track\" style=${trackStyle}>\n ${virtualItems.map(vi => {\n const laneIdx = vi.lane ?? 0;\n const positionStyle = isVertical\n ? `position: absolute; top: ${vi.start}px; left: calc(${laneIdx} * (100% / ${lanes})); width: calc(100% / ${lanes}); height: ${vi.size}px;`\n : `position: absolute; top: ${laneIdx * laneHeightPx}px; left: ${vi.start}px; width: ${vi.size}px; height: ${laneHeightPx}px;`;\n const item = this._getItemAt(vi.index);\n if (item === undefined) {\n return this._renderPlaceholder(positionStyle);\n }\n return this._renderItemTooltip(item, {\n positionStyle,\n extraClasses: 'detail__selection-tooltip--virtual',\n });\n })}\n </div>\n `;\n }\n\n private _renderPlaceholder(positionStyle: string): TemplateResult {\n return html`\n <div class=\"detail__selection-placeholder\" style=${positionStyle} part=\"item-placeholder\">\n <div class=\"detail__selection-placeholder-bar\"></div>\n <span class=\"detail__selection-placeholder-label\">${this.placeholderLabel}</span>\n </div>\n `;\n }\n\n render(): TemplateResult {\n const isSelection = this._isSelectionVariant;\n return html`\n <details\n part=\"base\"\n ?open=${this._detailOpen}\n class=${classMap({\n 'detail': true,\n 'detail--open': this.open,\n 'detail--disabled': this.disabled,\n 'detail--selection': isSelection,\n 'detail--light': this._isLightVariant,\n })}\n >\n <summary\n part=\"header\"\n id=\"header\"\n class=${classMap({\n 'detail__header': true,\n 'detail__header--icon-left': this.expandIconPlacement === 'left',\n })}\n aria-label=${this._summaryLabel || nothing}\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-disabled=${this.disabled ? 'true' : 'false'}\n tabindex=${this.disabled ? '-1' : '0'}\n @click=${this._handleSummaryClick}\n @keydown=${this._handleSummaryKeyDown}\n >\n <slot name=\"label\" part=\"label\" class=\"detail__label\">\n ${isSelection\n ? this._renderSelectionLabel()\n : html`\n <span part=\"label-text\" class=\"detail__heading-text\">${this.heading}</span>\n ${this.description\n ? html`<span part=\"description\" class=\"detail__description\">${this.description}</span>`\n : ''}\n `}\n </slot>\n\n <slot name=\"header-actions\" part=\"header-actions\" class=\"detail__header-actions\"></slot>\n\n <slot name=\"prefix\" part=\"prefix\" class=\"detail__prefix\"></slot>\n\n <span part=\"summary-icon\" class=\"detail__summary-icon\" aria-hidden=\"true\">\n <slot name=\"expand-icon\">\n <nile-icon\n name=\"var(--nile-icon-arrow-right, var(--ng-icon-chevron-right))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n library=\"system\"\n ></nile-icon>\n </slot>\n </span>\n\n <slot name=\"suffix\" part=\"suffix\" class=\"detail__suffix\"></slot>\n\n </summary>\n\n <div part=\"content\" class=\"detail__body\">\n ${isSelection\n ? html`<div part=\"selection-content\" class=\"detail__selection-content\">${this._renderSelectionBody()}</div>`\n : ''}\n <slot\n id=\"content\"\n class=${classMap({\n 'detail__content': true,\n 'detail__content--empty': !this._hasSlottedContent,\n })}\n @slotchange=${this._handleDefaultSlotChange}\n ></slot>\n </div>\n </details>\n `;\n }\n}\n\nexport default NileDetail;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-detail': NileDetail;\n }\n}\n"]}
1
+ {"version":3,"file":"nile-detail.js","sourceRoot":"","sources":["../../../src/nile-detail/nile-detail.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\nimport { styles } from './nile-detail.css';\nimport NileElement from '../internal/nile-element';\nimport { watch } from '../internal/watch';\nimport {\n animateShow,\n animateHide,\n showDetail,\n hideDetail,\n handleSummaryClick,\n handleSummaryKeyDown,\n getPreviewHeight,\n} from './nile-detail.utils';\nimport '../nile-checkbox/index';\nimport '../nile-input/index';\nimport '../nile-link/index';\nimport '../nile-icon/index';\nimport '../nile-lite-tooltip/index';\nimport { VirtualizerController } from '@tanstack/lit-virtual';\nimport type { CSSResultGroup } from 'lit';\n\nexport type NileDetailVariant = 'default' | 'selection' | 'light' | 'select-light';\n\nexport interface NileDetailSelectionItem {\n value: string;\n label?: string;\n description?: string;\n prefix?: string;\n suffix?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport interface NileDetailRenderItemConfig {\n getDisplayText: (item: any) => string;\n getValue?: (item: any) => string;\n getSearchText?: (item: any) => string;\n getDescription?: (item: any) => string;\n getPrefix?: (item: any) => string;\n getSuffix?: (item: any) => string;\n getDisabled?: (item: any) => boolean;\n getClassName?: (item: any) => string;\n}\n\ntype SelectionItem = string | NileDetailSelectionItem | Record<string, any>;\n\nconst IS_BROWSER = typeof window !== 'undefined';\n\nexport interface NileDetailSelectionConfig {\n // Identity\n variant?: NileDetailVariant;\n heading?: string;\n description?: string;\n itemsLabel?: string;\n\n // Items / selection\n items?: SelectionItem[];\n selected?: string[];\n renderItemConfig?: NileDetailRenderItemConfig;\n allowHtmlLabel?: boolean;\n\n // Layout\n layout?: {\n orientation?: 'horizontal' | 'vertical' | 'both';\n gridRows?: number;\n gridColumns?: number;\n matrixColumns?: number;\n minColumnWidth?: string;\n laneHeight?: number;\n maxHeight?: string;\n expandIconPlacement?: 'left' | 'right';\n };\n\n // Search\n search?: {\n placeholder?: string;\n disableLocal?: boolean;\n };\n\n // Virtualization\n virtualization?: {\n enabled?: boolean;\n threshold?: number;\n overscan?: number;\n };\n\n // Pagination / infinite scroll\n pagination?: {\n totalCount?: number;\n pageSize?: number;\n fetchPage?: (offset: number, limit: number) => Promise<SelectionItem[]>;\n placeholderLabel?: string;\n };\n\n // Action labels\n labels?: {\n restore?: string;\n clear?: string;\n selectedOnly?: string;\n showAll?: string;\n };\n\n showSelectedToggle?: boolean;\n\n // Preview state\n preview?: boolean;\n previewPercentage?: number;\n\n // Inherited / passthrough\n open?: boolean;\n disabled?: boolean;\n}\n\n@customElement('nile-detail')\nexport class NileDetail extends NileElement {\n\n static styles: CSSResultGroup = styles;\n\n @query('details') detail: HTMLDetailsElement;\n @query('summary') header: HTMLElement;\n @query('.detail__body') body: HTMLElement;\n\n @property({ attribute: true, type: Boolean, reflect: true }) open = false;\n\n @property({ attribute: true, type: String, reflect: true }) heading = '';\n\n @property({ attribute: true, type: String, reflect: true }) description = '';\n\n @property({ attribute: true, reflect: true }) expandIconPlacement: 'left' | 'right' = 'right';\n\n @property({ attribute: true, type: Boolean, reflect: true }) disabled = false;\n\n /** When set, the closed state shows a preview of the body content instead of hiding it. */\n @property({ attribute: true, type: Boolean, reflect: true }) preview = false;\n\n /** Percentage (0–100) of the content height shown while previewing. */\n @property({ attribute: 'preview-percentage', type: Number, reflect: true }) previewPercentage = 30;\n\n @property({ attribute: true, type: String, reflect: true }) variant: NileDetailVariant = 'default';\n\n @property({ attribute: false, type: Array }) items: SelectionItem[] = [];\n\n @property({ attribute: false, type: Array }) selected: string[] = [];\n\n @property({ attribute: false }) renderItemConfig?: NileDetailRenderItemConfig;\n\n @property({ attribute: 'allow-html-label', type: Boolean }) allowHtmlLabel = false;\n\n @property({ attribute: 'disable-local-search', type: Boolean }) disableLocalSearch = false;\n\n @property({ attribute: 'total-count', type: Number }) totalCount?: number;\n\n @property({ attribute: 'page-size', type: Number }) pageSize = 200;\n\n @property({ attribute: false }) fetchPage?: (offset: number, limit: number) => Promise<SelectionItem[]>;\n\n @property({ attribute: 'placeholder-label', type: String }) placeholderLabel = 'Loading…';\n\n @property({ attribute: false }) config?: NileDetailSelectionConfig;\n\n @property({ attribute: 'search-placeholder', type: String }) searchPlaceholder = 'Search...';\n\n @property({ attribute: 'items-label', type: String }) itemsLabel = 'attributes';\n\n @property({ attribute: 'restore-label', type: String }) restoreLabel = 'Restore';\n\n @property({ attribute: 'clear-label', type: String }) clearLabel = 'Clear';\n\n @property({ attribute: 'grid-rows', type: Number }) gridRows = 6;\n\n @property({ attribute: 'grid-columns', type: Number }) gridColumns = 3;\n\n @property({ attribute: 'min-column-width', type: String }) minColumnWidth = '220px';\n\n @property({ attribute: 'lane-height', type: Number }) laneHeight = 32;\n\n @property({ attribute: true, type: String, reflect: true }) orientation: 'horizontal' | 'vertical' | 'both' = 'horizontal';\n\n @property({ attribute: 'max-height', type: String }) maxHeight = '320px';\n\n @property({ attribute: 'matrix-columns', type: Number }) matrixColumns = 20;\n\n @property({ attribute: true, type: Boolean }) virtualize = false;\n\n @property({ attribute: 'virtualize-threshold', type: Number }) virtualizeThreshold = 60;\n\n @property({ attribute: 'overscan', type: Number }) overscan = 4;\n\n @state() private _detailOpen = false;\n\n @state() private _hasSlottedContent = false;\n\n @state() private _searchTerm = '';\n\n @state() private _selectedSet: Set<string> = new Set();\n\n @state() private _showSelectedOnly = false;\n\n @property({ attribute: 'show-selected-toggle', type: Boolean, reflect: true }) showSelectedToggle = false;\n\n @property({ attribute: 'selected-only-label', type: String }) selectedOnlyLabel = 'Selected';\n\n @property({ attribute: 'show-all-label', type: String }) showAllLabel = 'Show all';\n\n private _restoreDefaults: string[] | null = null;\n\n private _gridResizeObserver: ResizeObserver | null = null;\n\n private _virtCtrl: VirtualizerController<HTMLElement, HTMLElement> | null = null;\n\n private _rowVirtCtrl: VirtualizerController<HTMLElement, HTMLElement> | null = null;\n\n private _colVirtCtrl: VirtualizerController<HTMLElement, HTMLElement> | null = null;\n\n private _pageCache: any = new Map();\n\n private _pendingPages: any = new Set();\n\n /** True for any variant that renders the selection UI/behavior. */\n private get _isSelectionVariant(): boolean {\n return this.variant === 'selection' || this.variant === 'select-light';\n }\n\n /** True for any variant that applies the light styling. */\n private get _isLightVariant(): boolean {\n return this.variant === 'light' || this.variant === 'select-light';\n }\n\n /** True when preview mode is on with a usable percentage. */\n private get _previewEnabled(): boolean {\n return this.preview && Math.min(100, Math.max(0, this.previewPercentage)) > 0;\n }\n\n /** True when the closed state should currently render the preview. */\n private get _isPreviewActive(): boolean {\n return this._previewEnabled && !this.open;\n }\n\n private get _isInfiniteMode(): boolean {\n return (\n this._isSelectionVariant &&\n typeof this.fetchPage === 'function' &&\n typeof this.totalCount === 'number' &&\n this.orientation !== 'both'\n );\n }\n\n private _effectiveTotalCount(): number {\n if (this._isInfiniteMode) return this.totalCount ?? 0;\n return this._filteredItems.length;\n }\n\n private _getItemAt(index: number): SelectionItem | undefined {\n if (!this._isInfiniteMode) return this._filteredItems[index];\n const pageSize = Math.max(1, this.pageSize);\n const pageIndex = Math.floor(index / pageSize);\n const page = this._pageCache.get(pageIndex);\n if (!page) return undefined;\n return page[index - pageIndex * pageSize];\n }\n\n private _scheduleFetchForRange(start: number, end: number) {\n if (!this._isInfiniteMode || !this.fetchPage) return;\n const pageSize = Math.max(1, this.pageSize);\n const total = this.totalCount ?? 0;\n if (total <= 0) return;\n\n const firstPage = Math.floor(start / pageSize);\n const lastPage = Math.floor(Math.min(end, total - 1) / pageSize);\n for (let p = firstPage; p <= lastPage; p++) {\n if (this._pageCache.has(p) || this._pendingPages.has(p)) continue;\n this._loadPage(p);\n }\n }\n\n private async _loadPage(pageIndex: number) {\n if (!this.fetchPage) return;\n const pageSize = Math.max(1, this.pageSize);\n const offset = pageIndex * pageSize;\n const total = this.totalCount ?? 0;\n const limit = Math.min(pageSize, Math.max(0, total - offset));\n if (limit <= 0) return;\n\n this._pendingPages.add(pageIndex);\n try {\n const rows = await this.fetchPage(offset, limit);\n this._pageCache.set(pageIndex, Array.isArray(rows) ? rows : []);\n this.dispatchEvent(\n new CustomEvent('nile-page-load', {\n detail: { pageIndex, offset, limit, rows: this._pageCache.get(pageIndex) },\n bubbles: true,\n composed: true,\n })\n );\n } catch (err) {\n this.dispatchEvent(\n new CustomEvent('nile-page-error', {\n detail: { pageIndex, offset, limit, error: err },\n bubbles: true,\n composed: true,\n })\n );\n } finally {\n this._pendingPages.delete(pageIndex);\n this.requestUpdate();\n }\n }\n\n /** Public: clear the page cache (use after a query change to refetch). */\n resetPages() {\n this._pageCache = new Map();\n this._pendingPages = new Set();\n this.requestUpdate();\n }\n\n private get _isVirtualized(): boolean {\n if (!IS_BROWSER) return false;\n if (this._isInfiniteMode) return true;\n return this._isSelectionVariant\n && (this.virtualize || this.items.length > this.virtualizeThreshold);\n }\n\n private get _columnWidthPx(): number {\n const parsed = parseInt(this.minColumnWidth, 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 220;\n }\n\n firstUpdated() {\n this._detailOpen = this.open || this._isPreviewActive;\n this.body.hidden = !this.open && !this._isPreviewActive;\n this.body.style.height = this.open ? 'auto' : '0';\n if (this._isPreviewActive) {\n this._applyPreviewHeight();\n }\n this._syncSelectedFromProperty();\n if (this._restoreDefaults === null) {\n this._restoreDefaults = [...this._selectedSet];\n }\n this._setupGridResizeObserver();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._gridResizeObserver?.disconnect();\n this._gridResizeObserver = null;\n }\n\n updated(_changed: Map<string, unknown>) {\n if (this._isSelectionVariant) {\n this._setupGridResizeObserver();\n this._syncVirtualizer();\n this._scheduleTooltipOverflowCheck();\n }\n }\n\n private _syncVirtualizer() {\n if (!IS_BROWSER) return;\n if (!this._isVirtualized) {\n this._virtCtrl = null;\n this._rowVirtCtrl = null;\n this._colVirtCtrl = null;\n return;\n }\n const grid = this.shadowRoot?.querySelector('.detail__selection-grid') as HTMLElement | null;\n if (!grid) return;\n\n if (this.orientation === 'both') {\n this._virtCtrl = null;\n this._syncBothVirtualizers();\n return;\n }\n\n // Reset 2-axis controllers if we switched away from 'both'.\n this._rowVirtCtrl = null;\n this._colVirtCtrl = null;\n\n const count = this._effectiveTotalCount();\n const isVertical = this.orientation === 'vertical';\n const lanes = Math.max(1, isVertical ? this.gridColumns : this.gridRows);\n const itemSize = isVertical ? this.laneHeight : this._columnWidthPx;\n\n if (!this._virtCtrl) {\n this._virtCtrl = new VirtualizerController<HTMLElement, HTMLElement>(this, {\n count,\n getScrollElement: () =>\n this.shadowRoot?.querySelector('.detail__selection-grid') as HTMLElement | null,\n estimateSize: () => itemSize,\n horizontal: !isVertical,\n lanes,\n overscan: this.overscan,\n });\n return;\n }\n\n const v = this._virtCtrl.getVirtualizer();\n const prev = v.options;\n const orientationChanged = !!prev.horizontal !== !isVertical;\n if (\n prev.count !== count ||\n prev.lanes !== lanes ||\n prev.overscan !== this.overscan ||\n orientationChanged\n ) {\n v.setOptions({\n ...prev,\n count,\n lanes,\n overscan: this.overscan,\n horizontal: !isVertical,\n estimateSize: () => itemSize,\n });\n v.measure();\n }\n }\n\n private _syncBothVirtualizers() {\n const totalItems = this._filteredItems.length;\n const cols = Math.max(1, this.matrixColumns);\n const rows = Math.max(1, Math.ceil(totalItems / cols));\n const columnWidth = this._columnWidthPx;\n const rowHeight = this.laneHeight;\n const getScrollEl = () =>\n this.shadowRoot?.querySelector('.detail__selection-grid') as HTMLElement | null;\n\n if (!this._rowVirtCtrl) {\n this._rowVirtCtrl = new VirtualizerController<HTMLElement, HTMLElement>(this, {\n count: rows,\n getScrollElement: getScrollEl,\n estimateSize: () => rowHeight,\n horizontal: false,\n overscan: this.overscan,\n });\n } else {\n const rv = this._rowVirtCtrl.getVirtualizer();\n const prev = rv.options;\n if (prev.count !== rows || prev.overscan !== this.overscan) {\n rv.setOptions({\n ...prev,\n count: rows,\n overscan: this.overscan,\n estimateSize: () => rowHeight,\n });\n rv.measure();\n }\n }\n\n if (!this._colVirtCtrl) {\n this._colVirtCtrl = new VirtualizerController<HTMLElement, HTMLElement>(this, {\n count: cols,\n getScrollElement: getScrollEl,\n estimateSize: () => columnWidth,\n horizontal: true,\n overscan: this.overscan,\n });\n } else {\n const cv = this._colVirtCtrl.getVirtualizer();\n const prev = cv.options;\n if (prev.count !== cols || prev.overscan !== this.overscan) {\n cv.setOptions({\n ...prev,\n count: cols,\n overscan: this.overscan,\n estimateSize: () => columnWidth,\n });\n cv.measure();\n }\n }\n }\n\n private _setupGridResizeObserver() {\n if (!this._isSelectionVariant) return;\n if (typeof ResizeObserver === 'undefined') return;\n const grid = this.shadowRoot?.querySelector('.detail__selection-grid') as HTMLElement | null;\n if (!grid) return;\n if (this._gridResizeObserver) return;\n this._gridResizeObserver = new ResizeObserver(() => this._scheduleTooltipOverflowCheck());\n this._gridResizeObserver.observe(grid);\n }\n\n private _scheduleTooltipOverflowCheck() {\n if (typeof requestAnimationFrame === 'undefined') return;\n requestAnimationFrame(() => this._updateTooltipOverflowStates());\n }\n\n private async _updateTooltipOverflowStates() {\n const tooltips = this.shadowRoot?.querySelectorAll(\n '.detail__selection-tooltip'\n ) as NodeListOf<HTMLElement> | undefined;\n if (!tooltips) return;\n for (const tip of tooltips) {\n const cb = tip.querySelector('nile-checkbox') as HTMLElement & { updateComplete?: Promise<unknown> } | null;\n if (!cb) continue;\n if (cb.updateComplete) await cb.updateComplete;\n const labelEl = cb.shadowRoot?.querySelector('[part=\"label\"]') as HTMLElement | null;\n const overflowing = !!labelEl && labelEl.scrollWidth > labelEl.clientWidth + 1;\n if (overflowing) tip.removeAttribute('disabled');\n else tip.setAttribute('disabled', '');\n }\n }\n\n @watch('selected', { waitUntilFirstUpdate: false })\n _onSelectedPropertyChange() {\n this._syncSelectedFromProperty();\n }\n\n @watch('config', { waitUntilFirstUpdate: false })\n _onConfigChange() {\n this._applyConfig();\n }\n\n private _applyConfig() {\n const c = this.config;\n if (!c) return;\n\n if (c.variant !== undefined) this.variant = c.variant;\n if (c.heading !== undefined) this.heading = c.heading;\n if (c.description !== undefined) this.description = c.description;\n if (c.itemsLabel !== undefined) this.itemsLabel = c.itemsLabel;\n if (c.open !== undefined) this.open = c.open;\n if (c.disabled !== undefined) this.disabled = c.disabled;\n\n if (c.items !== undefined) this.items = c.items;\n if (c.selected !== undefined) this.selected = c.selected;\n if (c.renderItemConfig !== undefined) this.renderItemConfig = c.renderItemConfig;\n if (c.allowHtmlLabel !== undefined) this.allowHtmlLabel = c.allowHtmlLabel;\n\n if (c.layout) {\n const l = c.layout;\n if (l.orientation !== undefined) this.orientation = l.orientation;\n if (l.gridRows !== undefined) this.gridRows = l.gridRows;\n if (l.gridColumns !== undefined) this.gridColumns = l.gridColumns;\n if (l.matrixColumns !== undefined) this.matrixColumns = l.matrixColumns;\n if (l.minColumnWidth !== undefined) this.minColumnWidth = l.minColumnWidth;\n if (l.laneHeight !== undefined) this.laneHeight = l.laneHeight;\n if (l.maxHeight !== undefined) this.maxHeight = l.maxHeight;\n if (l.expandIconPlacement !== undefined) this.expandIconPlacement = l.expandIconPlacement;\n }\n\n if (c.search) {\n if (c.search.placeholder !== undefined) this.searchPlaceholder = c.search.placeholder;\n if (c.search.disableLocal !== undefined) this.disableLocalSearch = c.search.disableLocal;\n }\n\n if (c.virtualization) {\n if (c.virtualization.enabled !== undefined) this.virtualize = c.virtualization.enabled;\n if (c.virtualization.threshold !== undefined) this.virtualizeThreshold = c.virtualization.threshold;\n if (c.virtualization.overscan !== undefined) this.overscan = c.virtualization.overscan;\n }\n\n if (c.pagination) {\n if (c.pagination.totalCount !== undefined) this.totalCount = c.pagination.totalCount;\n if (c.pagination.pageSize !== undefined) this.pageSize = c.pagination.pageSize;\n if (c.pagination.fetchPage !== undefined) this.fetchPage = c.pagination.fetchPage;\n if (c.pagination.placeholderLabel !== undefined) this.placeholderLabel = c.pagination.placeholderLabel;\n }\n\n if (c.labels) {\n if (c.labels.restore !== undefined) this.restoreLabel = c.labels.restore;\n if (c.labels.clear !== undefined) this.clearLabel = c.labels.clear;\n if (c.labels.selectedOnly !== undefined) this.selectedOnlyLabel = c.labels.selectedOnly;\n if (c.labels.showAll !== undefined) this.showAllLabel = c.labels.showAll;\n }\n\n if (c.showSelectedToggle !== undefined) this.showSelectedToggle = c.showSelectedToggle;\n\n if (c.preview !== undefined) this.preview = c.preview;\n if (c.previewPercentage !== undefined) this.previewPercentage = c.previewPercentage;\n }\n\n private _syncSelectedFromProperty() {\n this._selectedSet = new Set(this.selected || []);\n }\n\n private _getItemValue(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getValue) return String(rc.getValue(item));\n if (typeof item === 'string') return item;\n return String((item as NileDetailSelectionItem).value ?? '');\n }\n\n private _getItemLabel(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getDisplayText) return rc.getDisplayText(item);\n if (typeof item === 'string') return item;\n return (item as NileDetailSelectionItem).label ?? this._getItemValue(item);\n }\n\n private _getItemSearchText(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getSearchText) return rc.getSearchText(item);\n return this._getItemLabel(item);\n }\n\n private _getItemDescription(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getDescription) return rc.getDescription(item) ?? '';\n if (typeof item === 'string') return '';\n return (item as NileDetailSelectionItem).description ?? '';\n }\n\n private _getItemPrefix(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getPrefix) return rc.getPrefix(item) ?? '';\n if (typeof item === 'string') return '';\n return (item as NileDetailSelectionItem).prefix ?? '';\n }\n\n private _getItemSuffix(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getSuffix) return rc.getSuffix(item) ?? '';\n if (typeof item === 'string') return '';\n return (item as NileDetailSelectionItem).suffix ?? '';\n }\n\n private _getItemDisabled(item: SelectionItem): boolean {\n const rc = this.renderItemConfig;\n if (rc?.getDisabled) return !!rc.getDisabled(item);\n if (typeof item === 'string') return false;\n return !!(item as NileDetailSelectionItem).disabled;\n }\n\n private _getItemClassName(item: SelectionItem): string {\n const rc = this.renderItemConfig;\n if (rc?.getClassName) return rc.getClassName(item) ?? '';\n if (typeof item === 'string') return '';\n return (item as NileDetailSelectionItem).className ?? '';\n }\n\n private get _filteredItems(): SelectionItem[] {\n let source: SelectionItem[] = this.items;\n\n if (this._showSelectedOnly) {\n source = source.filter(item => this._selectedSet.has(this._getItemValue(item)));\n }\n\n if (this.disableLocalSearch) return source;\n const q = this._searchTerm.trim().toLowerCase();\n if (!q) return source;\n return source.filter(item =>\n this._getItemSearchText(item).toLowerCase().includes(q)\n );\n }\n\n private _onToggleSelectedOnly(event: Event) {\n event.preventDefault();\n const next = !this._showSelectedOnly;\n if (next && this._selectedSet.size === 0) return;\n this._showSelectedOnly = next;\n }\n\n private _selectableValues(): string[] {\n const source: SelectionItem[] = this._isInfiniteMode\n ? (Array.from(this._pageCache.values()).flat() as SelectionItem[])\n : this.items;\n return source\n .filter(i => !this._getItemDisabled(i))\n .map(i => this._getItemValue(i));\n }\n\n private get _allChecked(): boolean {\n const selectable = this._selectableValues();\n if (selectable.length === 0) return false;\n return selectable.every(v => this._selectedSet.has(v));\n }\n\n private get _indeterminate(): boolean {\n const selectable = this._selectableValues();\n const sel = selectable.filter(v => this._selectedSet.has(v)).length;\n return sel > 0 && sel < selectable.length;\n }\n\n private get _countLabel(): string {\n const total = this._isInfiniteMode ? (this.totalCount ?? 0) : this.items.length;\n return `${this._selectedSet.size} of ${total} ${this.itemsLabel} selected`;\n }\n\n private _emitSelectionChange() {\n this.selected = [...this._selectedSet];\n this.dispatchEvent(\n new CustomEvent('nile-change', {\n detail: { selected: [...this._selectedSet] },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _onItemChange(value: string, disabled: boolean, event: Event) {\n if (disabled) {\n event.preventDefault();\n return;\n }\n const target = event.target as HTMLInputElement;\n const next = new Set(this._selectedSet);\n if (target.checked) next.add(value);\n else next.delete(value);\n this._selectedSet = next;\n this._emitSelectionChange();\n }\n\n private _onSelectAllChange(event: Event) {\n const target = event.target as HTMLInputElement;\n const selectable = this._selectableValues();\n const next = new Set(this._selectedSet);\n if (target.checked) selectable.forEach(v => next.add(v));\n else selectable.forEach(v => next.delete(v));\n this._selectedSet = next;\n this._emitSelectionChange();\n }\n\n private _emitSearch(value: string) {\n this.dispatchEvent(\n new CustomEvent('nile-search', {\n detail: { value },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _onSearchInput(event: Event) {\n const target = event.target as HTMLInputElement;\n const value = target.value ?? '';\n this._searchTerm = value;\n if (this.disableLocalSearch) this._emitSearch(value);\n }\n\n private _onSearchClear() {\n this._searchTerm = '';\n if (this.disableLocalSearch) this._emitSearch('');\n }\n\n private _onRestore(event: Event) {\n event.preventDefault();\n const source = this._restoreDefaults ?? this._selectableValues();\n this._selectedSet = new Set(source);\n this._emitSelectionChange();\n }\n\n private _onClear(event: Event) {\n event.preventDefault();\n this._selectedSet = new Set();\n this._showSelectedOnly = false;\n this._emitSelectionChange();\n }\n\n private _handleDefaultSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n const nodes = slot.assignedNodes({ flatten: true });\n this._hasSlottedContent = nodes.some(node => {\n if (node.nodeType === Node.ELEMENT_NODE) return true;\n if (node.nodeType === Node.TEXT_NODE) return !!(node.textContent && node.textContent.trim());\n return false;\n });\n if (this._isPreviewActive) {\n this._applyPreviewHeight();\n }\n }\n\n private _stopHeaderToggle(event: Event) {\n event.stopPropagation();\n }\n\n private _handleSummaryClick(event: Event) {\n event.preventDefault();\n handleSummaryClick(this);\n }\n\n private _handleSummaryKeyDown(event: KeyboardEvent) {\n handleSummaryKeyDown(event, this);\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange() {\n if (this.open) {\n this._detailOpen = true;\n await animateShow(this);\n } else {\n await animateHide(this);\n // In preview mode the details element stays open so the preview remains visible.\n this._detailOpen = this._previewEnabled;\n }\n }\n\n @watch(['preview', 'previewPercentage'], { waitUntilFirstUpdate: true })\n handlePreviewChange() {\n if (this.open) {\n return;\n }\n if (this._previewEnabled) {\n this._detailOpen = true;\n this._applyPreviewHeight();\n } else {\n this.body.hidden = true;\n this.body.style.height = '0';\n this._detailOpen = false;\n }\n }\n\n /** Measures the content and clamps the body to the configured preview height. */\n private async _applyPreviewHeight() {\n await this.updateComplete;\n if (!this._isPreviewActive || !this.body) {\n return;\n }\n this.body.hidden = false;\n this.body.style.height = `${getPreviewHeight(this)}px`;\n }\n\n private _handlePreviewClick() {\n if (this._isPreviewActive && !this.disabled) {\n showDetail(this);\n }\n }\n\n private _handlePreviewKeyDown(event: KeyboardEvent) {\n if (!this._isPreviewActive || this.disabled) {\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n showDetail(this);\n }\n }\n\n async show() {\n return showDetail(this);\n }\n\n async hide() {\n return hideDetail(this);\n }\n\n private get _summaryLabel(): string {\n return [this.heading, this.description].filter(Boolean).join(', ');\n }\n\n private _renderSelectionLabel(): TemplateResult {\n return html`\n <div part=\"selection-label\" class=\"detail__selection-label\">\n <nile-checkbox\n part=\"select-all\"\n class=\"detail__select-all\"\n ?checked=${this._allChecked}\n ?indeterminate=${this._indeterminate}\n aria-label=${`Select all ${this.heading || this.itemsLabel}`}\n @click=${this._stopHeaderToggle}\n @nile-change=${this._onSelectAllChange}\n ></nile-checkbox>\n <div class=\"detail__selection-title\">\n <span part=\"label-text\" class=\"detail__heading-text\">${this.heading}</span>\n <span part=\"selection-count\" class=\"detail__selection-count\">${this._countLabel}</span>\n </div>\n </div>\n `;\n }\n\n private _renderSelectionBody(): TemplateResult {\n const virtualized = this._isVirtualized;\n const isVertical = this.orientation === 'vertical';\n const isBoth = this.orientation === 'both';\n const laneHeightPx = this.laneHeight;\n const columnWidth = this._columnWidthPx;\n\n let gridStyle = '';\n if (virtualized) {\n if (isBoth) {\n gridStyle = `max-height: ${this.maxHeight}; height: ${this.maxHeight};`;\n } else if (isVertical) {\n gridStyle = `max-height: ${this.maxHeight}; height: ${this.maxHeight};`;\n } else {\n const lanes = Math.max(1, this.gridRows);\n gridStyle = `height: ${lanes * laneHeightPx}px;`;\n }\n } else if (isVertical) {\n const cols = Math.max(1, this.gridColumns);\n gridStyle = `grid-template-columns: repeat(${cols}, minmax(0, 1fr)); grid-auto-flow: row; max-height: ${this.maxHeight}; overflow-y: auto; overflow-x: hidden;`;\n } else {\n const lanes = Math.max(1, this.gridRows);\n gridStyle = `grid-template-rows: repeat(${lanes}, auto); grid-auto-columns: minmax(${this.minColumnWidth}, 1fr);`;\n }\n\n return html`\n <div part=\"selection-toolbar\" class=\"detail__selection-toolbar\">\n <slot name=\"tooblar-actions-prefix\"></slot>\n <slot name=\"toolbar-search\" class=\"detail__selection-search-slot\">\n <nile-input\n part=\"search\"\n class=\"detail__selection-search\"\n placeholder=${this.searchPlaceholder}\n clearable\n .value=${this._searchTerm}\n @nile-input=${this._onSearchInput}\n @nile-clear=${this._onSearchClear}\n >\n <nile-icon slot=\"prefix\" name=\"search\" library=\"system\"></nile-icon>\n </nile-input>\n </slot>\n <slot name=\"toolbar-actions\" class=\"detail__selection-actions\">\n ${this.showSelectedToggle\n ? html`\n <nile-link\n href=\"#\"\n variant=\"subtle\"\n class=\"detail__selected-toggle\"\n @click=${this._onToggleSelectedOnly}\n >\n <nile-icon slot=\"prefix\" name=\"filter\" library=\"system\"></nile-icon>\n ${this._showSelectedOnly ? this.showAllLabel : this.selectedOnlyLabel}\n </nile-link>\n `\n : nothing}\n <nile-link href=\"#\" variant=\"subtle\" @click=${this._onRestore}>${this.restoreLabel}</nile-link>\n <nile-link href=\"#\" variant=\"subtle\" @click=${this._onClear}>${this.clearLabel}</nile-link>\n </slot>\n <slot name=\"tooblar-actions-suffix\"></slot>\n </div>\n <div\n part=\"selection-grid\"\n class=${classMap({\n 'detail__selection-grid': true,\n 'detail__selection-grid--virtual': virtualized,\n 'detail__selection-grid--vertical': isVertical,\n 'detail__selection-grid--both': isBoth,\n })}\n style=${gridStyle}\n >\n ${virtualized\n ? (isBoth\n ? this._renderBothVirtualGrid(laneHeightPx, columnWidth)\n : this._renderVirtualGrid(laneHeightPx, columnWidth, isVertical))\n : this._renderStaticGrid()}\n </div>\n `;\n }\n\n private _renderItemContent(item: SelectionItem): TemplateResult {\n const label = this._getItemLabel(item);\n const description = this._getItemDescription(item);\n const prefix = this._getItemPrefix(item);\n const suffix = this._getItemSuffix(item);\n const allowHtml = this.allowHtmlLabel;\n return html`\n ${prefix\n ? html`<span class=\"detail__selection-prefix\" part=\"item-prefix\">${allowHtml ? unsafeHTML(prefix) : prefix}</span>`\n : ''}\n <span class=\"detail__selection-text\" part=\"item-text\">\n <span class=\"detail__selection-item-label\" part=\"item-label\">${allowHtml ? unsafeHTML(label) : label}</span>\n ${description\n ? html`<span class=\"detail__selection-desc\" part=\"item-description\">${allowHtml ? unsafeHTML(description) : description}</span>`\n : ''}\n </span>\n ${suffix\n ? html`<span class=\"detail__selection-suffix\" part=\"item-suffix\">${allowHtml ? unsafeHTML(suffix) : suffix}</span>`\n : ''}\n `;\n }\n\n private _renderItemTooltip(item: SelectionItem, opts: { positionStyle?: string; extraClasses?: string } = {}): TemplateResult {\n const value = this._getItemValue(item);\n const label = this._getItemLabel(item);\n const description = this._getItemDescription(item);\n const isDisabled = this._getItemDisabled(item);\n const className = this._getItemClassName(item);\n const tooltipContent = description ? `${label} — ${description}` : label;\n\n const tooltipClass = `detail__selection-tooltip${opts.extraClasses ? ' ' + opts.extraClasses : ''}`;\n const checkboxClass = classMap({\n 'detail__selection-checkbox': true,\n 'detail__selection-checkbox--disabled': isDisabled,\n [className]: !!className,\n });\n\n return html`\n <nile-lite-tooltip\n class=${tooltipClass}\n content=${tooltipContent}\n size=\"small\"\n disabled\n style=${opts.positionStyle ?? nothing as any}\n >\n <nile-checkbox\n class=${checkboxClass}\n ?checked=${this._selectedSet.has(value)}\n ?disabled=${isDisabled}\n @nile-change=${(e: Event) => this._onItemChange(value, isDisabled, e)}\n >${this._renderItemContent(item)}</nile-checkbox>\n </nile-lite-tooltip>\n `;\n }\n\n private _renderStaticGrid(): TemplateResult {\n return html`${this._filteredItems.map(item => this._renderItemTooltip(item))}`;\n }\n\n private _renderBothVirtualGrid(_laneHeightPx: number, _columnWidthPx: number): TemplateResult {\n const rowV = this._rowVirtCtrl?.getVirtualizer();\n const colV = this._colVirtCtrl?.getVirtualizer();\n const rowTotal = rowV?.getTotalSize() ?? 0;\n const colTotal = colV?.getTotalSize() ?? 0;\n const rowItems = rowV?.getVirtualItems() ?? [];\n const colItems = colV?.getVirtualItems() ?? [];\n const cols = Math.max(1, this.matrixColumns);\n const total = this._filteredItems.length;\n\n return html`\n <div\n class=\"detail__selection-track\"\n style=\"width: ${colTotal}px; height: ${rowTotal}px; position: relative;\"\n >\n ${rowItems.flatMap(rvi =>\n colItems.map(cvi => {\n const idx = rvi.index * cols + cvi.index;\n if (idx >= total) return null;\n const item = this._filteredItems[idx];\n if (item === undefined) return null;\n const positionStyle = `position: absolute; top: ${rvi.start}px; left: ${cvi.start}px; width: ${cvi.size}px; height: ${rvi.size}px;`;\n return this._renderItemTooltip(item, {\n positionStyle,\n extraClasses: 'detail__selection-tooltip--virtual',\n });\n })\n )}\n </div>\n `;\n }\n\n private _renderVirtualGrid(\n laneHeightPx: number,\n _columnWidthPx: number,\n isVertical: boolean\n ): TemplateResult {\n const v = this._virtCtrl?.getVirtualizer();\n const totalSize = v?.getTotalSize() ?? 0;\n const virtualItems = v?.getVirtualItems() ?? [];\n const lanes = Math.max(1, isVertical ? this.gridColumns : this.gridRows);\n\n if (this._isInfiniteMode && virtualItems.length > 0) {\n const first = virtualItems[0].index;\n const last = virtualItems[virtualItems.length - 1].index;\n this._scheduleFetchForRange(first, last);\n }\n\n const trackStyle = isVertical\n ? `width: 100%; height: ${totalSize}px; position: relative;`\n : `width: ${totalSize}px; height: 100%; position: relative;`;\n\n return html`\n <div class=\"detail__selection-track\" style=${trackStyle}>\n ${virtualItems.map(vi => {\n const laneIdx = vi.lane ?? 0;\n const positionStyle = isVertical\n ? `position: absolute; top: ${vi.start}px; left: calc(${laneIdx} * (100% / ${lanes})); width: calc(100% / ${lanes}); height: ${vi.size}px;`\n : `position: absolute; top: ${laneIdx * laneHeightPx}px; left: ${vi.start}px; width: ${vi.size}px; height: ${laneHeightPx}px;`;\n const item = this._getItemAt(vi.index);\n if (item === undefined) {\n return this._renderPlaceholder(positionStyle);\n }\n return this._renderItemTooltip(item, {\n positionStyle,\n extraClasses: 'detail__selection-tooltip--virtual',\n });\n })}\n </div>\n `;\n }\n\n private _renderPlaceholder(positionStyle: string): TemplateResult {\n return html`\n <div class=\"detail__selection-placeholder\" style=${positionStyle} part=\"item-placeholder\">\n <div class=\"detail__selection-placeholder-bar\"></div>\n <span class=\"detail__selection-placeholder-label\">${this.placeholderLabel}</span>\n </div>\n `;\n }\n\n render(): TemplateResult {\n const isSelection = this._isSelectionVariant;\n return html`\n <details\n part=\"base\"\n ?open=${this._detailOpen}\n class=${classMap({\n 'detail': true,\n 'detail--open': this.open,\n 'detail--disabled': this.disabled,\n 'detail--selection': isSelection,\n 'detail--light': this._isLightVariant,\n 'detail--preview': this._isPreviewActive,\n })}\n >\n <summary\n part=\"header\"\n id=\"header\"\n class=${classMap({\n 'detail__header': true,\n 'detail__header--icon-left': this.expandIconPlacement === 'left',\n })}\n aria-label=${this._summaryLabel || nothing}\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-disabled=${this.disabled ? 'true' : 'false'}\n tabindex=${this.disabled ? '-1' : '0'}\n @click=${this._handleSummaryClick}\n @keydown=${this._handleSummaryKeyDown}\n >\n <slot name=\"label\" part=\"label\" class=\"detail__label\">\n ${isSelection\n ? this._renderSelectionLabel()\n : html`\n <span part=\"label-text\" class=\"detail__heading-text\">${this.heading}</span>\n ${this.description\n ? html`<span part=\"description\" class=\"detail__description\">${this.description}</span>`\n : ''}\n `}\n </slot>\n\n <slot name=\"header-actions\" part=\"header-actions\" class=\"detail__header-actions\"></slot>\n\n <slot name=\"prefix\" part=\"prefix\" class=\"detail__prefix\"></slot>\n\n <span part=\"summary-icon\" class=\"detail__summary-icon\" aria-hidden=\"true\">\n <slot name=\"expand-icon\">\n <nile-icon\n name=\"var(--nile-icon-arrow-right, var(--ng-icon-chevron-right))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n library=\"system\"\n ></nile-icon>\n </slot>\n </span>\n\n <slot name=\"suffix\" part=\"suffix\" class=\"detail__suffix\"></slot>\n\n </summary>\n\n <div\n part=\"content\"\n class=${classMap({\n 'detail__body': true,\n 'detail__body--preview': this._isPreviewActive,\n })}\n role=${this._isPreviewActive ? 'button' : nothing}\n tabindex=${this._isPreviewActive && !this.disabled ? '0' : nothing}\n aria-label=${this._isPreviewActive ? 'Expand to view full content' : nothing}\n @click=${this._handlePreviewClick}\n @keydown=${this._handlePreviewKeyDown}\n >\n ${isSelection\n ? html`<div part=\"selection-content\" class=\"detail__selection-content\">${this._renderSelectionBody()}</div>`\n : ''}\n <slot\n id=\"content\"\n class=${classMap({\n 'detail__content': true,\n 'detail__content--empty': !this._hasSlottedContent,\n })}\n @slotchange=${this._handleDefaultSlotChange}\n ></slot>\n </div>\n </details>\n `;\n }\n}\n\nexport default NileDetail;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-detail': NileDetail;\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import type { NileDetail } from './nile-detail';
2
+ export declare function getPreviewHeight(component: NileDetail): number;
2
3
  export declare function animateShow(component: NileDetail): Promise<void>;
3
4
  export declare function animateHide(component: NileDetail): Promise<void>;
4
5
  export declare function showDetail(component: NileDetail): Promise<unknown>;
@@ -1,8 +1,19 @@
1
1
  import { animateTo, shimKeyframesHeightAuto, stopAnimations } from '../internal/animate';
2
2
  import { getAnimation, setDefaultAnimation } from '../utilities/animation-registry';
3
3
  import { waitForEvent } from '../internal/event';
4
+ export function getPreviewHeight(component) {
5
+ if (!component.preview) {
6
+ return 0;
7
+ }
8
+ const pct = Math.min(100, Math.max(0, component.previewPercentage));
9
+ if (pct <= 0) {
10
+ return 0;
11
+ }
12
+ return Math.max(1, Math.round((component.body.scrollHeight * pct) / 100));
13
+ }
4
14
  /*
5
15
  Runs the show animation on the detail body.
16
+ In preview mode the animation starts from the preview height instead of 0.
6
17
  Emits nile-show (cancelable) before and nile-after-show after the animation.
7
18
  */
8
19
  export async function animateShow(component) {
@@ -13,13 +24,21 @@ export async function animateShow(component) {
13
24
  }
14
25
  await stopAnimations(component.body);
15
26
  component.body.hidden = false;
27
+ const previewHeight = getPreviewHeight(component);
16
28
  const { keyframes, options } = getAnimation(component, 'detail.show', { dir: 'ltr' });
17
- await animateTo(component.body, shimKeyframesHeightAuto(keyframes, component.body.scrollHeight), options);
29
+ const frames = previewHeight > 0
30
+ ? [
31
+ { height: `${previewHeight}px`, opacity: '1' },
32
+ { height: 'auto', opacity: '1' }
33
+ ]
34
+ : keyframes;
35
+ await animateTo(component.body, shimKeyframesHeightAuto(frames, component.body.scrollHeight), options);
18
36
  component.body.style.height = 'auto';
19
37
  component.emit('nile-after-show');
20
38
  }
21
39
  /*
22
40
  Runs the hide animation on the detail body.
41
+ In preview mode the body collapses to the preview height and stays visible.
23
42
  Emits nile-hide (cancelable) before and nile-after-hide after the animation.
24
43
  */
25
44
  export async function animateHide(component) {
@@ -29,10 +48,21 @@ export async function animateHide(component) {
29
48
  return;
30
49
  }
31
50
  await stopAnimations(component.body);
51
+ const previewHeight = getPreviewHeight(component);
32
52
  const { keyframes, options } = getAnimation(component, 'detail.hide', { dir: 'ltr' });
33
- await animateTo(component.body, shimKeyframesHeightAuto(keyframes, component.body.scrollHeight), options);
34
- component.body.hidden = true;
35
- component.body.style.height = 'auto';
53
+ if (previewHeight > 0) {
54
+ const frames = [
55
+ { height: 'auto', opacity: '1' },
56
+ { height: `${previewHeight}px`, opacity: '1' }
57
+ ];
58
+ await animateTo(component.body, shimKeyframesHeightAuto(frames, component.body.scrollHeight), options);
59
+ component.body.style.height = `${previewHeight}px`;
60
+ }
61
+ else {
62
+ await animateTo(component.body, shimKeyframesHeightAuto(keyframes, component.body.scrollHeight), options);
63
+ component.body.hidden = true;
64
+ component.body.style.height = 'auto';
65
+ }
36
66
  component.emit('nile-after-hide');
37
67
  }
38
68
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"nile-detail.utils.js","sourceRoot":"","sources":["../../../src/nile-detail/nile-detail.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { animateTo, shimKeyframesHeightAuto, stopAnimations } from '../internal/animate';\nimport { getAnimation, setDefaultAnimation } from '../utilities/animation-registry';\nimport { waitForEvent } from '../internal/event';\nimport type { NileDetail } from './nile-detail';\n\n/*\n Runs the show animation on the detail body.\n Emits nile-show (cancelable) before and nile-after-show after the animation.\n*/\nexport async function animateShow(component: NileDetail): Promise<void> {\n const nileShow = component.emit('nile-show', { cancelable: true });\n if (nileShow.defaultPrevented) {\n component.open = false;\n return;\n }\n\n await stopAnimations(component.body);\n component.body.hidden = false;\n\n const { keyframes, options } = getAnimation(component, 'detail.show', { dir: 'ltr' });\n await animateTo(component.body, shimKeyframesHeightAuto(keyframes, component.body.scrollHeight), options);\n component.body.style.height = 'auto';\n\n component.emit('nile-after-show');\n}\n\n/*\n Runs the hide animation on the detail body.\n Emits nile-hide (cancelable) before and nile-after-hide after the animation.\n*/\nexport async function animateHide(component: NileDetail): Promise<void> {\n const nileHide = component.emit('nile-hide', { cancelable: true });\n if (nileHide.defaultPrevented) {\n component.open = true;\n return;\n }\n\n await stopAnimations(component.body);\n\n const { keyframes, options } = getAnimation(component, 'detail.hide', { dir: 'ltr' });\n await animateTo(component.body, shimKeyframesHeightAuto(keyframes, component.body.scrollHeight), options);\n component.body.hidden = true;\n component.body.style.height = 'auto';\n\n component.emit('nile-after-hide');\n}\n\n/*\n Programmatically shows the detail if it is not already open or disabled.\n Returns a promise that resolves after the show animation completes.\n*/\nexport async function showDetail(component: NileDetail): Promise<unknown> {\n if (component.open || component.disabled) {\n return undefined;\n }\n component.open = true;\n return waitForEvent(component, 'nile-after-show');\n}\n\n/*\n Programmatically hides the detail if it is not already closed or disabled.\n Returns a promise that resolves after the hide animation completes.\n*/\nexport async function hideDetail(component: NileDetail): Promise<unknown> {\n if (!component.open || component.disabled) {\n return undefined;\n }\n component.open = false;\n return waitForEvent(component, 'nile-after-hide');\n}\n\n/*\n Handles click on the header summary row.\n Toggles the detail open/close and focuses the header.\n*/\nexport function handleSummaryClick(component: NileDetail): void {\n if (!component.disabled) {\n if (component.open) {\n hideDetail(component);\n } else {\n showDetail(component);\n }\n }\n}\n\n/*\n Handles keyboard interaction on the header summary row.\n Enter/Space toggles, ArrowUp/Left closes, ArrowDown/Right opens.\n*/\nexport function handleSummaryKeyDown(event: KeyboardEvent, component: NileDetail): void {\n event.preventDefault();\n\n if (event.key === 'Enter' || event.key === ' ') {\n if (component.open) {\n hideDetail(component);\n } else {\n showDetail(component);\n }\n }\n\n if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n hideDetail(component);\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n showDetail(component);\n }\n}\n\n/*\n Registers the default show and hide animations for the detail component.\n Show: animates from height 0 / opacity 0 to auto / 1 over 300ms.\n Hide: animates from auto / 1 to height 0 / opacity 0 over 300ms.\n*/\nexport function registerDefaultAnimations(): void {\n setDefaultAnimation('detail.show', {\n keyframes: [\n { height: '0', opacity: '0' },\n { height: 'auto', opacity: '1' }\n ],\n options: { duration: 300, easing: 'ease' }\n });\n\n setDefaultAnimation('detail.hide', {\n keyframes: [\n { height: 'auto', opacity: '1' },\n { height: '0', opacity: '0' }\n ],\n options: { duration: 300, easing: 'ease' }\n });\n}\n\nregisterDefaultAnimations();"]}
1
+ {"version":3,"file":"nile-detail.utils.js","sourceRoot":"","sources":["../../../src/nile-detail/nile-detail.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { animateTo, shimKeyframesHeightAuto, stopAnimations } from '../internal/animate';\nimport { getAnimation, setDefaultAnimation } from '../utilities/animation-registry';\nimport { waitForEvent } from '../internal/event';\nimport type { NileDetail } from './nile-detail';\nexport function getPreviewHeight(component: NileDetail): number {\n if (!component.preview) {\n return 0;\n }\n const pct = Math.min(100, Math.max(0, component.previewPercentage));\n if (pct <= 0) {\n return 0;\n }\n return Math.max(1, Math.round((component.body.scrollHeight * pct) / 100));\n}\n\n/*\n Runs the show animation on the detail body.\n In preview mode the animation starts from the preview height instead of 0.\n Emits nile-show (cancelable) before and nile-after-show after the animation.\n*/\nexport async function animateShow(component: NileDetail): Promise<void> {\n const nileShow = component.emit('nile-show', { cancelable: true });\n if (nileShow.defaultPrevented) {\n component.open = false;\n return;\n }\n\n await stopAnimations(component.body);\n component.body.hidden = false;\n\n const previewHeight = getPreviewHeight(component);\n const { keyframes, options } = getAnimation(component, 'detail.show', { dir: 'ltr' });\n const frames = previewHeight > 0\n ? [\n { height: `${previewHeight}px`, opacity: '1' },\n { height: 'auto', opacity: '1' }\n ]\n : keyframes;\n await animateTo(component.body, shimKeyframesHeightAuto(frames, component.body.scrollHeight), options);\n component.body.style.height = 'auto';\n\n component.emit('nile-after-show');\n}\n\n/*\n Runs the hide animation on the detail body.\n In preview mode the body collapses to the preview height and stays visible.\n Emits nile-hide (cancelable) before and nile-after-hide after the animation.\n*/\nexport async function animateHide(component: NileDetail): Promise<void> {\n const nileHide = component.emit('nile-hide', { cancelable: true });\n if (nileHide.defaultPrevented) {\n component.open = true;\n return;\n }\n\n await stopAnimations(component.body);\n\n const previewHeight = getPreviewHeight(component);\n const { keyframes, options } = getAnimation(component, 'detail.hide', { dir: 'ltr' });\n\n if (previewHeight > 0) {\n const frames = [\n { height: 'auto', opacity: '1' },\n { height: `${previewHeight}px`, opacity: '1' }\n ];\n await animateTo(component.body, shimKeyframesHeightAuto(frames, component.body.scrollHeight), options);\n component.body.style.height = `${previewHeight}px`;\n } else {\n await animateTo(component.body, shimKeyframesHeightAuto(keyframes, component.body.scrollHeight), options);\n component.body.hidden = true;\n component.body.style.height = 'auto';\n }\n\n component.emit('nile-after-hide');\n}\n\n/*\n Programmatically shows the detail if it is not already open or disabled.\n Returns a promise that resolves after the show animation completes.\n*/\nexport async function showDetail(component: NileDetail): Promise<unknown> {\n if (component.open || component.disabled) {\n return undefined;\n }\n component.open = true;\n return waitForEvent(component, 'nile-after-show');\n}\n\n/*\n Programmatically hides the detail if it is not already closed or disabled.\n Returns a promise that resolves after the hide animation completes.\n*/\nexport async function hideDetail(component: NileDetail): Promise<unknown> {\n if (!component.open || component.disabled) {\n return undefined;\n }\n component.open = false;\n return waitForEvent(component, 'nile-after-hide');\n}\n\n/*\n Handles click on the header summary row.\n Toggles the detail open/close and focuses the header.\n*/\nexport function handleSummaryClick(component: NileDetail): void {\n if (!component.disabled) {\n if (component.open) {\n hideDetail(component);\n } else {\n showDetail(component);\n }\n }\n}\n\n/*\n Handles keyboard interaction on the header summary row.\n Enter/Space toggles, ArrowUp/Left closes, ArrowDown/Right opens.\n*/\nexport function handleSummaryKeyDown(event: KeyboardEvent, component: NileDetail): void {\n event.preventDefault();\n\n if (event.key === 'Enter' || event.key === ' ') {\n if (component.open) {\n hideDetail(component);\n } else {\n showDetail(component);\n }\n }\n\n if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n hideDetail(component);\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n showDetail(component);\n }\n}\n\n/*\n Registers the default show and hide animations for the detail component.\n Show: animates from height 0 / opacity 0 to auto / 1 over 300ms.\n Hide: animates from auto / 1 to height 0 / opacity 0 over 300ms.\n*/\nexport function registerDefaultAnimations(): void {\n setDefaultAnimation('detail.show', {\n keyframes: [\n { height: '0', opacity: '0' },\n { height: 'auto', opacity: '1' }\n ],\n options: { duration: 300, easing: 'ease' }\n });\n\n setDefaultAnimation('detail.hide', {\n keyframes: [\n { height: 'auto', opacity: '1' },\n { height: '0', opacity: '0' }\n ],\n options: { duration: 300, easing: 'ease' }\n });\n}\n\nregisterDefaultAnimations();"]}
@@ -35,7 +35,7 @@ export const styles = css `
35
35
  --indent-guide-offset: 0;
36
36
  --indent-guide-style: solid;
37
37
  --indent-guide-width: 0;
38
- --indent-size: var(--nile-spacing-2xl);
38
+ --indent-size: var(--nile-spacing-2xl, var(--ng-spacing-2xl));
39
39
 
40
40
  display: block;
41
41
  isolation: isolate;
@@ -1 +1 @@
1
- {"version":3,"file":"nile-tree.css.js","sourceRoot":"","sources":["../../../src/nile-tree/nile-tree.css.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AAEF,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n* Copyright Aquera Inc 2023\n*\n* This source code is licensed under the BSD-3-Clause license found in the\n* LICENSE file in the root directory of this source tree.\n*/\n\nimport {css} from 'lit';\n\n/**\n * Tree CSS\n */\nexport const styles = css`\n :host {\n box-sizing: border-box;\n -webkit-font-smoothing: var(--nile-webkit-font-smoothing, var(--ng-webkit-font-smoothing));\n -moz-osx-font-smoothing: var(--nile-moz-osx-font-smoothing, var(--ng-moz-osx-font-smoothing));\n text-rendering: var(--nile-text-rendering, var(--ng-text-rendering));\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n [hidden] {\n display: none !important;\n }\n\n :host {\n /*\n * These are actually used by tree item, but we define them here so they can more easily be set and all tree items\n * stay consistent.\n */\n --indent-guide-color: var(--nile-colors-dark-200);\n --indent-guide-offset: 0;\n --indent-guide-style: solid;\n --indent-guide-width: 0;\n --indent-size: var(--nile-spacing-2xl);\n\n display: block;\n isolation: isolate;\n\n /*\n * Tree item indentation uses the \"em\" unit to increment its width on each level, so setting the font size to zero\n * here removes the indentation for all the nodes on the first level.\n */\n font-size: 0;\n }\n`;\n\nexport default [styles];\n"]}
1
+ {"version":3,"file":"nile-tree.css.js","sourceRoot":"","sources":["../../../src/nile-tree/nile-tree.css.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AAEF,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n* Copyright Aquera Inc 2023\n*\n* This source code is licensed under the BSD-3-Clause license found in the\n* LICENSE file in the root directory of this source tree.\n*/\n\nimport {css} from 'lit';\n\n/**\n * Tree CSS\n */\nexport const styles = css`\n :host {\n box-sizing: border-box;\n -webkit-font-smoothing: var(--nile-webkit-font-smoothing, var(--ng-webkit-font-smoothing));\n -moz-osx-font-smoothing: var(--nile-moz-osx-font-smoothing, var(--ng-moz-osx-font-smoothing));\n text-rendering: var(--nile-text-rendering, var(--ng-text-rendering));\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n [hidden] {\n display: none !important;\n }\n\n :host {\n /*\n * These are actually used by tree item, but we define them here so they can more easily be set and all tree items\n * stay consistent.\n */\n --indent-guide-color: var(--nile-colors-dark-200);\n --indent-guide-offset: 0;\n --indent-guide-style: solid;\n --indent-guide-width: 0;\n --indent-size: var(--nile-spacing-2xl, var(--ng-spacing-2xl));\n\n display: block;\n isolation: isolate;\n\n /*\n * Tree item indentation uses the \"em\" unit to increment its width on each level, so setting the font size to zero\n * here removes the indentation for all the nodes on the first level.\n */\n font-size: 0;\n }\n`;\n\nexport default [styles];\n"]}
@@ -37,7 +37,7 @@ export const styles = css `
37
37
  }
38
38
 
39
39
  slot:not([name])::slotted(nile-icon) {
40
- margin-inline-end: var(--nile-spacing-md);
40
+ margin-inline-end: var(--nile-spacing-md, var(--ng-spacing-md));
41
41
  }
42
42
 
43
43
  .tree-item {
@@ -45,7 +45,7 @@ export const styles = css `
45
45
  display: flex;
46
46
  align-items: stretch;
47
47
  flex-direction: column;
48
- color: var(--nile-colors-dark-900);
48
+ color: var(--nile-colors-dark-900, var(--ng-colors-text-secondary-700));
49
49
  cursor: pointer;
50
50
  user-select: none;
51
51
  }
@@ -57,9 +57,9 @@ export const styles = css `
57
57
  .tree-item__expand-button,
58
58
  .tree-item__checkbox,
59
59
  .tree-item__label {
60
- font-family: var(--nile-font-family-serif);
61
- font-size: var(--nile-type-scale-4);
62
- font-weight: var(--nile-font-weight-regular);
60
+ font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
61
+ font-size: var(--nile-type-scale-4, var(--ng-font-size-text-sm));
62
+ font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-medium));
63
63
  }
64
64
 
65
65
  .tree-item__checkbox::part(base) {
@@ -78,8 +78,8 @@ export const styles = css `
78
78
  align-items: center;
79
79
  justify-content: center;
80
80
  box-sizing: content-box;
81
- color: var(--nile-colors-neutral-500);
82
- padding: var(--nile-spacing-md);
81
+ color: var(--nile-colors-neutral-500, var(--ng-colors-fg-tertiary-600));
82
+ padding: var(--nile-spacing-md, var(--ng-spacing-md));
83
83
  width: 1rem;
84
84
  height: 1rem;
85
85
  flex-shrink: 0;
@@ -130,12 +130,12 @@ export const styles = css `
130
130
  }
131
131
 
132
132
  :host(:not([aria-disabled='true'])) .tree-item--selected .tree-item__item {
133
- background-color: var(--nile-colors-primary-100);
134
- border-inline-start-color: var(--nile-colors-primary-700);
133
+ background-color: var(--nile-colors-primary-100, var(--ng-colors-bg-brand-primary));
134
+ border-inline-start-color: var(--nile-colors-primary-700, var(--ng-colors-border-brand));
135
135
  }
136
136
 
137
137
  :host(:not([aria-disabled='true'])) .tree-item__expand-button {
138
- color: var(--nile-colors-dark-900);
138
+ color: var(--nile-colors-dark-900, var(--ng-colors-fg-tertiary-600));
139
139
  }
140
140
 
141
141
  .tree-item__label {
@@ -1 +1 @@
1
- {"version":3,"file":"nile-tree-item.css.js","sourceRoot":"","sources":["../../../src/nile-tree-item/nile-tree-item.css.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AAEF,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsKxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n* Copyright Aquera Inc 2023\n*\n* This source code is licensed under the BSD-3-Clause license found in the\n* LICENSE file in the root directory of this source tree.\n*/\n\nimport {css} from 'lit';\n\n/**\n * TreeItem CSS\n */\nexport const styles = css`\n :host {\n box-sizing: border-box;\n -webkit-font-smoothing: var(--nile-webkit-font-smoothing, var(--ng-webkit-font-smoothing));\n -moz-osx-font-smoothing: var(--nile-moz-osx-font-smoothing, var(--ng-moz-osx-font-smoothing));\n text-rendering: var(--nile-text-rendering, var(--ng-text-rendering));\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n [hidden] {\n display: none !important;\n }\n\n :host {\n display: block;\n outline: 0;\n z-index: 0;\n }\n\n :host(:focus) {\n outline: none;\n }\n\n slot:not([name])::slotted(nile-icon) {\n margin-inline-end: var(--nile-spacing-md);\n }\n\n .tree-item {\n position: relative;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n color: var(--nile-colors-dark-900);\n cursor: pointer;\n user-select: none;\n }\n\n .tree-item__checkbox {\n pointer-events: none;\n }\n\n .tree-item__expand-button,\n .tree-item__checkbox,\n .tree-item__label {\n font-family: var(--nile-font-family-serif);\n font-size: var(--nile-type-scale-4);\n font-weight: var(--nile-font-weight-regular);\n }\n\n .tree-item__checkbox::part(base) {\n display: flex;\n align-items: center;\n }\n\n .tree-item__indentation {\n display: block;\n width: 1em;\n flex-shrink: 0;\n }\n\n .tree-item__expand-button {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: content-box;\n color: var(--nile-colors-neutral-500);\n padding: var(--nile-spacing-md);\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n cursor: pointer;\n }\n\n .tree-item__expand-button {\n transition: 250ms rotate ease;\n }\n\n .tree-item--expanded .tree-item__expand-button {\n rotate: 90deg;\n }\n\n .tree-item--expanded.tree-item--rtl .tree-item__expand-button {\n rotate: -90deg;\n }\n\n .tree-item--expanded slot[name='expand-icon'],\n .tree-item:not(.tree-item--expanded) slot[name='collapse-icon'] {\n display: none;\n }\n\n .tree-item:not(.tree-item--has-expand-button) .tree-item__expand-icon-slot {\n display: none;\n }\n\n .tree-item__expand-button--visible {\n cursor: pointer;\n }\n\n .tree-item__item {\n display: flex;\n align-items: center;\n border-inline-start: solid 3px transparent;\n }\n\n .tree-item--disabled .tree-item__item {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n\n :host(:focus-visible) .tree-item__item {\n outline: solid 3px var(--nile-colors-neutral-500);\n outline-offset: 1px;\n z-index: 2;\n }\n\n :host(:not([aria-disabled='true'])) .tree-item--selected .tree-item__item {\n background-color: var(--nile-colors-primary-100);\n border-inline-start-color: var(--nile-colors-primary-700);\n }\n\n :host(:not([aria-disabled='true'])) .tree-item__expand-button {\n color: var(--nile-colors-dark-900);\n }\n\n .tree-item__label {\n display: flex;\n align-items: center;\n transition: 150ms color;\n }\n\n .tree-item__children {\n display: block;\n font-size: calc(1em + var(--indent-size, 1rem));\n }\n\n /* Indentation lines */\n .tree-item__children {\n position: relative;\n }\n\n .tree-item__children::before {\n content: '';\n position: absolute;\n top: var(--indent-guide-offset);\n bottom: var(--indent-guide-offset);\n left: calc(1em - (var(--indent-guide-width) / 2) - 1px);\n border-inline-end: var(--indent-guide-width) var(--indent-guide-style) var(--indent-guide-color);\n z-index: 1;\n }\n\n .tree-item--rtl .tree-item__children::before {\n left: auto;\n right: 1em;\n }\n\n @media (forced-colors: active) {\n :host(:not([aria-disabled='true'])) .tree-item--selected .tree-item__item {\n outline: dashed 1px SelectedItem;\n }\n }\n`;\n\nexport default [styles];\n"]}
1
+ {"version":3,"file":"nile-tree-item.css.js","sourceRoot":"","sources":["../../../src/nile-tree-item/nile-tree-item.css.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AAEF,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsKxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n* Copyright Aquera Inc 2023\n*\n* This source code is licensed under the BSD-3-Clause license found in the\n* LICENSE file in the root directory of this source tree.\n*/\n\nimport {css} from 'lit';\n\n/**\n * TreeItem CSS\n */\nexport const styles = css`\n :host {\n box-sizing: border-box;\n -webkit-font-smoothing: var(--nile-webkit-font-smoothing, var(--ng-webkit-font-smoothing));\n -moz-osx-font-smoothing: var(--nile-moz-osx-font-smoothing, var(--ng-moz-osx-font-smoothing));\n text-rendering: var(--nile-text-rendering, var(--ng-text-rendering));\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n [hidden] {\n display: none !important;\n }\n\n :host {\n display: block;\n outline: 0;\n z-index: 0;\n }\n\n :host(:focus) {\n outline: none;\n }\n\n slot:not([name])::slotted(nile-icon) {\n margin-inline-end: var(--nile-spacing-md, var(--ng-spacing-md));\n }\n\n .tree-item {\n position: relative;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n color: var(--nile-colors-dark-900, var(--ng-colors-text-secondary-700));\n cursor: pointer;\n user-select: none;\n }\n\n .tree-item__checkbox {\n pointer-events: none;\n }\n\n .tree-item__expand-button,\n .tree-item__checkbox,\n .tree-item__label {\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n font-size: var(--nile-type-scale-4, var(--ng-font-size-text-sm));\n font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-medium));\n }\n\n .tree-item__checkbox::part(base) {\n display: flex;\n align-items: center;\n }\n\n .tree-item__indentation {\n display: block;\n width: 1em;\n flex-shrink: 0;\n }\n\n .tree-item__expand-button {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: content-box;\n color: var(--nile-colors-neutral-500, var(--ng-colors-fg-tertiary-600));\n padding: var(--nile-spacing-md, var(--ng-spacing-md));\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n cursor: pointer;\n }\n\n .tree-item__expand-button {\n transition: 250ms rotate ease;\n }\n\n .tree-item--expanded .tree-item__expand-button {\n rotate: 90deg;\n }\n\n .tree-item--expanded.tree-item--rtl .tree-item__expand-button {\n rotate: -90deg;\n }\n\n .tree-item--expanded slot[name='expand-icon'],\n .tree-item:not(.tree-item--expanded) slot[name='collapse-icon'] {\n display: none;\n }\n\n .tree-item:not(.tree-item--has-expand-button) .tree-item__expand-icon-slot {\n display: none;\n }\n\n .tree-item__expand-button--visible {\n cursor: pointer;\n }\n\n .tree-item__item {\n display: flex;\n align-items: center;\n border-inline-start: solid 3px transparent;\n }\n\n .tree-item--disabled .tree-item__item {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n\n :host(:focus-visible) .tree-item__item {\n outline: solid 3px var(--nile-colors-neutral-500);\n outline-offset: 1px;\n z-index: 2;\n }\n\n :host(:not([aria-disabled='true'])) .tree-item--selected .tree-item__item {\n background-color: var(--nile-colors-primary-100, var(--ng-colors-bg-brand-primary));\n border-inline-start-color: var(--nile-colors-primary-700, var(--ng-colors-border-brand));\n }\n\n :host(:not([aria-disabled='true'])) .tree-item__expand-button {\n color: var(--nile-colors-dark-900, var(--ng-colors-fg-tertiary-600));\n }\n\n .tree-item__label {\n display: flex;\n align-items: center;\n transition: 150ms color;\n }\n\n .tree-item__children {\n display: block;\n font-size: calc(1em + var(--indent-size, 1rem));\n }\n\n /* Indentation lines */\n .tree-item__children {\n position: relative;\n }\n\n .tree-item__children::before {\n content: '';\n position: absolute;\n top: var(--indent-guide-offset);\n bottom: var(--indent-guide-offset);\n left: calc(1em - (var(--indent-guide-width) / 2) - 1px);\n border-inline-end: var(--indent-guide-width) var(--indent-guide-style) var(--indent-guide-color);\n z-index: 1;\n }\n\n .tree-item--rtl .tree-item__children::before {\n left: auto;\n right: 1em;\n }\n\n @media (forced-colors: active) {\n :host(:not([aria-disabled='true'])) .tree-item--selected .tree-item__item {\n outline: dashed 1px SelectedItem;\n }\n }\n`;\n\nexport default [styles];\n"]}
@@ -1,5 +1,5 @@
1
1
  // Version utility - placeholders will be replaced during build
2
- export const NILE_ELEMENTS_VERSION = '1.8.2';
2
+ export const NILE_ELEMENTS_VERSION = '1.8.4';
3
3
  export const NILE_VERSION = '1.2.6';
4
4
  // Set global versions for runtime access
5
5
  if (typeof window !== 'undefined') {
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AACjE,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAE/C,yCAAyC;AACzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,mBAAmB,GAAG,qBAAqB,CAAC;IAC3D,MAAc,CAAC,WAAW,GAAG,YAAY,CAAC;IAC3C,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;AACzE,CAAC","sourcesContent":["// Version utility - placeholders will be replaced during build\nexport const NILE_ELEMENTS_VERSION = '1.8.2';\nexport const NILE_VERSION = '1.2.6';\n\n// Set global versions for runtime access\nif (typeof window !== 'undefined') {\n (window as any).nileElementsVersion = NILE_ELEMENTS_VERSION;\n (window as any).nileVersion = NILE_VERSION;\n window.process = window.process || { env: { NODE_ENV: 'production' } };\n}\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AACjE,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAE/C,yCAAyC;AACzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,mBAAmB,GAAG,qBAAqB,CAAC;IAC3D,MAAc,CAAC,WAAW,GAAG,YAAY,CAAC;IAC3C,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;AACzE,CAAC","sourcesContent":["// Version utility - placeholders will be replaced during build\nexport const NILE_ELEMENTS_VERSION = '1.8.4';\nexport const NILE_VERSION = '1.2.6';\n\n// Set global versions for runtime access\nif (typeof window !== 'undefined') {\n (window as any).nileElementsVersion = NILE_ELEMENTS_VERSION;\n (window as any).nileVersion = NILE_VERSION;\n window.process = window.process || { env: { NODE_ENV: 'production' } };\n}\n"]}