snice 7.7.0 → 7.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/react/SniceProvider.js +1 -1
- package/adapters/react/SniceRouter.js +1 -1
- package/adapters/react/calendar.d.ts +1 -0
- package/adapters/react/calendar.d.ts.map +1 -1
- package/adapters/react/calendar.js +1 -1
- package/adapters/react/calendar.js.map +1 -1
- package/adapters/react/calendar.tsx +2 -1
- package/adapters/react/matchRoute.js +1 -1
- package/adapters/react/useRequestHandler.js +1 -1
- package/bin/analyzer-contracts.js +8 -2
- package/custom-elements.json +5 -1
- package/dist/cdn/accordion/snice-accordion.js +1 -1
- package/dist/cdn/action-bar/snice-action-bar.js +1 -1
- package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
- package/dist/cdn/alert/snice-alert.js +1 -1
- package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
- package/dist/cdn/availability/snice-availability.js +1 -1
- package/dist/cdn/avatar/snice-avatar.js +1 -1
- package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
- package/dist/cdn/badge/snice-badge.js +1 -1
- package/dist/cdn/banner/snice-banner.js +1 -1
- package/dist/cdn/binpack/snice-binpack.js +1 -1
- package/dist/cdn/book/snice-book.js +1 -1
- package/dist/cdn/booking/snice-booking.js +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
- package/dist/cdn/button/snice-button.js +1 -1
- package/dist/cdn/calendar/README.md +2 -2
- package/dist/cdn/calendar/snice-calendar.js +26 -2
- package/dist/cdn/calendar/snice-calendar.js.map +1 -1
- package/dist/cdn/calendar/snice-calendar.min.js +2 -2
- package/dist/cdn/calendar/snice-calendar.min.js.map +1 -1
- package/dist/cdn/camera/snice-camera.js +1 -1
- package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
- package/dist/cdn/candlestick/snice-candlestick.js +1 -1
- package/dist/cdn/card/snice-card.js +1 -1
- package/dist/cdn/carousel/snice-carousel.js +1 -1
- package/dist/cdn/cart/snice-cart.js +1 -1
- package/dist/cdn/chart/snice-chart.js +1 -1
- package/dist/cdn/chat/snice-chat.js +1 -1
- package/dist/cdn/checkbox/snice-checkbox.js +1 -1
- package/dist/cdn/chip/snice-chip.js +1 -1
- package/dist/cdn/code-block/snice-code-block.js +1 -1
- package/dist/cdn/color-display/snice-color-display.js +1 -1
- package/dist/cdn/color-picker/snice-color-picker.js +1 -1
- package/dist/cdn/command-palette/snice-command-palette.js +1 -1
- package/dist/cdn/comments/snice-comments.js +1 -1
- package/dist/cdn/countdown/snice-countdown.js +1 -1
- package/dist/cdn/cropper/snice-cropper.js +1 -1
- package/dist/cdn/data-card/snice-data-card.js +1 -1
- package/dist/cdn/date-picker/snice-date-picker.js +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
- package/dist/cdn/diff/snice-diff.js +1 -1
- package/dist/cdn/divider/snice-divider.js +1 -1
- package/dist/cdn/doc/snice-doc.js +1 -1
- package/dist/cdn/draw/snice-draw.js +1 -1
- package/dist/cdn/drawer/snice-drawer.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.js +1 -1
- package/dist/cdn/estimate/snice-estimate.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.js +1 -1
- package/dist/cdn/flip-card/snice-flip-card.js +1 -1
- package/dist/cdn/flow/snice-flow.js +1 -1
- package/dist/cdn/form-layout/snice-form-layout.js +1 -1
- package/dist/cdn/funnel/snice-funnel.js +1 -1
- package/dist/cdn/gantt/snice-gantt.js +1 -1
- package/dist/cdn/gauge/snice-gauge.js +1 -1
- package/dist/cdn/grid/snice-grid.js +1 -1
- package/dist/cdn/heatmap/snice-heatmap.js +1 -1
- package/dist/cdn/image/snice-image.js +1 -1
- package/dist/cdn/input/snice-input.js +1 -1
- package/dist/cdn/invoice/snice-invoice.js +1 -1
- package/dist/cdn/kanban/snice-kanban.js +1 -1
- package/dist/cdn/key-value/snice-key-value.js +1 -1
- package/dist/cdn/kpi/snice-kpi.js +1 -1
- package/dist/cdn/layout/snice-layout.js +1 -1
- package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
- package/dist/cdn/link/snice-link.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.js +1 -1
- package/dist/cdn/list/snice-list.js +1 -1
- package/dist/cdn/location/snice-location.js +1 -1
- package/dist/cdn/login/snice-login.js +1 -1
- package/dist/cdn/map/snice-map.js +1 -1
- package/dist/cdn/markdown/snice-markdown.js +1 -1
- package/dist/cdn/masonry/snice-masonry.js +1 -1
- package/dist/cdn/menu/snice-menu.js +1 -1
- package/dist/cdn/message-strip/snice-message-strip.js +1 -1
- package/dist/cdn/modal/snice-modal.js +1 -1
- package/dist/cdn/music-player/snice-music-player.js +1 -1
- package/dist/cdn/nav/snice-nav.js +1 -1
- package/dist/cdn/network-graph/snice-network-graph.js +1 -1
- package/dist/cdn/notification-center/snice-notification-center.js +1 -1
- package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
- package/dist/cdn/org-chart/snice-org-chart.js +1 -1
- package/dist/cdn/pagination/snice-pagination.js +1 -1
- package/dist/cdn/paint/snice-paint.js +1 -1
- package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
- package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
- package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
- package/dist/cdn/popover/snice-popover.js +1 -1
- package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
- package/dist/cdn/product-card/snice-product-card.js +1 -1
- package/dist/cdn/progress/snice-progress.js +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
- package/dist/cdn/qr-code/snice-qr-code.js +1 -1
- package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
- package/dist/cdn/radio/snice-radio.js +1 -1
- package/dist/cdn/range-slider/snice-range-slider.js +1 -1
- package/dist/cdn/rating/snice-rating.js +1 -1
- package/dist/cdn/receipt/snice-receipt.js +1 -1
- package/dist/cdn/recipe/snice-recipe.js +1 -1
- package/dist/cdn/runtime/README.md +2 -2
- package/dist/cdn/runtime/snice-runtime.esm.js +130 -31
- package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.esm.min.js +1 -1
- package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.js +130 -31
- package/dist/cdn/runtime/snice-runtime.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.min.js +1 -1
- package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
- package/dist/cdn/sankey/snice-sankey.js +1 -1
- package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
- package/dist/cdn/select/snice-select.js +1 -1
- package/dist/cdn/skeleton/snice-skeleton.js +1 -1
- package/dist/cdn/slider/snice-slider.js +1 -1
- package/dist/cdn/sortable/snice-sortable.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.js +1 -1
- package/dist/cdn/spinner/snice-spinner.js +1 -1
- package/dist/cdn/split-button/snice-split-button.js +1 -1
- package/dist/cdn/split-pane/snice-split-pane.js +1 -1
- package/dist/cdn/spotlight/snice-spotlight.js +1 -1
- package/dist/cdn/stat-group/snice-stat-group.js +1 -1
- package/dist/cdn/step-input/snice-step-input.js +1 -1
- package/dist/cdn/stepper/snice-stepper.js +1 -1
- package/dist/cdn/switch/snice-switch.js +1 -1
- package/dist/cdn/table/README.md +2 -2
- package/dist/cdn/table/snice-table.esm.js +157 -33
- package/dist/cdn/table/snice-table.esm.js.map +1 -1
- package/dist/cdn/table/snice-table.esm.min.js +4 -4
- package/dist/cdn/table/snice-table.esm.min.js.map +1 -1
- package/dist/cdn/table/snice-table.js +157 -33
- package/dist/cdn/table/snice-table.js.map +1 -1
- package/dist/cdn/table/snice-table.min.js +33 -33
- package/dist/cdn/table/snice-table.min.js.map +1 -1
- package/dist/cdn/tabs/snice-tabs.js +1 -1
- package/dist/cdn/tag/snice-tag.js +1 -1
- package/dist/cdn/tag-input/README.md +2 -2
- package/dist/cdn/tag-input/snice-tag-input.js +10 -16
- package/dist/cdn/tag-input/snice-tag-input.js.map +1 -1
- package/dist/cdn/tag-input/snice-tag-input.min.js +2 -2
- package/dist/cdn/tag-input/snice-tag-input.min.js.map +1 -1
- package/dist/cdn/terminal/snice-terminal.js +1 -1
- package/dist/cdn/testimonial/snice-testimonial.js +1 -1
- package/dist/cdn/textarea/snice-textarea.js +1 -1
- package/dist/cdn/time-picker/snice-time-picker.js +1 -1
- package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
- package/dist/cdn/timeline/snice-timeline.js +1 -1
- package/dist/cdn/timer/snice-timer.js +1 -1
- package/dist/cdn/toast/snice-toast.js +1 -1
- package/dist/cdn/tooltip/snice-tooltip.js +1 -1
- package/dist/cdn/tree/snice-tree.js +1 -1
- package/dist/cdn/treemap/snice-treemap.js +1 -1
- package/dist/cdn/user-card/snice-user-card.js +1 -1
- package/dist/cdn/video-player/snice-video-player.js +1 -1
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
- package/dist/cdn/waterfall/snice-waterfall.js +1 -1
- package/dist/cdn/weather/snice-weather.js +1 -1
- package/dist/cdn/work-order/snice-work-order.js +1 -1
- package/dist/components/calendar/snice-calendar.d.ts +2 -0
- package/dist/components/calendar/snice-calendar.js +25 -1
- package/dist/components/calendar/snice-calendar.js.map +1 -1
- package/dist/components/table/snice-row.d.ts +6 -0
- package/dist/components/table/snice-row.js +11 -3
- package/dist/components/table/snice-row.js.map +1 -1
- package/dist/components/table/snice-table.d.ts +31 -3
- package/dist/components/table/snice-table.js +89 -16
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/table/table-cell-presentation.d.ts +11 -0
- package/dist/components/table/table-cell-presentation.js +25 -8
- package/dist/components/table/table-cell-presentation.js.map +1 -1
- package/dist/components/table/table-export.d.ts +6 -0
- package/dist/components/table/table-export.js +11 -2
- package/dist/components/table/table-export.js.map +1 -1
- package/dist/components/table/table-master-detail.d.ts +11 -2
- package/dist/components/table/table-master-detail.js +20 -3
- package/dist/components/table/table-master-detail.js.map +1 -1
- package/dist/components/tag-input/snice-tag-input.d.ts +2 -2
- package/dist/components/tag-input/snice-tag-input.js +9 -15
- package/dist/components/tag-input/snice-tag-input.js.map +1 -1
- package/dist/index.cjs +127 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +127 -28
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +127 -28
- package/dist/index.iife.js.map +1 -1
- package/dist/react/SniceProvider.js +1 -1
- package/dist/react/SniceRouter.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/matchRoute.js +1 -1
- package/dist/react/useRequestHandler.js +1 -1
- package/dist/request-response.d.ts +24 -1
- package/dist/symbols.cjs +1 -1
- package/dist/symbols.esm.js +1 -1
- package/dist/testing-dom.cjs +1 -1
- package/dist/testing-dom.esm.js +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/components/calendar.md +8 -0
- package/docs/ai/components/tag-input.md +4 -0
- package/docs/ai/controllers.md +22 -6
- package/docs/components/calendar.md +24 -0
- package/docs/components/tag-input.md +6 -1
- package/docs/controllers.md +57 -6
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snice-tag-input.js","sources":["../../../components/tag-input/snice-tag-input.css?inline","../../../../components/tag-input/snice-tag-input.ts"],"sourcesContent":["export default \":host([hidden]){display:none}:host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif)}.tag-input-wrapper{display:flex;flex-direction:column;gap:var(--snice-spacing-2xs,.25rem)}.tag-input-label{font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-medium,500);color:var(--snice-color-text,rgb(23 23 23))}.tag-input-container{display:flex;flex-wrap:wrap;align-items:center;gap:var(--snice-spacing-2xs,.25rem);padding:var(--snice-spacing-xs,.5rem);border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-md,.25rem);background:var(--snice-color-surface,rgb(255 255 255));cursor:text;transition:border-color var(--snice-transition-fast, 150ms) ease,box-shadow var(--snice-transition-fast, 150ms) ease;min-height:2.5rem;position:relative}.tag-input-container:focus-within{border-color:var(--snice-color-primary,rgb(37 99 235));box-shadow:0 0 0 var(--snice-focus-ring-width,2px) var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.tag-input-container--disabled{opacity:.5;cursor:not-allowed;background:var(--snice-color-surface-container-high,rgb(252 251 249))}.tag-input-container--invalid{border-color:var(--snice-color-danger,rgb(220 38 38))}.tag{display:inline-flex;align-items:center;gap:var(--snice-spacing-2xs,.25rem);padding:var(--snice-spacing-3xs,.125rem) var(--snice-spacing-xs,.5rem);background:var(--snice-color-primary-subtle,hsl(214 100% 97%));color:var(--snice-color-primary-hover,hsl(217 77% 48%));border-radius:var(--snice-border-radius-md,.25rem);font-size:var(--snice-font-size-sm, .875rem);line-height:var(--snice-line-height-normal, 1.5);max-width:100%;animation:150ms tag-appear}@keyframes tag-appear{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.tag-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tag-remove{display:inline-flex;align-items:center;justify-content:center;background:0 0;border:none;cursor:pointer;padding:0;color:var(--snice-color-primary-hover,hsl(217 77% 48%));border-radius:var(--snice-border-radius-md,.25rem);width:1rem;height:1rem;flex-shrink:0;transition:background-color var(--snice-transition-fast, 150ms) ease}.tag-remove:hover{background:var(--snice-color-primary,hsl(217 83% 53%));color:var(--snice-color-text-inverse,rgb(250 250 250))}.tag-input-field{flex:1;min-width:4rem;border:none;outline:0;background:0 0;font-family:inherit;font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));padding:var(--snice-spacing-3xs,.125rem) 0}.tag-input-field::placeholder{color:var(--snice-color-text-tertiary,rgb(115 115 115))}.tag-input-field:disabled{cursor:not-allowed}.tag-suggestions{position:absolute;top:100%;left:-1px;right:-1px;margin-top:2px;background:var(--snice-color-surface,rgb(255 255 255));border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-md,.25rem);box-shadow:var(--snice-shadow-lg,0 10px 15px -3px rgb(0 0 0 / .1),0 4px 6px -4px rgb(0 0 0 / .1));max-height:12.5rem;overflow-y:auto;z-index:100}.tag-suggestion-item{padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-sm,.75rem);font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));cursor:pointer;transition:background-color var(--snice-transition-fast, 150ms) ease}.tag-suggestion-item--highlighted,.tag-suggestion-item:hover{background:var(--snice-color-surface-hover,rgb(241 241 241))}.tag-suggestion-item--highlighted{color:var(--snice-color-primary,rgb(37 99 235))}.tag-suggestions::-webkit-scrollbar{width:.5rem}.tag-suggestions::-webkit-scrollbar-track{background:var(--snice-color-surface-container-high,rgb(252 251 249));border-radius:9999px}.tag-suggestions::-webkit-scrollbar-thumb{background:var(--snice-color-border,rgb(226 226 226));border-radius:9999px}@media (prefers-reduced-motion:reduce){*{transition-duration:0s!important;animation-duration:0s!important}}\";","import { element, property, state, render, styles, dispatch, ready, dispose, reconnect, watch, query, html, css } from 'snice';\nimport type { SniceTagInputElement } from './snice-tag-input.types';\nimport tagInputStyles from './snice-tag-input.css?inline';\nimport { FormLabelAssociation } from '../form-label-association';\nimport { applyElementInternalsFormValue, applyElementInternalsValidity, findFormOwner, hasValidityError } from '../form-control-validity';\n\n@element('snice-tag-input', { formAssociated: true, delegatesFocus: true })\nexport class SniceTagInput extends HTMLElement implements SniceTagInputElement {\n internals!: ElementInternals;\n private dirtyValue = false;\n private suppressValueEvent = false;\n private customValidationMessage = '';\n private readonly labelAssociation: FormLabelAssociation;\n private validationInput?: HTMLInputElement;\n\n @state()\n private valueState: string[] = [];\n\n @state()\n private formDisabled = false;\n\n @state()\n private constraintInvalid = false;\n\n constructor() {\n super();\n if (typeof this.attachInternals == 'function') {\n this.internals = this.attachInternals();\n }\n this.labelAssociation = new FormLabelAssociation(\n this,\n () => this.internals,\n () => this.interactionDisabled ? undefined : this.validationAnchor,\n () => this.label || 'Tags'\n );\n }\n\n /**\n * Live tags. Assignments do not rewrite the authored reset default.\n * @public\n */\n get value(): string[] {\n return this.valueState;\n }\n\n set value(value: string[]) {\n this.setValue(value, true, true);\n }\n\n /** JSON-backed `value` content attribute and form-reset default. */\n @property({ type: Array, attribute: 'value' })\n defaultValue: string[] = [];\n\n formAssociatedCallback() {\n this.syncFormState();\n }\n\n formResetCallback() {\n this.dirtyValue = false;\n this.applyDefaultValue();\n this.clearDraft();\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncValidity();\n }\n\n formStateRestoreCallback(state: File | string | FormData | null) {\n if (typeof state !== 'string') return;\n try {\n const value = JSON.parse(state);\n if (Array.isArray(value)) {\n this.setValue(value.map(String), true, false);\n this.clearDraft();\n }\n } catch {\n // Ignore malformed browser restoration state.\n }\n }\n\n @property({ type: Array, attribute: false })\n suggestions: string[] = [];\n\n @property({ type: Number, attribute: 'max-tags' })\n maxTags: number = 0;\n\n @property({ type: Boolean, attribute: 'allow-duplicates' })\n allowDuplicates: boolean = false;\n\n @property() placeholder: string = 'Add a tag...';\n\n @property({ type: Boolean })\n disabled: boolean = false;\n\n @property({ type: Boolean })\n readonly: boolean = false;\n\n @property() label: string = '';\n @property() name: string = '';\n\n @property({ attribute: false })\n private inputValue: string = '';\n @property({ type: Array, attribute: false })\n private filteredSuggestions: string[] = [];\n @property({ type: Boolean, attribute: false })\n private showSuggestions: boolean = false;\n @property({ type: Number, attribute: false })\n private highlightedIndex: number = -1;\n\n @query('.tag-input-field')\n private inputElement?: HTMLInputElement;\n\n @query('.tag-remove')\n private firstRemoveButton?: HTMLButtonElement;\n\n @query('.tag-input-container')\n private containerElement?: HTMLElement;\n\n @styles()\n componentStyles() {\n return css/*css*/`${tagInputStyles}`;\n }\n\n @ready()\n init() {\n if (Object.prototype.hasOwnProperty.call(this, 'value')) {\n const value = (this as { value: unknown }).value;\n delete (this as Partial<{ value: unknown }>).value;\n if (Array.isArray(value)) this.value = value.map(String);\n } else if (!this.dirtyValue) {\n this.applyDefaultValue();\n }\n this.syncFormState();\n this.attachOutsideClickListener();\n this.labelAssociation.connect();\n }\n\n @reconnect()\n onReconnect() {\n this.attachOutsideClickListener();\n this.labelAssociation.connect();\n }\n\n @dispose()\n cleanup() {\n document.removeEventListener('click', this.handleDocumentClick);\n this.labelAssociation.disconnect();\n }\n\n private attachOutsideClickListener() {\n document.addEventListener('click', this.handleDocumentClick);\n }\n\n private get interactionDisabled(): boolean {\n return this.disabled || this.formDisabled;\n }\n\n private applyDefaultValue() {\n this.setValue(this.defaultValue, false, false);\n }\n\n private setValue(value: unknown, dirty: boolean, emit: boolean) {\n if (!Array.isArray(value)) return;\n if (dirty) this.dirtyValue = true;\n this.suppressValueEvent = !emit;\n try {\n this.valueState = value.map(String);\n } finally {\n this.suppressValueEvent = false;\n }\n this.syncFormState();\n }\n\n private syncFormValue() {\n const value = JSON.stringify(this.value);\n applyElementInternalsFormValue(this.internals, value, value);\n }\n\n private syncFormState() {\n this.syncFormValue();\n this.syncValidity();\n }\n\n private get validationAnchor(): HTMLElement | undefined {\n return this.inputElement ?? this.firstRemoveButton;\n }\n\n private syncValidityAfterRender() {\n // @watch handlers run before the batched render. Re-read conditional\n // targets after it commits so ElementInternals never retains a detached\n // draft input when the tag limit hides that input.\n queueMicrotask(() => {\n const rendered = (this as unknown as { readonly rendered: Promise<void> }).rendered;\n void rendered.then(() => {\n if (this.isConnected) this.syncValidity();\n });\n });\n }\n\n private syncValidity() {\n const barred = this.interactionDisabled || this.readonly;\n const tooLong = !barred && this.maxTags > 0 && this.value.length > this.maxTags;\n const duplicateValue = !barred && !this.allowDuplicates &&\n new Set(this.value).size !== this.value.length;\n const flags: ValidityStateFlags = barred ? {} : {\n customError: Boolean(this.customValidationMessage) || duplicateValue,\n tooLong\n };\n const hasError = hasValidityError(flags);\n const message = this.customValidationMessage ||\n (tooLong ? `Use no more than ${this.maxTags} tags.` : '') ||\n (duplicateValue ? 'Duplicate tags are not allowed.' : '');\n this.constraintInvalid = hasError;\n this.validationProxy.setCustomValidity(hasError ? message : '');\n this.inputElement?.setCustomValidity(hasError ? message : '');\n this.inputElement?.setAttribute('aria-invalid', String(hasError));\n this.containerElement?.setAttribute('aria-invalid', String(hasError));\n this.containerElement?.classList.toggle('tag-input-container--invalid', hasError);\n applyElementInternalsValidity(this.internals, flags, message, this.validationAnchor);\n }\n\n private get validationProxy(): HTMLInputElement {\n if (!this.validationInput) this.validationInput = document.createElement('input');\n return this.validationInput;\n }\n\n private clearDraft() {\n this.inputValue = '';\n this.filteredSuggestions = [];\n this.showSuggestions = false;\n this.highlightedIndex = -1;\n if (this.inputElement) this.inputElement.value = '';\n }\n\n private handleDocumentClick = (e: Event) => {\n if (e.composedPath().includes(this)) return;\n this.showSuggestions = false;\n };\n\n @watch('valueState', { immediate: false })\n handleValueChange() {\n this.syncFormState();\n this.syncValidityAfterRender();\n if (!this.suppressValueEvent) this.emitChange();\n }\n\n @watch('defaultValue', { immediate: false })\n handleDefaultValueChange() {\n if (!this.dirtyValue) this.applyDefaultValue();\n }\n\n @watch('maxTags', 'allowDuplicates', 'disabled', 'readonly', 'formDisabled', { immediate: false })\n handleValidationConfigurationChange() {\n this.syncValidity();\n this.syncValidityAfterRender();\n }\n\n @render()\n renderTagInput() {\n const isDisabled = this.interactionDisabled;\n const isReadonly = this.readonly;\n const canAdd = !isDisabled && !isReadonly && (this.maxTags <= 0 || this.value.length < this.maxTags);\n const hasLabel = !!this.label;\n const hasSuggestions = this.showSuggestions && this.filteredSuggestions.length > 0;\n\n return html/*html*/`\n <div part=\"base\" class=\"tag-input-wrapper\">\n <if ${hasLabel}>\n <label part=\"label\" class=\"tag-input-label\">${this.label}</label>\n </if>\n\n <div\n part=\"container\"\n class=\"tag-input-container ${isDisabled ? 'tag-input-container--disabled' : ''} ${this.constraintInvalid ? 'tag-input-container--invalid' : ''}\"\n aria-invalid=\"${this.constraintInvalid ? 'true' : 'false'}\"\n @click=${() => this.focus()}\n >\n ${this.value.map((tag, index) => html/*html*/`\n <span part=\"tag\" class=\"tag\" key=${tag + index}>\n <span part=\"tag-text\" class=\"tag-text\">${tag}</span>\n <if ${!isDisabled && !isReadonly}>\n <button\n class=\"tag-remove\"\n type=\"button\"\n tabindex=\"-1\"\n @click=${(e: Event) => { e.stopPropagation(); this.removeTag(index); }}\n title=\"Remove ${tag}\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"12\" height=\"12\" fill=\"currentColor\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n </svg>\n </button>\n </if>\n </span>\n `)}\n\n <if ${canAdd}>\n <input\n part=\"input\"\n class=\"tag-input-field\"\n type=\"text\"\n placeholder=\"${this.value.length === 0 ? this.placeholder : ''}\"\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n aria-label=\"${this.labelAssociation.accessibleName}\"\n aria-invalid=\"${this.constraintInvalid ? 'true' : 'false'}\"\n @input=${(e: Event) => this.handleInput(e)}\n @keydown=${(e: KeyboardEvent) => this.handleKeyDown(e)}\n @focus=${() => this.handleFocus()}\n @blur=${() => this.handleBlur()}\n />\n </if>\n\n <if ${hasSuggestions}>\n <div part=\"suggestions\" class=\"tag-suggestions\">\n ${this.filteredSuggestions.map((suggestion, i) => html/*html*/`\n <div\n class=\"tag-suggestion-item ${i === this.highlightedIndex ? 'tag-suggestion-item--highlighted' : ''}\"\n @mousedown=${(e: Event) => { e.preventDefault(); this.selectSuggestion(suggestion); }}\n >\n ${suggestion}\n </div>\n `)}\n </div>\n </if>\n </div>\n </div>\n `;\n }\n\n // --- Public Methods ---\n\n addTag(tag: string): void {\n const trimmed = tag.trim();\n if (!trimmed) return;\n if (!this.allowDuplicates && this.value.includes(trimmed)) return;\n if (this.maxTags > 0 && this.value.length >= this.maxTags) return;\n\n this.value = [...this.value, trimmed];\n this.emitAdd(trimmed);\n }\n\n removeTag(index: number): void {\n if (index < 0 || index >= this.value.length) return;\n const removed = this.value[index];\n this.value = this.value.filter((_, i) => i !== index);\n this.emitRemove(removed, index);\n }\n\n clear(): void {\n this.value = [];\n }\n\n focus(): void {\n if (!this.interactionDisabled) this.validationAnchor?.focus();\n }\n\n blur(): void {\n this.validationAnchor?.blur();\n }\n\n /** Native-compatible control type. @public */\n get type(): 'text' {\n return 'text';\n }\n\n /** Owning form, including association through a `form` attribute. @public */\n get form(): HTMLFormElement | null {\n return findFormOwner(this, this.internals);\n }\n\n /** Current constraint-validation state. @public */\n get validity(): ValidityState {\n return this.internals?.validity ?? this.validationProxy.validity;\n }\n\n /** Current validation message. @public */\n get validationMessage(): string {\n return this.internals?.validationMessage ?? this.validationProxy.validationMessage;\n }\n\n /** Whether this tag input currently participates in validation. @public */\n get willValidate(): boolean {\n if (this.interactionDisabled || this.readonly) return false;\n return this.internals?.willValidate ?? this.inputElement?.willValidate ?? true;\n }\n\n /** Labels associated with the host. @public */\n get labels(): NodeList | null {\n return this.labelAssociation.labels;\n }\n\n checkValidity(): boolean {\n this.syncValidity();\n return this.internals?.checkValidity() ?? this.validationProxy.checkValidity();\n }\n\n reportValidity(): boolean {\n this.syncValidity();\n return this.internals?.reportValidity() ?? this.validationProxy.reportValidity();\n }\n\n setCustomValidity(message: string): void {\n this.customValidationMessage = String(message);\n this.syncValidity();\n }\n\n // --- Private Methods ---\n\n private handleInput(e: Event): void {\n const input = e.target as HTMLInputElement;\n this.inputValue = input.value;\n\n // Check for comma separator\n if (this.inputValue.includes(',')) {\n const parts = this.inputValue.split(',');\n for (const part of parts) {\n if (part.trim()) {\n this.addTag(part);\n }\n }\n this.inputValue = '';\n input.value = '';\n this.showSuggestions = false;\n return;\n }\n\n this.updateFilteredSuggestions();\n }\n\n private handleKeyDown(e: KeyboardEvent): void {\n switch (e.key) {\n case 'Enter':\n e.preventDefault();\n if (this.highlightedIndex >= 0 && this.highlightedIndex < this.filteredSuggestions.length) {\n this.selectSuggestion(this.filteredSuggestions[this.highlightedIndex]);\n } else if (this.inputValue.trim()) {\n this.addTag(this.inputValue);\n this.inputValue = '';\n if (this.inputElement) this.inputElement.value = '';\n this.showSuggestions = false;\n }\n break;\n\n case 'Backspace':\n if (!this.inputValue && this.value.length > 0) {\n this.removeTag(this.value.length - 1);\n }\n break;\n\n case 'ArrowDown':\n e.preventDefault();\n if (this.showSuggestions && this.filteredSuggestions.length > 0) {\n this.highlightedIndex = Math.min(this.highlightedIndex + 1, this.filteredSuggestions.length - 1);\n }\n break;\n\n case 'ArrowUp':\n e.preventDefault();\n if (this.showSuggestions) {\n this.highlightedIndex = Math.max(this.highlightedIndex - 1, -1);\n }\n break;\n\n case 'Escape':\n this.showSuggestions = false;\n this.highlightedIndex = -1;\n break;\n }\n }\n\n private handleFocus(): void {\n this.updateFilteredSuggestions();\n }\n\n private handleBlur(): void {\n // Delay to allow click on suggestion\n setTimeout(() => {\n this.showSuggestions = false;\n this.highlightedIndex = -1;\n }, 200);\n }\n\n private selectSuggestion(suggestion: string): void {\n this.addTag(suggestion);\n this.inputValue = '';\n if (this.inputElement) this.inputElement.value = '';\n this.showSuggestions = false;\n this.highlightedIndex = -1;\n this.focus();\n }\n\n private updateFilteredSuggestions(): void {\n if (this.suggestions.length === 0) {\n this.showSuggestions = false;\n return;\n }\n\n const query = this.inputValue.toLowerCase();\n this.filteredSuggestions = this.suggestions.filter(s => {\n const matches = !query || s.toLowerCase().includes(query);\n const notDuplicate = this.allowDuplicates || !this.value.includes(s);\n return matches && notDuplicate;\n });\n\n this.showSuggestions = this.filteredSuggestions.length > 0;\n this.highlightedIndex = -1;\n }\n\n // --- Events ---\n\n @dispatch('tag-add', { bubbles: true, composed: true })\n private emitAdd(tag: string) {\n return { tag, value: this.value };\n }\n\n @dispatch('tag-remove', { bubbles: true, composed: true })\n private emitRemove(tag: string, index: number) {\n return { tag, index, value: this.value };\n }\n\n @dispatch('tag-change', { bubbles: true, composed: true })\n private emitChange() {\n return { value: this.value };\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'snice-tag-input': SniceTagInput;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snice-tag-input.js","sources":["../../../components/tag-input/snice-tag-input.css?inline","../../../../components/tag-input/snice-tag-input.ts"],"sourcesContent":["export default \":host([hidden]){display:none}:host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif)}.tag-input-wrapper{display:flex;flex-direction:column;gap:var(--snice-spacing-2xs,.25rem)}.tag-input-label{font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-medium,500);color:var(--snice-color-text,rgb(23 23 23))}.tag-input-container{display:flex;flex-wrap:wrap;align-items:center;gap:var(--snice-spacing-2xs,.25rem);padding:var(--snice-spacing-xs,.5rem);border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-md,.25rem);background:var(--snice-color-surface,rgb(255 255 255));cursor:text;transition:border-color var(--snice-transition-fast, 150ms) ease,box-shadow var(--snice-transition-fast, 150ms) ease;min-height:2.5rem;position:relative}.tag-input-container:focus-within{border-color:var(--snice-color-primary,rgb(37 99 235));box-shadow:0 0 0 var(--snice-focus-ring-width,2px) var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.tag-input-container--disabled{opacity:.5;cursor:not-allowed;background:var(--snice-color-surface-container-high,rgb(252 251 249))}.tag-input-container--invalid{border-color:var(--snice-color-danger,rgb(220 38 38))}.tag{display:inline-flex;align-items:center;gap:var(--snice-spacing-2xs,.25rem);padding:var(--snice-spacing-3xs,.125rem) var(--snice-spacing-xs,.5rem);background:var(--snice-color-primary-subtle,hsl(214 100% 97%));color:var(--snice-color-primary-hover,hsl(217 77% 48%));border-radius:var(--snice-border-radius-md,.25rem);font-size:var(--snice-font-size-sm, .875rem);line-height:var(--snice-line-height-normal, 1.5);max-width:100%;animation:150ms tag-appear}@keyframes tag-appear{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.tag-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tag-remove{display:inline-flex;align-items:center;justify-content:center;background:0 0;border:none;cursor:pointer;padding:0;color:var(--snice-color-primary-hover,hsl(217 77% 48%));border-radius:var(--snice-border-radius-md,.25rem);width:1rem;height:1rem;flex-shrink:0;transition:background-color var(--snice-transition-fast, 150ms) ease}.tag-remove:hover{background:var(--snice-color-primary,hsl(217 83% 53%));color:var(--snice-color-text-inverse,rgb(250 250 250))}.tag-input-field{flex:1;min-width:4rem;border:none;outline:0;background:0 0;font-family:inherit;font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));padding:var(--snice-spacing-3xs,.125rem) 0}.tag-input-field::placeholder{color:var(--snice-color-text-tertiary,rgb(115 115 115))}.tag-input-field:disabled{cursor:not-allowed}.tag-suggestions{position:absolute;top:100%;left:-1px;right:-1px;margin-top:2px;background:var(--snice-color-surface,rgb(255 255 255));border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-md,.25rem);box-shadow:var(--snice-shadow-lg,0 10px 15px -3px rgb(0 0 0 / .1),0 4px 6px -4px rgb(0 0 0 / .1));max-height:12.5rem;overflow-y:auto;z-index:100}.tag-suggestion-item{padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-sm,.75rem);font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));cursor:pointer;transition:background-color var(--snice-transition-fast, 150ms) ease}.tag-suggestion-item--highlighted,.tag-suggestion-item:hover{background:var(--snice-color-surface-hover,rgb(241 241 241))}.tag-suggestion-item--highlighted{color:var(--snice-color-primary,rgb(37 99 235))}.tag-suggestions::-webkit-scrollbar{width:.5rem}.tag-suggestions::-webkit-scrollbar-track{background:var(--snice-color-surface-container-high,rgb(252 251 249));border-radius:9999px}.tag-suggestions::-webkit-scrollbar-thumb{background:var(--snice-color-border,rgb(226 226 226));border-radius:9999px}@media (prefers-reduced-motion:reduce){*{transition-duration:0s!important;animation-duration:0s!important}}\";","import { element, property, state, render, styles, dispatch, ready, dispose, reconnect, watch, query, html, css } from 'snice';\nimport type { SniceTagInputElement } from './snice-tag-input.types';\nimport tagInputStyles from './snice-tag-input.css?inline';\nimport { FormLabelAssociation } from '../form-label-association';\nimport { applyElementInternalsFormValue, applyElementInternalsValidity, findFormOwner, hasValidityError } from '../form-control-validity';\n\n@element('snice-tag-input', { formAssociated: true, delegatesFocus: true })\nexport class SniceTagInput extends HTMLElement implements SniceTagInputElement {\n internals!: ElementInternals;\n private dirtyValue = false;\n private customValidationMessage = '';\n private readonly labelAssociation: FormLabelAssociation;\n private validationInput?: HTMLInputElement;\n\n @state()\n private valueState: string[] = [];\n\n @state()\n private formDisabled = false;\n\n @state()\n private constraintInvalid = false;\n\n constructor() {\n super();\n if (typeof this.attachInternals == 'function') {\n this.internals = this.attachInternals();\n }\n this.labelAssociation = new FormLabelAssociation(\n this,\n () => this.internals,\n () => this.interactionDisabled ? undefined : this.validationAnchor,\n () => this.label || 'Tags'\n );\n }\n\n /**\n * Live tags. Assignments do not rewrite the authored reset default and do\n * not emit `tag-change`; only tag edits do.\n * @public\n */\n get value(): string[] {\n return this.valueState;\n }\n\n set value(value: string[]) {\n this.setValue(value, true);\n }\n\n /** JSON-backed `value` content attribute and form-reset default. */\n @property({ type: Array, attribute: 'value' })\n defaultValue: string[] = [];\n\n formAssociatedCallback() {\n this.syncFormState();\n }\n\n formResetCallback() {\n this.dirtyValue = false;\n this.applyDefaultValue();\n this.clearDraft();\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncValidity();\n }\n\n formStateRestoreCallback(state: File | string | FormData | null) {\n if (typeof state !== 'string') return;\n try {\n const value = JSON.parse(state);\n if (Array.isArray(value)) {\n this.setValue(value.map(String), true);\n this.clearDraft();\n }\n } catch {\n // Ignore malformed browser restoration state.\n }\n }\n\n @property({ type: Array, attribute: false })\n suggestions: string[] = [];\n\n @property({ type: Number, attribute: 'max-tags' })\n maxTags: number = 0;\n\n @property({ type: Boolean, attribute: 'allow-duplicates' })\n allowDuplicates: boolean = false;\n\n @property() placeholder: string = 'Add a tag...';\n\n @property({ type: Boolean })\n disabled: boolean = false;\n\n @property({ type: Boolean })\n readonly: boolean = false;\n\n @property() label: string = '';\n @property() name: string = '';\n\n @property({ attribute: false })\n private inputValue: string = '';\n @property({ type: Array, attribute: false })\n private filteredSuggestions: string[] = [];\n @property({ type: Boolean, attribute: false })\n private showSuggestions: boolean = false;\n @property({ type: Number, attribute: false })\n private highlightedIndex: number = -1;\n\n @query('.tag-input-field')\n private inputElement?: HTMLInputElement;\n\n @query('.tag-remove')\n private firstRemoveButton?: HTMLButtonElement;\n\n @query('.tag-input-container')\n private containerElement?: HTMLElement;\n\n @styles()\n componentStyles() {\n return css/*css*/`${tagInputStyles}`;\n }\n\n @ready()\n init() {\n if (Object.prototype.hasOwnProperty.call(this, 'value')) {\n const value = (this as { value: unknown }).value;\n delete (this as Partial<{ value: unknown }>).value;\n if (Array.isArray(value)) this.value = value.map(String);\n } else if (!this.dirtyValue) {\n this.applyDefaultValue();\n }\n this.syncFormState();\n this.attachOutsideClickListener();\n this.labelAssociation.connect();\n }\n\n @reconnect()\n onReconnect() {\n this.attachOutsideClickListener();\n this.labelAssociation.connect();\n }\n\n @dispose()\n cleanup() {\n document.removeEventListener('click', this.handleDocumentClick);\n this.labelAssociation.disconnect();\n }\n\n private attachOutsideClickListener() {\n document.addEventListener('click', this.handleDocumentClick);\n }\n\n private get interactionDisabled(): boolean {\n return this.disabled || this.formDisabled;\n }\n\n private applyDefaultValue() {\n this.setValue(this.defaultValue, false);\n }\n\n private setValue(value: unknown, dirty: boolean) {\n if (!Array.isArray(value)) return;\n if (dirty) this.dirtyValue = true;\n this.valueState = value.map(String);\n this.syncFormState();\n }\n\n private syncFormValue() {\n const value = JSON.stringify(this.value);\n applyElementInternalsFormValue(this.internals, value, value);\n }\n\n private syncFormState() {\n this.syncFormValue();\n this.syncValidity();\n }\n\n private get validationAnchor(): HTMLElement | undefined {\n return this.inputElement ?? this.firstRemoveButton;\n }\n\n private syncValidityAfterRender() {\n // @watch handlers run before the batched render. Re-read conditional\n // targets after it commits so ElementInternals never retains a detached\n // draft input when the tag limit hides that input.\n queueMicrotask(() => {\n const rendered = (this as unknown as { readonly rendered: Promise<void> }).rendered;\n void rendered.then(() => {\n if (this.isConnected) this.syncValidity();\n });\n });\n }\n\n private syncValidity() {\n const barred = this.interactionDisabled || this.readonly;\n const tooLong = !barred && this.maxTags > 0 && this.value.length > this.maxTags;\n const duplicateValue = !barred && !this.allowDuplicates &&\n new Set(this.value).size !== this.value.length;\n const flags: ValidityStateFlags = barred ? {} : {\n customError: Boolean(this.customValidationMessage) || duplicateValue,\n tooLong\n };\n const hasError = hasValidityError(flags);\n const message = this.customValidationMessage ||\n (tooLong ? `Use no more than ${this.maxTags} tags.` : '') ||\n (duplicateValue ? 'Duplicate tags are not allowed.' : '');\n this.constraintInvalid = hasError;\n this.validationProxy.setCustomValidity(hasError ? message : '');\n this.inputElement?.setCustomValidity(hasError ? message : '');\n this.inputElement?.setAttribute('aria-invalid', String(hasError));\n this.containerElement?.setAttribute('aria-invalid', String(hasError));\n this.containerElement?.classList.toggle('tag-input-container--invalid', hasError);\n applyElementInternalsValidity(this.internals, flags, message, this.validationAnchor);\n }\n\n private get validationProxy(): HTMLInputElement {\n if (!this.validationInput) this.validationInput = document.createElement('input');\n return this.validationInput;\n }\n\n private clearDraft() {\n this.inputValue = '';\n this.filteredSuggestions = [];\n this.showSuggestions = false;\n this.highlightedIndex = -1;\n if (this.inputElement) this.inputElement.value = '';\n }\n\n private handleDocumentClick = (e: Event) => {\n if (e.composedPath().includes(this)) return;\n this.showSuggestions = false;\n };\n\n @watch('valueState', { immediate: false })\n handleValueChange() {\n this.syncFormState();\n this.syncValidityAfterRender();\n }\n\n @watch('defaultValue', { immediate: false })\n handleDefaultValueChange() {\n if (!this.dirtyValue) this.applyDefaultValue();\n }\n\n @watch('maxTags', 'allowDuplicates', 'disabled', 'readonly', 'formDisabled', { immediate: false })\n handleValidationConfigurationChange() {\n this.syncValidity();\n this.syncValidityAfterRender();\n }\n\n @render()\n renderTagInput() {\n const isDisabled = this.interactionDisabled;\n const isReadonly = this.readonly;\n const canAdd = !isDisabled && !isReadonly && (this.maxTags <= 0 || this.value.length < this.maxTags);\n const hasLabel = !!this.label;\n const hasSuggestions = this.showSuggestions && this.filteredSuggestions.length > 0;\n\n return html/*html*/`\n <div part=\"base\" class=\"tag-input-wrapper\">\n <if ${hasLabel}>\n <label part=\"label\" class=\"tag-input-label\">${this.label}</label>\n </if>\n\n <div\n part=\"container\"\n class=\"tag-input-container ${isDisabled ? 'tag-input-container--disabled' : ''} ${this.constraintInvalid ? 'tag-input-container--invalid' : ''}\"\n aria-invalid=\"${this.constraintInvalid ? 'true' : 'false'}\"\n @click=${() => this.focus()}\n >\n ${this.value.map((tag, index) => html/*html*/`\n <span part=\"tag\" class=\"tag\" key=${tag + index}>\n <span part=\"tag-text\" class=\"tag-text\">${tag}</span>\n <if ${!isDisabled && !isReadonly}>\n <button\n class=\"tag-remove\"\n type=\"button\"\n tabindex=\"-1\"\n @click=${(e: Event) => { e.stopPropagation(); this.removeTag(index); }}\n title=\"Remove ${tag}\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"12\" height=\"12\" fill=\"currentColor\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n </svg>\n </button>\n </if>\n </span>\n `)}\n\n <if ${canAdd}>\n <input\n part=\"input\"\n class=\"tag-input-field\"\n type=\"text\"\n placeholder=\"${this.value.length === 0 ? this.placeholder : ''}\"\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n aria-label=\"${this.labelAssociation.accessibleName}\"\n aria-invalid=\"${this.constraintInvalid ? 'true' : 'false'}\"\n @input=${(e: Event) => this.handleInput(e)}\n @keydown=${(e: KeyboardEvent) => this.handleKeyDown(e)}\n @focus=${() => this.handleFocus()}\n @blur=${() => this.handleBlur()}\n />\n </if>\n\n <if ${hasSuggestions}>\n <div part=\"suggestions\" class=\"tag-suggestions\">\n ${this.filteredSuggestions.map((suggestion, i) => html/*html*/`\n <div\n class=\"tag-suggestion-item ${i === this.highlightedIndex ? 'tag-suggestion-item--highlighted' : ''}\"\n @mousedown=${(e: Event) => { e.preventDefault(); this.selectSuggestion(suggestion); }}\n >\n ${suggestion}\n </div>\n `)}\n </div>\n </if>\n </div>\n </div>\n `;\n }\n\n // --- Public Methods ---\n\n addTag(tag: string): void {\n const trimmed = tag.trim();\n if (!trimmed) return;\n if (!this.allowDuplicates && this.value.includes(trimmed)) return;\n if (this.maxTags > 0 && this.value.length >= this.maxTags) return;\n\n this.value = [...this.value, trimmed];\n this.emitAdd(trimmed);\n this.emitChange();\n }\n\n removeTag(index: number): void {\n if (index < 0 || index >= this.value.length) return;\n const removed = this.value[index];\n this.value = this.value.filter((_, i) => i !== index);\n this.emitRemove(removed, index);\n this.emitChange();\n }\n\n clear(): void {\n this.value = [];\n }\n\n focus(): void {\n if (!this.interactionDisabled) this.validationAnchor?.focus();\n }\n\n blur(): void {\n this.validationAnchor?.blur();\n }\n\n /** Native-compatible control type. @public */\n get type(): 'text' {\n return 'text';\n }\n\n /** Owning form, including association through a `form` attribute. @public */\n get form(): HTMLFormElement | null {\n return findFormOwner(this, this.internals);\n }\n\n /** Current constraint-validation state. @public */\n get validity(): ValidityState {\n return this.internals?.validity ?? this.validationProxy.validity;\n }\n\n /** Current validation message. @public */\n get validationMessage(): string {\n return this.internals?.validationMessage ?? this.validationProxy.validationMessage;\n }\n\n /** Whether this tag input currently participates in validation. @public */\n get willValidate(): boolean {\n if (this.interactionDisabled || this.readonly) return false;\n return this.internals?.willValidate ?? this.inputElement?.willValidate ?? true;\n }\n\n /** Labels associated with the host. @public */\n get labels(): NodeList | null {\n return this.labelAssociation.labels;\n }\n\n checkValidity(): boolean {\n this.syncValidity();\n return this.internals?.checkValidity() ?? this.validationProxy.checkValidity();\n }\n\n reportValidity(): boolean {\n this.syncValidity();\n return this.internals?.reportValidity() ?? this.validationProxy.reportValidity();\n }\n\n setCustomValidity(message: string): void {\n this.customValidationMessage = String(message);\n this.syncValidity();\n }\n\n // --- Private Methods ---\n\n private handleInput(e: Event): void {\n const input = e.target as HTMLInputElement;\n this.inputValue = input.value;\n\n // Check for comma separator\n if (this.inputValue.includes(',')) {\n const parts = this.inputValue.split(',');\n for (const part of parts) {\n if (part.trim()) {\n this.addTag(part);\n }\n }\n this.inputValue = '';\n input.value = '';\n this.showSuggestions = false;\n return;\n }\n\n this.updateFilteredSuggestions();\n }\n\n private handleKeyDown(e: KeyboardEvent): void {\n switch (e.key) {\n case 'Enter':\n e.preventDefault();\n if (this.highlightedIndex >= 0 && this.highlightedIndex < this.filteredSuggestions.length) {\n this.selectSuggestion(this.filteredSuggestions[this.highlightedIndex]);\n } else if (this.inputValue.trim()) {\n this.addTag(this.inputValue);\n this.inputValue = '';\n if (this.inputElement) this.inputElement.value = '';\n this.showSuggestions = false;\n }\n break;\n\n case 'Backspace':\n if (!this.inputValue && this.value.length > 0) {\n this.removeTag(this.value.length - 1);\n }\n break;\n\n case 'ArrowDown':\n e.preventDefault();\n if (this.showSuggestions && this.filteredSuggestions.length > 0) {\n this.highlightedIndex = Math.min(this.highlightedIndex + 1, this.filteredSuggestions.length - 1);\n }\n break;\n\n case 'ArrowUp':\n e.preventDefault();\n if (this.showSuggestions) {\n this.highlightedIndex = Math.max(this.highlightedIndex - 1, -1);\n }\n break;\n\n case 'Escape':\n this.showSuggestions = false;\n this.highlightedIndex = -1;\n break;\n }\n }\n\n private handleFocus(): void {\n this.updateFilteredSuggestions();\n }\n\n private handleBlur(): void {\n // Delay to allow click on suggestion\n setTimeout(() => {\n this.showSuggestions = false;\n this.highlightedIndex = -1;\n }, 200);\n }\n\n private selectSuggestion(suggestion: string): void {\n this.addTag(suggestion);\n this.inputValue = '';\n if (this.inputElement) this.inputElement.value = '';\n this.showSuggestions = false;\n this.highlightedIndex = -1;\n this.focus();\n }\n\n private updateFilteredSuggestions(): void {\n if (this.suggestions.length === 0) {\n this.showSuggestions = false;\n return;\n }\n\n const query = this.inputValue.toLowerCase();\n this.filteredSuggestions = this.suggestions.filter(s => {\n const matches = !query || s.toLowerCase().includes(query);\n const notDuplicate = this.allowDuplicates || !this.value.includes(s);\n return matches && notDuplicate;\n });\n\n this.showSuggestions = this.filteredSuggestions.length > 0;\n this.highlightedIndex = -1;\n }\n\n // --- Events ---\n\n @dispatch('tag-add', { bubbles: true, composed: true })\n private emitAdd(tag: string) {\n return { tag, value: this.value };\n }\n\n @dispatch('tag-remove', { bubbles: true, composed: true })\n private emitRemove(tag: string, index: number) {\n return { tag, index, value: this.value };\n }\n\n @dispatch('tag-change', { bubbles: true, composed: true })\n private emitChange() {\n return { value: this.value };\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'snice-tag-input': SniceTagInput;\n }\n}\n"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v7.
|
|
2
|
+
* snice v7.7.0
|
|
3
3
|
* A decorator-driven web component library with routing, controllers, daemons, and 130+ UI components. For better coding-agent results, run npx snice init-ai.
|
|
4
4
|
* (c) 2024
|
|
5
5
|
* Released under the MIT License.
|
|
@@ -1559,17 +1559,33 @@ function respond(requestName, options) {
|
|
|
1559
1559
|
});
|
|
1560
1560
|
};
|
|
1561
1561
|
}
|
|
1562
|
-
//
|
|
1563
|
-
|
|
1562
|
+
// Which handler descriptors an instance has already registered, so a second
|
|
1563
|
+
// setup pass only picks up what the first one deferred.
|
|
1564
|
+
const registeredHandlers = new WeakMap();
|
|
1565
|
+
/**
|
|
1566
|
+
* Helper to setup response handlers for elements and controllers.
|
|
1567
|
+
*
|
|
1568
|
+
* Safe to call more than once for the same instance: a handler already
|
|
1569
|
+
* registered is skipped rather than double-bound.
|
|
1570
|
+
*/
|
|
1571
|
+
function setupResponseHandlers(instance, element, options) {
|
|
1564
1572
|
const handlers = instance.constructor[CHANNEL_HANDLERS];
|
|
1565
1573
|
if (!handlers)
|
|
1566
1574
|
return;
|
|
1575
|
+
const claim = options?.claim;
|
|
1576
|
+
let registered = registeredHandlers.get(instance);
|
|
1577
|
+
if (!registered) {
|
|
1578
|
+
registered = new Set();
|
|
1579
|
+
registeredHandlers.set(instance, registered);
|
|
1580
|
+
}
|
|
1567
1581
|
// Store cleanup functions
|
|
1568
1582
|
// Initialize cleanup object if needed
|
|
1569
1583
|
if (!instance[CLEANUP]) {
|
|
1570
1584
|
instance[CLEANUP] = { events: [], channels: [] };
|
|
1571
1585
|
}
|
|
1572
1586
|
for (const handler of handlers) {
|
|
1587
|
+
if (registered.has(handler))
|
|
1588
|
+
continue;
|
|
1573
1589
|
const boundMethod = handler.method.bind(instance);
|
|
1574
1590
|
const eventName = `@request/${handler.channelName}`;
|
|
1575
1591
|
// Create timing variables for debounce/throttle per handler
|
|
@@ -1653,7 +1669,10 @@ function setupResponseHandlers(instance, element) {
|
|
|
1653
1669
|
// Clear the discovery timeout immediately - we found a handler
|
|
1654
1670
|
discovery.resolve();
|
|
1655
1671
|
// Call the timed responder method and handle the result
|
|
1656
|
-
|
|
1672
|
+
const answer = claim
|
|
1673
|
+
? Promise.resolve(claim()).then(() => timedMethod(payload))
|
|
1674
|
+
: Promise.resolve(timedMethod(payload));
|
|
1675
|
+
answer
|
|
1657
1676
|
.then(result => {
|
|
1658
1677
|
data.resolve(result);
|
|
1659
1678
|
})
|
|
@@ -1668,10 +1687,17 @@ function setupResponseHandlers(instance, element) {
|
|
|
1668
1687
|
responseTarget = requireDaemonTarget(instance, handler.options.daemon);
|
|
1669
1688
|
}
|
|
1670
1689
|
catch (error) {
|
|
1690
|
+
// The app context reaches a controller through its host element, so it
|
|
1691
|
+
// can be unreachable while the host is still disconnected. Leave the
|
|
1692
|
+
// handler for the later pass instead of dropping it permanently.
|
|
1693
|
+
if (options?.deferUnresolvableDaemons)
|
|
1694
|
+
continue;
|
|
1671
1695
|
console.warn(`[snice/@respond] ${error.message} Responder "${handler.channelName}" skipped.`);
|
|
1696
|
+
registered.add(handler);
|
|
1672
1697
|
continue;
|
|
1673
1698
|
}
|
|
1674
1699
|
}
|
|
1700
|
+
registered.add(handler);
|
|
1675
1701
|
responseTarget.addEventListener(eventName, responseHandler);
|
|
1676
1702
|
instance[CLEANUP].channels.push(() => {
|
|
1677
1703
|
responseTarget.removeEventListener(eventName, responseHandler);
|
|
@@ -1680,6 +1706,7 @@ function setupResponseHandlers(instance, element) {
|
|
|
1680
1706
|
}
|
|
1681
1707
|
// Helper to cleanup response handlers
|
|
1682
1708
|
function cleanupResponseHandlers(instance) {
|
|
1709
|
+
registeredHandlers.delete(instance);
|
|
1683
1710
|
if (instance[CLEANUP]?.channels) {
|
|
1684
1711
|
for (const cleanup of instance[CLEANUP].channels) {
|
|
1685
1712
|
cleanup();
|
|
@@ -1805,6 +1832,8 @@ function matchesKeyboardFilter(event, filter) {
|
|
|
1805
1832
|
* Use in elements or controllers to listen to DOM events or custom events
|
|
1806
1833
|
*/
|
|
1807
1834
|
const ON_HANDLERS = getSymbol('on-handlers');
|
|
1835
|
+
// Per-decoration-site counter — see the registration identity note in `on()`.
|
|
1836
|
+
let registrationCount = 0;
|
|
1808
1837
|
/**
|
|
1809
1838
|
* @on decorator for listening to events
|
|
1810
1839
|
*
|
|
@@ -1866,18 +1895,42 @@ function on(eventName, selectorOrOptions, options) {
|
|
|
1866
1895
|
if (!selector && opts.target) {
|
|
1867
1896
|
selector = opts.target;
|
|
1868
1897
|
}
|
|
1898
|
+
const eventNames = Array.isArray(eventName) ? eventName : [eventName];
|
|
1899
|
+
// Registration identity — derived from EVERY decorator argument, so no
|
|
1900
|
+
// option can be forgotten here and silently collapse two distinct stacked
|
|
1901
|
+
// @on decorators into one (that is how { debounce: 300 } stacked on a plain
|
|
1902
|
+
// @on for the same event used to lose one of its two registrations).
|
|
1903
|
+
// Options are serialized generically (sorted, so literal key order doesn't
|
|
1904
|
+
// matter); values that can't be compared by value — an EventTarget or a
|
|
1905
|
+
// resolver function passed as `scope` — fall back to this decoration site's
|
|
1906
|
+
// own id, which is stable across instances but unique per @on application.
|
|
1907
|
+
const siteId = `site:${++registrationCount}`;
|
|
1908
|
+
let optionSignature = '';
|
|
1909
|
+
let hasOpaqueOption = false;
|
|
1910
|
+
for (const key of Object.keys(opts).sort()) {
|
|
1911
|
+
const value = opts[key];
|
|
1912
|
+
if (value === undefined)
|
|
1913
|
+
continue;
|
|
1914
|
+
if (value !== null && (typeof value === 'object' || typeof value === 'function')) {
|
|
1915
|
+
hasOpaqueOption = true;
|
|
1916
|
+
continue;
|
|
1917
|
+
}
|
|
1918
|
+
optionSignature += `${key}=${String(value)};`;
|
|
1919
|
+
}
|
|
1920
|
+
const argumentKey = `${eventNames.join(',')}::${selector ?? ''}::${optionSignature}${hasOpaqueOption ? `::${siteId}` : ''}`;
|
|
1869
1921
|
return function (originalMethod, context) {
|
|
1870
1922
|
const methodName = context.name;
|
|
1923
|
+
// Same decoration, same method name → same registration. A subclass that
|
|
1924
|
+
// re-declares an identically decorated method must NOT add a second
|
|
1925
|
+
// listener on top of the one its parent's initializer already registered.
|
|
1926
|
+
const registrationKey = `${methodName}::${argumentKey}`;
|
|
1871
1927
|
context.addInitializer(function () {
|
|
1872
1928
|
const constructor = this.constructor;
|
|
1873
|
-
// Dedup by registration identity
|
|
1874
|
-
//
|
|
1875
|
-
//
|
|
1876
|
-
//
|
|
1877
|
-
//
|
|
1878
|
-
// prototype chain.
|
|
1879
|
-
const eventNames = Array.isArray(eventName) ? eventName : [eventName];
|
|
1880
|
-
const registrationKey = `${methodName}::${eventNames.join(',')}::${selector ?? ''}::daemon:${opts.daemon ?? ''}::light:${opts.light ?? ''}::shadow:${opts.shadow ?? ''}`;
|
|
1929
|
+
// Dedup by registration identity, NOT by method reference — stacked @on
|
|
1930
|
+
// decorators share one method and must each register. Use hasOwnProperty
|
|
1931
|
+
// so subclasses get their OWN Set instead of inheriting — otherwise
|
|
1932
|
+
// parent and child share state and child registrations pollute parent
|
|
1933
|
+
// (and vice versa) via the prototype chain.
|
|
1881
1934
|
if (!Object.prototype.hasOwnProperty.call(constructor, ON_METHODS)) {
|
|
1882
1935
|
constructor[ON_METHODS] = new Set();
|
|
1883
1936
|
}
|
|
@@ -2892,6 +2945,35 @@ async function attachController(element, controller) {
|
|
|
2892
2945
|
// MutationObservers are guarded from treating it as a string attachment.
|
|
2893
2946
|
restoreDirectControllerAttribute(element);
|
|
2894
2947
|
}
|
|
2948
|
+
// @respond handlers are installed before the readiness gate below, exactly
|
|
2949
|
+
// as elements install theirs in connectedCallback. A child's mount-time
|
|
2950
|
+
// @request can be the very thing keeping the host from becoming ready, so
|
|
2951
|
+
// the responder has to be reachable while `ready` is still pending. Such a
|
|
2952
|
+
// request also releases the gate — it proves the host subtree is live and
|
|
2953
|
+
// that something is blocked on this attachment — and is answered once
|
|
2954
|
+
// attach() and the remaining setup have run.
|
|
2955
|
+
//
|
|
2956
|
+
// A `@respond({ daemon })` handler resolves its target through the host's app
|
|
2957
|
+
// context, which is unreachable while the host is still disconnected (attach
|
|
2958
|
+
// before appendChild). Those are deferred here and registered by the second
|
|
2959
|
+
// pass past the gate, where they behaved correctly before this ordering.
|
|
2960
|
+
let requestClaimed = false;
|
|
2961
|
+
let releaseReadyGate;
|
|
2962
|
+
let completeAttach;
|
|
2963
|
+
let failAttach;
|
|
2964
|
+
const attached = new Promise((resolve, reject) => {
|
|
2965
|
+
completeAttach = resolve;
|
|
2966
|
+
failAttach = reject;
|
|
2967
|
+
});
|
|
2968
|
+
attached.catch(() => { }); // No requester when nothing was claimed
|
|
2969
|
+
setupResponseHandlers(controllerInstance, element, {
|
|
2970
|
+
deferUnresolvableDaemons: true,
|
|
2971
|
+
claim: () => {
|
|
2972
|
+
requestClaimed = true;
|
|
2973
|
+
releaseReadyGate?.();
|
|
2974
|
+
return attached;
|
|
2975
|
+
},
|
|
2976
|
+
});
|
|
2895
2977
|
// Normally a controller waits for its host's full initialization. The sole
|
|
2896
2978
|
// exception is attachController(host, ...) from that host's own @ready
|
|
2897
2979
|
// handler: awaiting ready there would wait on the current handler itself.
|
|
@@ -2904,6 +2986,11 @@ async function attachController(element, controller) {
|
|
|
2904
2986
|
try {
|
|
2905
2987
|
await Promise.race([
|
|
2906
2988
|
element.ready,
|
|
2989
|
+
new Promise(resolve => {
|
|
2990
|
+
if (requestClaimed)
|
|
2991
|
+
return resolve();
|
|
2992
|
+
releaseReadyGate = resolve;
|
|
2993
|
+
}),
|
|
2907
2994
|
new Promise((_, reject) => {
|
|
2908
2995
|
const onAbort = () => {
|
|
2909
2996
|
// Tagged so fire-and-forget call sites can tell this designed
|
|
@@ -2922,8 +3009,10 @@ async function attachController(element, controller) {
|
|
|
2922
3009
|
}
|
|
2923
3010
|
catch (error) {
|
|
2924
3011
|
// Attach never got past `ready` (aborted or deadline). Roll back the
|
|
2925
|
-
// stored references so a later attach does not
|
|
2926
|
-
// instance whose attach() never ran.
|
|
3012
|
+
// stored references and the early responders so a later attach does not
|
|
3013
|
+
// short-circuit against an instance whose attach() never ran.
|
|
3014
|
+
cleanupResponseHandlers(controllerInstance);
|
|
3015
|
+
failAttach(error);
|
|
2927
3016
|
if (element[CONTROLLER_KEY] === controllerInstance) {
|
|
2928
3017
|
if (typeof controller !== 'string') {
|
|
2929
3018
|
writeControllerAttribute(element, null);
|
|
@@ -2945,20 +3034,30 @@ async function attachController(element, controller) {
|
|
|
2945
3034
|
}
|
|
2946
3035
|
// Past `ready` — mark the controller so detach knows attach was actually run.
|
|
2947
3036
|
controllerInstance[CONTROLLER_ATTACHED] = true;
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
await
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
3037
|
+
try {
|
|
3038
|
+
// Run attach in the controller's scope
|
|
3039
|
+
await scope.runOperation(async () => {
|
|
3040
|
+
await controllerInstance.attach(element);
|
|
3041
|
+
});
|
|
3042
|
+
// @context has the same managed lifecycle on controllers as @on,
|
|
3043
|
+
// @observe and @respond. Catch up controllers whose async attach completed
|
|
3044
|
+
// after the Router announced the current navigation.
|
|
3045
|
+
await setupContextHandler(controllerInstance, 'microtask');
|
|
3046
|
+
// Setup @observe observers for controller
|
|
3047
|
+
setupObservers(controllerInstance, element);
|
|
3048
|
+
// Second @respond pass: registers only what the pre-gate pass deferred —
|
|
3049
|
+
// daemon-scoped responders whose app context was not resolvable yet.
|
|
3050
|
+
setupResponseHandlers(controllerInstance, element);
|
|
3051
|
+
// Setup @on event handlers for controller
|
|
3052
|
+
setupEventHandlers(controllerInstance, element);
|
|
3053
|
+
}
|
|
3054
|
+
catch (error) {
|
|
3055
|
+
// A claimed request must not wait on an attachment that never completed.
|
|
3056
|
+
failAttach(error);
|
|
3057
|
+
throw error;
|
|
3058
|
+
}
|
|
3059
|
+
// Answer whatever was claimed while the host was still becoming ready.
|
|
3060
|
+
completeAttach();
|
|
2962
3061
|
element.dispatchEvent(new CustomEvent('controller-attached', {
|
|
2963
3062
|
detail: { name: controllerName, controller: controllerInstance }
|
|
2964
3063
|
}));
|