@vadem/ui 0.0.0-stage → 0.0.1
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/LICENSE-lucide.txt +43 -0
- package/README.md +19 -2
- package/fesm2022/vadem-ui-accordion.mjs +139 -0
- package/fesm2022/vadem-ui-accordion.mjs.map +1 -0
- package/fesm2022/vadem-ui-active-filters.mjs +355 -0
- package/fesm2022/vadem-ui-active-filters.mjs.map +1 -0
- package/fesm2022/vadem-ui-alert-dialog.mjs +433 -0
- package/fesm2022/vadem-ui-alert-dialog.mjs.map +1 -0
- package/fesm2022/vadem-ui-alert.mjs +266 -0
- package/fesm2022/vadem-ui-alert.mjs.map +1 -0
- package/fesm2022/vadem-ui-autocomplete.mjs +715 -0
- package/fesm2022/vadem-ui-autocomplete.mjs.map +1 -0
- package/fesm2022/vadem-ui-avatar.mjs +219 -0
- package/fesm2022/vadem-ui-avatar.mjs.map +1 -0
- package/fesm2022/vadem-ui-badge.mjs +86 -0
- package/fesm2022/vadem-ui-badge.mjs.map +1 -0
- package/fesm2022/vadem-ui-breadcrumbs.mjs +61 -0
- package/fesm2022/vadem-ui-breadcrumbs.mjs.map +1 -0
- package/fesm2022/vadem-ui-button.mjs +220 -0
- package/fesm2022/vadem-ui-button.mjs.map +1 -0
- package/fesm2022/vadem-ui-calendar.mjs +1314 -0
- package/fesm2022/vadem-ui-calendar.mjs.map +1 -0
- package/fesm2022/vadem-ui-card.mjs +271 -0
- package/fesm2022/vadem-ui-card.mjs.map +1 -0
- package/fesm2022/vadem-ui-character-count.mjs +269 -0
- package/fesm2022/vadem-ui-character-count.mjs.map +1 -0
- package/fesm2022/vadem-ui-chart.mjs +1984 -0
- package/fesm2022/vadem-ui-chart.mjs.map +1 -0
- package/fesm2022/vadem-ui-checkbox.mjs +67 -0
- package/fesm2022/vadem-ui-checkbox.mjs.map +1 -0
- package/fesm2022/vadem-ui-color-picker.mjs +815 -0
- package/fesm2022/vadem-ui-color-picker.mjs.map +1 -0
- package/fesm2022/vadem-ui-command.mjs +735 -0
- package/fesm2022/vadem-ui-command.mjs.map +1 -0
- package/fesm2022/vadem-ui-copy-button.mjs +375 -0
- package/fesm2022/vadem-ui-copy-button.mjs.map +1 -0
- package/fesm2022/vadem-ui-date-range-picker.mjs +1011 -0
- package/fesm2022/vadem-ui-date-range-picker.mjs.map +1 -0
- package/fesm2022/vadem-ui-description-list.mjs +59 -0
- package/fesm2022/vadem-ui-description-list.mjs.map +1 -0
- package/fesm2022/vadem-ui-dialog.mjs +587 -0
- package/fesm2022/vadem-ui-dialog.mjs.map +1 -0
- package/fesm2022/vadem-ui-dropzone.mjs +176 -0
- package/fesm2022/vadem-ui-dropzone.mjs.map +1 -0
- package/fesm2022/vadem-ui-editable-text.mjs +641 -0
- package/fesm2022/vadem-ui-editable-text.mjs.map +1 -0
- package/fesm2022/vadem-ui-empty-state.mjs +175 -0
- package/fesm2022/vadem-ui-empty-state.mjs.map +1 -0
- package/fesm2022/vadem-ui-expandable-text.mjs +244 -0
- package/fesm2022/vadem-ui-expandable-text.mjs.map +1 -0
- package/fesm2022/vadem-ui-field.mjs +583 -0
- package/fesm2022/vadem-ui-field.mjs.map +1 -0
- package/fesm2022/vadem-ui-file-preview.mjs +532 -0
- package/fesm2022/vadem-ui-file-preview.mjs.map +1 -0
- package/fesm2022/vadem-ui-file-size.mjs +83 -0
- package/fesm2022/vadem-ui-file-size.mjs.map +1 -0
- package/fesm2022/vadem-ui-form-error-summary.mjs +201 -0
- package/fesm2022/vadem-ui-form-error-summary.mjs.map +1 -0
- package/fesm2022/vadem-ui-icon.mjs +303 -0
- package/fesm2022/vadem-ui-icon.mjs.map +1 -0
- package/fesm2022/vadem-ui-input.mjs +120 -0
- package/fesm2022/vadem-ui-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-kbd.mjs +286 -0
- package/fesm2022/vadem-ui-kbd.mjs.map +1 -0
- package/fesm2022/vadem-ui-keyboard.mjs +105 -0
- package/fesm2022/vadem-ui-keyboard.mjs.map +1 -0
- package/fesm2022/vadem-ui-locale.mjs +443 -0
- package/fesm2022/vadem-ui-locale.mjs.map +1 -0
- package/fesm2022/vadem-ui-menu.mjs +637 -0
- package/fesm2022/vadem-ui-menu.mjs.map +1 -0
- package/fesm2022/vadem-ui-navigation-list.mjs +130 -0
- package/fesm2022/vadem-ui-navigation-list.mjs.map +1 -0
- package/fesm2022/vadem-ui-number-input.mjs +264 -0
- package/fesm2022/vadem-ui-number-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-otp-input.mjs +86 -0
- package/fesm2022/vadem-ui-otp-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-pagination.mjs +353 -0
- package/fesm2022/vadem-ui-pagination.mjs.map +1 -0
- package/fesm2022/vadem-ui-password-input.mjs +213 -0
- package/fesm2022/vadem-ui-password-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-popover.mjs +178 -0
- package/fesm2022/vadem-ui-popover.mjs.map +1 -0
- package/fesm2022/vadem-ui-progress.mjs +331 -0
- package/fesm2022/vadem-ui-progress.mjs.map +1 -0
- package/fesm2022/vadem-ui-radio.mjs +39 -0
- package/fesm2022/vadem-ui-radio.mjs.map +1 -0
- package/fesm2022/vadem-ui-range-slider.mjs +561 -0
- package/fesm2022/vadem-ui-range-slider.mjs.map +1 -0
- package/fesm2022/vadem-ui-rating.mjs +404 -0
- package/fesm2022/vadem-ui-rating.mjs.map +1 -0
- package/fesm2022/vadem-ui-relative-time.mjs +217 -0
- package/fesm2022/vadem-ui-relative-time.mjs.map +1 -0
- package/fesm2022/vadem-ui-reorder-list.mjs +601 -0
- package/fesm2022/vadem-ui-reorder-list.mjs.map +1 -0
- package/fesm2022/vadem-ui-scroll-area.mjs +65 -0
- package/fesm2022/vadem-ui-scroll-area.mjs.map +1 -0
- package/fesm2022/vadem-ui-search-input.mjs +307 -0
- package/fesm2022/vadem-ui-search-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-segmented.mjs +297 -0
- package/fesm2022/vadem-ui-segmented.mjs.map +1 -0
- package/fesm2022/vadem-ui-select.mjs +1462 -0
- package/fesm2022/vadem-ui-select.mjs.map +1 -0
- package/fesm2022/vadem-ui-sidebar.mjs +493 -0
- package/fesm2022/vadem-ui-sidebar.mjs.map +1 -0
- package/fesm2022/vadem-ui-skeleton.mjs +106 -0
- package/fesm2022/vadem-ui-skeleton.mjs.map +1 -0
- package/fesm2022/vadem-ui-slider.mjs +60 -0
- package/fesm2022/vadem-ui-slider.mjs.map +1 -0
- package/fesm2022/vadem-ui-splitter.mjs +438 -0
- package/fesm2022/vadem-ui-splitter.mjs.map +1 -0
- package/fesm2022/vadem-ui-stat.mjs +369 -0
- package/fesm2022/vadem-ui-stat.mjs.map +1 -0
- package/fesm2022/vadem-ui-stepper.mjs +483 -0
- package/fesm2022/vadem-ui-stepper.mjs.map +1 -0
- package/fesm2022/vadem-ui-switch.mjs +45 -0
- package/fesm2022/vadem-ui-switch.mjs.map +1 -0
- package/fesm2022/vadem-ui-table.mjs +593 -0
- package/fesm2022/vadem-ui-table.mjs.map +1 -0
- package/fesm2022/vadem-ui-tabs.mjs +405 -0
- package/fesm2022/vadem-ui-tabs.mjs.map +1 -0
- package/fesm2022/vadem-ui-tag-input.mjs +685 -0
- package/fesm2022/vadem-ui-tag-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-text-highlight.mjs +126 -0
- package/fesm2022/vadem-ui-text-highlight.mjs.map +1 -0
- package/fesm2022/vadem-ui-time-input.mjs +430 -0
- package/fesm2022/vadem-ui-time-input.mjs.map +1 -0
- package/fesm2022/vadem-ui-timeline.mjs +313 -0
- package/fesm2022/vadem-ui-timeline.mjs.map +1 -0
- package/fesm2022/vadem-ui-toast.mjs +397 -0
- package/fesm2022/vadem-ui-toast.mjs.map +1 -0
- package/fesm2022/vadem-ui-toolbar.mjs +396 -0
- package/fesm2022/vadem-ui-toolbar.mjs.map +1 -0
- package/fesm2022/vadem-ui-tooltip.mjs +218 -0
- package/fesm2022/vadem-ui-tooltip.mjs.map +1 -0
- package/fesm2022/vadem-ui-tree.mjs +551 -0
- package/fesm2022/vadem-ui-tree.mjs.map +1 -0
- package/fesm2022/vadem-ui-upload-list.mjs +408 -0
- package/fesm2022/vadem-ui-upload-list.mjs.map +1 -0
- package/fesm2022/vadem-ui.mjs +4 -0
- package/fesm2022/vadem-ui.mjs.map +1 -0
- package/fonts/jetbrains-mono/OFL.txt +93 -0
- package/fonts/jetbrains-mono/jetbrains-mono-cyrillic.woff2 +0 -0
- package/fonts/jetbrains-mono/jetbrains-mono-latin.woff2 +0 -0
- package/fonts/manrope/OFL.txt +93 -0
- package/fonts/manrope/manrope-cyrillic.woff2 +0 -0
- package/fonts/manrope/manrope-latin.woff2 +0 -0
- package/package.json +306 -3
- package/styles/base.css +160 -0
- package/styles/components/accordion.css +130 -0
- package/styles/components/active-filters.css +42 -0
- package/styles/components/alert-dialog.css +34 -0
- package/styles/components/alert.css +159 -0
- package/styles/components/autocomplete.css +97 -0
- package/styles/components/avatar.css +90 -0
- package/styles/components/badge.css +91 -0
- package/styles/components/breadcrumbs.css +94 -0
- package/styles/components/button.css +174 -0
- package/styles/components/calendar.css +186 -0
- package/styles/components/card.css +206 -0
- package/styles/components/character-count.css +41 -0
- package/styles/components/chart.css +308 -0
- package/styles/components/checkbox.css +115 -0
- package/styles/components/color-picker.css +158 -0
- package/styles/components/command.css +175 -0
- package/styles/components/copy-button.css +58 -0
- package/styles/components/date-range-picker.css +153 -0
- package/styles/components/description-list.css +69 -0
- package/styles/components/dialog.css +334 -0
- package/styles/components/dropzone.css +89 -0
- package/styles/components/editable-text.css +58 -0
- package/styles/components/empty-state.css +72 -0
- package/styles/components/expandable-text.css +24 -0
- package/styles/components/field.css +148 -0
- package/styles/components/file-preview.css +65 -0
- package/styles/components/form-error-summary.css +71 -0
- package/styles/components/icon.css +38 -0
- package/styles/components/index.css +80 -0
- package/styles/components/input.css +171 -0
- package/styles/components/kbd.css +42 -0
- package/styles/components/menu.css +168 -0
- package/styles/components/multi-select.css +156 -0
- package/styles/components/navigation-list.css +147 -0
- package/styles/components/number-input.css +33 -0
- package/styles/components/otp-input.css +26 -0
- package/styles/components/pagination.css +127 -0
- package/styles/components/password-input.css +20 -0
- package/styles/components/popover.css +93 -0
- package/styles/components/progress-ring.css +112 -0
- package/styles/components/progress.css +162 -0
- package/styles/components/radio.css +117 -0
- package/styles/components/range-slider.css +158 -0
- package/styles/components/rating.css +100 -0
- package/styles/components/reorder-list.css +143 -0
- package/styles/components/scroll-area.css +39 -0
- package/styles/components/search-input.css +25 -0
- package/styles/components/segmented.css +136 -0
- package/styles/components/select.css +257 -0
- package/styles/components/sidebar.css +105 -0
- package/styles/components/skeleton.css +83 -0
- package/styles/components/slider.css +132 -0
- package/styles/components/splitter.css +83 -0
- package/styles/components/stat.css +62 -0
- package/styles/components/stepper.css +236 -0
- package/styles/components/switch.css +107 -0
- package/styles/components/table.css +195 -0
- package/styles/components/tabs.css +198 -0
- package/styles/components/tag-input.css +138 -0
- package/styles/components/text-highlight.css +22 -0
- package/styles/components/time-input.css +96 -0
- package/styles/components/timeline.css +182 -0
- package/styles/components/toast.css +146 -0
- package/styles/components/toolbar.css +72 -0
- package/styles/components/tooltip.css +93 -0
- package/styles/components/tree.css +88 -0
- package/styles/components/upload-list.css +113 -0
- package/styles/fonts.css +67 -0
- package/styles/index.css +14 -0
- package/styles/reset.css +57 -0
- package/styles/tokens/primitives.css +364 -0
- package/styles/tokens/semantic.css +233 -0
- package/types/vadem-ui-accordion.d.ts +43 -0
- package/types/vadem-ui-active-filters.d.ts +73 -0
- package/types/vadem-ui-alert-dialog.d.ts +87 -0
- package/types/vadem-ui-alert.d.ts +64 -0
- package/types/vadem-ui-autocomplete.d.ts +156 -0
- package/types/vadem-ui-avatar.d.ts +59 -0
- package/types/vadem-ui-badge.d.ts +25 -0
- package/types/vadem-ui-breadcrumbs.d.ts +22 -0
- package/types/vadem-ui-button.d.ts +52 -0
- package/types/vadem-ui-calendar.d.ts +327 -0
- package/types/vadem-ui-card.d.ts +58 -0
- package/types/vadem-ui-character-count.d.ts +71 -0
- package/types/vadem-ui-chart.d.ts +452 -0
- package/types/vadem-ui-checkbox.d.ts +20 -0
- package/types/vadem-ui-color-picker.d.ts +171 -0
- package/types/vadem-ui-command.d.ts +145 -0
- package/types/vadem-ui-copy-button.d.ts +90 -0
- package/types/vadem-ui-date-range-picker.d.ts +216 -0
- package/types/vadem-ui-description-list.d.ts +15 -0
- package/types/vadem-ui-dialog.d.ts +174 -0
- package/types/vadem-ui-dropzone.d.ts +73 -0
- package/types/vadem-ui-editable-text.d.ts +141 -0
- package/types/vadem-ui-empty-state.d.ts +34 -0
- package/types/vadem-ui-expandable-text.d.ts +52 -0
- package/types/vadem-ui-field.d.ts +180 -0
- package/types/vadem-ui-file-preview.d.ts +108 -0
- package/types/vadem-ui-file-size.d.ts +18 -0
- package/types/vadem-ui-form-error-summary.d.ts +46 -0
- package/types/vadem-ui-icon.d.ts +152 -0
- package/types/vadem-ui-input.d.ts +31 -0
- package/types/vadem-ui-kbd.d.ts +66 -0
- package/types/vadem-ui-keyboard.d.ts +61 -0
- package/types/vadem-ui-locale.d.ts +241 -0
- package/types/vadem-ui-menu.d.ts +132 -0
- package/types/vadem-ui-navigation-list.d.ts +28 -0
- package/types/vadem-ui-number-input.d.ts +39 -0
- package/types/vadem-ui-otp-input.d.ts +15 -0
- package/types/vadem-ui-pagination.d.ts +96 -0
- package/types/vadem-ui-password-input.d.ts +36 -0
- package/types/vadem-ui-popover.d.ts +48 -0
- package/types/vadem-ui-progress.d.ts +95 -0
- package/types/vadem-ui-radio.d.ts +11 -0
- package/types/vadem-ui-range-slider.d.ts +136 -0
- package/types/vadem-ui-rating.d.ts +95 -0
- package/types/vadem-ui-relative-time.d.ts +58 -0
- package/types/vadem-ui-reorder-list.d.ts +120 -0
- package/types/vadem-ui-scroll-area.d.ts +13 -0
- package/types/vadem-ui-search-input.d.ts +58 -0
- package/types/vadem-ui-segmented.d.ts +76 -0
- package/types/vadem-ui-select.d.ts +303 -0
- package/types/vadem-ui-sidebar.d.ts +70 -0
- package/types/vadem-ui-skeleton.d.ts +28 -0
- package/types/vadem-ui-slider.d.ts +17 -0
- package/types/vadem-ui-splitter.d.ts +99 -0
- package/types/vadem-ui-stat.d.ts +101 -0
- package/types/vadem-ui-stepper.d.ts +108 -0
- package/types/vadem-ui-switch.d.ts +10 -0
- package/types/vadem-ui-table.d.ts +172 -0
- package/types/vadem-ui-tabs.d.ts +101 -0
- package/types/vadem-ui-tag-input.d.ts +170 -0
- package/types/vadem-ui-text-highlight.d.ts +27 -0
- package/types/vadem-ui-time-input.d.ts +47 -0
- package/types/vadem-ui-timeline.d.ts +54 -0
- package/types/vadem-ui-toast.d.ts +104 -0
- package/types/vadem-ui-toolbar.d.ts +80 -0
- package/types/vadem-ui-tooltip.d.ts +71 -0
- package/types/vadem-ui-tree.d.ts +123 -0
- package/types/vadem-ui-upload-list.d.ts +70 -0
- package/types/vadem-ui.d.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vadem-ui-color-picker.mjs","names":[],"sources":["../../../projects/ui/color-picker/src/core/color.ts","../../../projects/ui/color-picker/src/color-picker.ts"],"sourcesContent":["/** Safe opaque sRGB HEX; no CSS functions, keywords, alpha or URLs are accepted. */\nexport function vdNormalizeHex(value: unknown): string | null {\n if (typeof value !== 'string') return null;\n const raw = value.trim().replace(/^#/, '');\n if (!/^(?:[0-9a-f]{3}|[0-9a-f]{6})$/i.test(raw)) return null;\n return (\n '#' + (raw.length === 3 ? [...raw].map((char) => char + char).join('') : raw).toUpperCase()\n );\n}\n\n/** Maximum-contrast black/white foreground for arbitrary user color data. */\nexport function vdColorInk(value: string): '#000000' | '#FFFFFF' {\n const hex = vdNormalizeHex(value);\n if (!hex) return '#000000';\n const channels = [1, 3, 5].map((i) => parseInt(hex.slice(i, i + 2), 16) / 255);\n const luminance = channels\n .map((c) => (c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4))\n .reduce((sum, c, i) => sum + c * [0.2126, 0.7152, 0.0722][i], 0);\n return (luminance + 0.05) / 0.05 >= 1.05 / (luminance + 0.05) ? '#000000' : '#FFFFFF';\n}\n\nexport function vdColorPaletteKey(\n index: number,\n count: number,\n key: string,\n rtl: boolean,\n): number | null {\n if (!count) return null;\n if (key === 'Home') return 0;\n if (key === 'End') return count - 1;\n const delta =\n key === 'ArrowDown'\n ? 1\n : key === 'ArrowUp'\n ? -1\n : key === 'ArrowRight'\n ? rtl\n ? -1\n : 1\n : key === 'ArrowLeft'\n ? rtl\n ? 1\n : -1\n : 0;\n return delta ? (index + delta + count) % count : null;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n Injector,\n OnInit,\n Signal,\n ViewEncapsulation,\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { FormField, FormValueControl } from '@angular/forms/signals';\nimport {\n VD_FIELD,\n VdFieldControl,\n VdNgControlState,\n vdNgControlState,\n vdUniqueId,\n} from '@vadem/ui/field';\nimport { VdIcon } from '@vadem/ui/icon';\nimport { VdPopover } from '@vadem/ui/popover';\nimport { VdButton } from '@vadem/ui/button';\nimport { vdColorInk, vdColorPaletteKey, vdNormalizeHex } from './core/color';\nimport { vdTexts } from '@vadem/ui/locale';\n\nexport interface VdColorSwatch {\n readonly value: string;\n readonly label: string;\n}\nexport type VdColorPickerSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'vd-color-picker',\n imports: [VdIcon, VdPopover, VdButton],\n template: `\n <button\n #trigger\n type=\"button\"\n class=\"vd-input vd-color-picker__trigger\"\n [id]=\"controlId\"\n [attr.data-size]=\"size()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"readonly() || null\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"popup.id\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-labelledby]=\"ariaLabelledby() ?? null\"\n [attr.aria-describedby]=\"field?.describedBy() ?? null\"\n [attr.aria-invalid]=\"showInvalid() || null\"\n [attr.data-invalid]=\"showInvalid() ? '' : null\"\n (pointerdown)=\"rememberState()\"\n (click)=\"toggle()\"\n (keydown)=\"triggerKey($event)\"\n >\n <span\n class=\"vd-color-picker__preview\"\n aria-hidden=\"true\"\n [attr.data-empty]=\"color() ? null : ''\"\n [style.--vd-color-picker-value]=\"color()\"\n ></span>\n <span class=\"vd-color-picker__value\" [attr.data-placeholder]=\"color() ? null : ''\">{{\n color() || t().placeholder\n }}</span>\n <vd-icon name=\"chevron-down\" />\n </button>\n <div\n vdPopover\n #popup=\"vdPopover\"\n class=\"vd-color-picker__popup\"\n [attr.aria-label]=\"t().pickerLabel\"\n (toggle)=\"onToggle($event)\"\n (focusout)=\"leavePopup($event)\"\n >\n <div class=\"vd-color-picker__draft\">\n <span\n class=\"vd-color-picker__preview\"\n aria-hidden=\"true\"\n [attr.data-empty]=\"draftColor() || color() ? null : ''\"\n [style.--vd-color-picker-value]=\"draftColor() || color()\"\n ></span>\n <label class=\"vd-color-picker__hex-label\" [for]=\"hexId\">{{ t().hexLabel }}</label>\n </div>\n <input\n #hex\n class=\"vd-input vd-color-picker__hex\"\n type=\"text\"\n [id]=\"hexId\"\n [value]=\"draft()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n autocapitalize=\"characters\"\n dir=\"ltr\"\n [disabled]=\"locked()\"\n [attr.aria-invalid]=\"draftError() || null\"\n [attr.data-invalid]=\"draftError() ? '' : null\"\n [attr.aria-describedby]=\"draftError() ? errorId : null\"\n (input)=\"edit($event)\"\n (blur)=\"validateOnBlur()\"\n (keydown.enter)=\"apply($event)\"\n />\n @if (palette().length) {\n <div\n class=\"vd-color-picker__palette\"\n role=\"radiogroup\"\n [attr.aria-label]=\"t().paletteLabel\"\n >\n @for (swatch of palette(); track swatch.value; let i = $index) {\n <button\n type=\"button\"\n class=\"vd-color-picker__swatch\"\n role=\"radio\"\n [disabled]=\"locked()\"\n [attr.aria-label]=\"swatch.label\"\n [attr.aria-checked]=\"draftColor() === swatch.value\"\n [attr.tabindex]=\"i === paletteEntry() ? 0 : -1\"\n [style.--vd-color-picker-value]=\"swatch.value\"\n [style.--vd-color-picker-ink]=\"ink(swatch.value)\"\n (keydown)=\"paletteKey($event, i)\"\n (click)=\"commit(swatch.value)\"\n >\n <span class=\"vd-color-picker__chip\" aria-hidden=\"true\"><vd-icon name=\"check\" /></span>\n </button>\n }\n </div>\n }\n @if (draftError()) {\n <p class=\"vd-color-picker__error\" [id]=\"errorId\">\n <vd-icon name=\"alert-circle\" />{{ t().errorLabel }}\n </p>\n }\n <button vdButton type=\"button\" [disabled]=\"locked()\" (click)=\"apply()\">\n {{ t().applyLabel }}\n </button>\n </div>\n `,\n host: {\n class: 'vd-color-picker',\n '[attr.data-size]': 'size()',\n '[attr.data-open]': 'open() ? \"\" : null',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.data-readonly]': 'readonly() ? \"\" : null',\n '[attr.data-invalid]': 'showInvalid() ? \"\" : null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '(focusout)': 'onFocusOut($event)',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class VdColorPicker implements FormValueControl<string>, OnInit {\n readonly value = model('');\n readonly swatches = input<readonly VdColorSwatch[]>([]);\n readonly size = input<VdColorPickerSize>('md');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n readonly placeholder = input<string>();\n readonly pickerLabel = input<string>();\n readonly hexLabel = input<string>();\n readonly paletteLabel = input<string>();\n readonly applyLabel = input<string>();\n readonly errorLabel = input<string>();\n /** Text inputs resolved against the active VD_LOCALE. */\n protected readonly t = vdTexts('colorPicker', {\n placeholder: this.placeholder,\n pickerLabel: this.pickerLabel,\n hexLabel: this.hexLabel,\n paletteLabel: this.paletteLabel,\n applyLabel: this.applyLabel,\n errorLabel: this.errorLabel,\n });\n readonly touch = output<void>();\n readonly controlId = vdUniqueId('vd-color-picker');\n protected readonly hexId = `${this.controlId}-hex`;\n protected readonly errorId = `${this.controlId}-error`;\n protected readonly color = computed(() => vdNormalizeHex(this.value()));\n protected readonly draft = signal('');\n protected readonly draftColor = computed(() => vdNormalizeHex(this.draft()));\n protected readonly draftError = signal(false);\n protected readonly open = signal(false);\n protected readonly ink = vdColorInk;\n protected readonly palette = computed(() => {\n const seen = new Set<string>();\n return this.swatches().flatMap((swatch) => {\n const value = vdNormalizeHex(swatch.value);\n if (!value || seen.has(value)) return [];\n seen.add(value);\n return [{ value, label: swatch.label.trim() || value }];\n });\n });\n protected readonly paletteEntry = computed(() =>\n Math.max(\n 0,\n this.palette().findIndex((swatch) => swatch.value === this.draftColor()),\n ),\n );\n private readonly popup = viewChild.required(VdPopover);\n private readonly trigger = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n private readonly hex = viewChild.required<ElementRef<HTMLInputElement>>('hex');\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n protected readonly field = inject(VD_FIELD, { optional: true });\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly formBound = signal(false);\n private readonly ngSource = signal<Signal<VdNgControlState> | null>(null);\n private readonly ngState = computed(\n () =>\n this.ngSource()?.() ?? { invalid: false, touched: false, disabled: false, required: false },\n );\n protected readonly isDisabled = computed(() => this.disabled() || this.ngState().disabled);\n protected readonly locked = computed(() => this.isDisabled() || this.readonly());\n protected readonly isRequired = computed(() => this.required() || this.ngState().required);\n protected readonly showInvalid = computed(\n () =>\n (this.invalid() && (!this.formBound() || this.touched())) ||\n (this.ngState().invalid && this.ngState().touched),\n );\n private wasOpen: boolean | null = null;\n private lastValue: string | undefined;\n\n constructor() {\n const control: VdFieldControl = {\n id: signal(this.controlId),\n invalid: this.showInvalid,\n required: this.isRequired,\n disabled: this.isDisabled,\n };\n this.field?.register(control);\n this.destroyRef.onDestroy(() => this.field?.unregister(control));\n afterNextRender(() => {\n const anchor = `--${this.popup().id}`;\n this.trigger().nativeElement.style.setProperty('anchor-name', anchor);\n this.popup().el.style.setProperty('position-anchor', anchor);\n });\n afterRenderEffect(() => {\n const value = this.value();\n if (this.locked() || (this.lastValue !== undefined && this.lastValue !== value))\n this.popup().hide();\n this.lastValue = value;\n });\n }\n ngOnInit(): void {\n const ng = this.injector.get(NgControl, null, { self: true, optional: true });\n this.formBound.set(\n !!ng || !!this.injector.get(FormField, null, { self: true, optional: true }),\n );\n this.ngSource.set(vdNgControlState(ng, this.destroyRef));\n }\n protected rememberState(): void {\n this.wasOpen = this.popup().el.matches(':popover-open');\n }\n protected toggle(): void {\n const wasOpen = this.wasOpen ?? this.popup().el.matches(':popover-open');\n this.wasOpen = null;\n if (this.locked()) return;\n if (wasOpen) {\n this.popup().hide();\n return;\n }\n this.draft.set(this.color() ?? '');\n this.draftError.set(false);\n this.popup().el.showPopover({ source: this.trigger().nativeElement } as ShowPopoverOptions);\n }\n protected triggerKey(event: KeyboardEvent): void {\n if (event.altKey && event.key === 'ArrowDown' && !this.popup().el.matches(':popover-open')) {\n event.preventDefault();\n this.wasOpen = false;\n this.toggle();\n }\n }\n protected onToggle(event: Event): void {\n const opened = (event as ToggleEvent).newState === 'open';\n this.open.set(opened);\n if (opened && !this.locked()) {\n this.hex().nativeElement.focus();\n this.hex().nativeElement.select();\n }\n }\n protected edit(event: Event): void {\n this.draft.set((event.target as HTMLInputElement).value);\n this.draftError.set(false);\n }\n protected validateOnBlur(): void {\n if (this.draft() && !this.draftColor()) this.draftError.set(true);\n }\n protected apply(event?: Event): void {\n event?.preventDefault();\n const value = this.draftColor();\n if (!value) {\n this.draftError.set(true);\n this.hex().nativeElement.focus();\n return;\n }\n this.commit(value);\n }\n protected commit(value: string): void {\n if (this.locked()) return;\n this.value.set(value);\n this.popup().hide();\n this.trigger().nativeElement.focus();\n }\n protected paletteKey(event: KeyboardEvent, index: number): void {\n if (this.locked() || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n const next = vdColorPaletteKey(\n index,\n this.palette().length,\n event.key,\n this.host.matches(':dir(rtl)'),\n );\n if (next === null) return;\n event.preventDefault();\n this.draft.set(this.palette()[next].value);\n this.draftError.set(false);\n this.popup().el.querySelectorAll<HTMLButtonElement>('[role=radio]')[next]?.focus();\n }\n protected leavePopup(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (next && !this.popup().el.contains(next)) this.popup().hide();\n }\n protected onFocusOut(event: FocusEvent): void {\n if (!event.relatedTarget || !this.host.contains(event.relatedTarget as Node)) this.touch.emit();\n }\n}\n"],"mappings":"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"}
|