ngx-kit 1.0.0 → 2.0.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.
Files changed (40) hide show
  1. package/dialog/README.md +169 -0
  2. package/fesm2022/{ngx-input-angle-selector.mjs → ngx-kit-angle-selector.mjs} +16 -16
  3. package/fesm2022/ngx-kit-angle-selector.mjs.map +1 -0
  4. package/fesm2022/{ngx-input-box-shadow.mjs → ngx-kit-box-shadow.mjs} +10 -10
  5. package/fesm2022/ngx-kit-box-shadow.mjs.map +1 -0
  6. package/fesm2022/{ngx-input-color-picker.mjs → ngx-kit-color-picker.mjs} +30 -14
  7. package/fesm2022/ngx-kit-color-picker.mjs.map +1 -0
  8. package/fesm2022/ngx-kit-date-picker.mjs +2280 -0
  9. package/fesm2022/ngx-kit-date-picker.mjs.map +1 -0
  10. package/fesm2022/ngx-kit-dialog.mjs +378 -0
  11. package/fesm2022/ngx-kit-dialog.mjs.map +1 -0
  12. package/fesm2022/{ngx-input-gradient-picker.mjs → ngx-kit-gradient-picker.mjs} +11 -11
  13. package/fesm2022/ngx-kit-gradient-picker.mjs.map +1 -0
  14. package/fesm2022/ngx-kit-menu.mjs +229 -0
  15. package/fesm2022/ngx-kit-menu.mjs.map +1 -0
  16. package/fesm2022/ngx-kit-notify.mjs +292 -0
  17. package/fesm2022/ngx-kit-notify.mjs.map +1 -0
  18. package/fesm2022/{ngx-input-shared.mjs → ngx-kit-shared.mjs} +262 -157
  19. package/fesm2022/ngx-kit-shared.mjs.map +1 -0
  20. package/fesm2022/{ngx-input.mjs → ngx-kit.mjs} +1 -1
  21. package/fesm2022/ngx-kit.mjs.map +1 -0
  22. package/package.json +31 -15
  23. package/styles/all.css +22 -0
  24. package/styles/overlay.css +22 -0
  25. package/types/{ngx-input-angle-selector.d.ts → ngx-kit-angle-selector.d.ts} +6 -5
  26. package/types/{ngx-input-box-shadow.d.ts → ngx-kit-box-shadow.d.ts} +7 -7
  27. package/types/{ngx-input-color-picker.d.ts → ngx-kit-color-picker.d.ts} +7 -7
  28. package/types/ngx-kit-date-picker.d.ts +294 -0
  29. package/types/ngx-kit-dialog.d.ts +139 -0
  30. package/types/{ngx-input-gradient-picker.d.ts → ngx-kit-gradient-picker.d.ts} +7 -7
  31. package/types/ngx-kit-menu.d.ts +69 -0
  32. package/types/ngx-kit-notify.d.ts +60 -0
  33. package/types/{ngx-input-shared.d.ts → ngx-kit-shared.d.ts} +87 -40
  34. package/fesm2022/ngx-input-angle-selector.mjs.map +0 -1
  35. package/fesm2022/ngx-input-box-shadow.mjs.map +0 -1
  36. package/fesm2022/ngx-input-color-picker.mjs.map +0 -1
  37. package/fesm2022/ngx-input-gradient-picker.mjs.map +0 -1
  38. package/fesm2022/ngx-input-shared.mjs.map +0 -1
  39. package/fesm2022/ngx-input.mjs.map +0 -1
  40. /package/types/{ngx-input.d.ts → ngx-kit.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-input-gradient-picker.mjs","sources":["../../../projects/libs/gradient-picker/utils/build-gradient.ts","../../../projects/libs/gradient-picker/contracts/default-gradients.ts","../../../projects/libs/gradient-picker/components/input-gradient.component.ts","../../../projects/libs/gradient-picker/components/input-gradient.component.html","../../../projects/libs/gradient-picker/directives/ngx-input-gradient.directive.ts","../../../projects/libs/gradient-picker/ngx-input-gradient-picker.ts"],"sourcesContent":["// gradient-utils.ts\r\nimport { GradientStop, GradientType } from '../contracts/GradientStop';\r\n\r\nexport function buildGradientFromStops(\r\n stops: GradientStop[],\r\n type: GradientType = 'linear',\r\n rotation: number | string = 0\r\n): string {\r\n if (!stops || stops.length === 0) return '';\r\n\r\n // sort by numeric value\r\n const sorted = [...stops].sort((a, b) => a.value - b.value);\r\n\r\n // clamp 0..100 and format stops\r\n const parts = sorted.map((s) => {\r\n const v = Math.max(0, Math.min(Number(s.value) || 0, 100));\r\n return `${s.color.trim()} ${v}%`;\r\n });\r\n\r\n let prefix = '';\r\n if (type === 'linear') {\r\n // rotation can be number (deg) or string like 'to right' or '45deg'\r\n if (typeof rotation === 'number') prefix = `${rotation}deg, `;\r\n else if (typeof rotation === 'string' && rotation.trim().length) prefix = `${rotation.trim()}, `;\r\n } else if (type === 'radial') {\r\n // keep simple \"circle\" default: caller may put 'circle' in rotation (or pass separate option if needed)\r\n prefix = typeof rotation === 'string' && rotation.trim() ? `${rotation.trim()}, ` : 'circle, ';\r\n } else if (type === 'conic') {\r\n // conic-gradient accepts angle like 'from 45deg at 50% 50%'\r\n if (typeof rotation === 'number') prefix = `from ${rotation}deg, `;\r\n else if (typeof rotation === 'string' && rotation.trim()) prefix = `${rotation.trim()}, `;\r\n }\r\n\r\n return `${type}-gradient(${prefix}${parts.join(', ')})`;\r\n}\r\n\r\nexport function generateRandomColor(): string {\r\n const letters = '0123456789ABCDEF';\r\n let color = '#';\r\n for (let i = 0; i < 6; i++) {\r\n color += letters[Math.floor(Math.random() * 16)];\r\n }\r\n return color;\r\n}\r\n\r\nexport function isValidGradient(value: string): boolean {\r\n if (!value || typeof value !== 'string') return false;\r\n return /^\\s*(conic|linear|radial)-gradient\\s*\\(/i.test(value.trim());\r\n}\r\n\r\n/**\r\n * parseGradient\r\n * - returns: { type, rotation (number|string), stops, valid }\r\n * - stops: array of { id, color, value } where value is 0..100 (percent)\r\n * - rotation: number (deg) for linear if parsed as angle, or string (e.g. 'to right' or '45deg')\r\n */\r\nexport function parseGradient(value: string): {\r\n type: GradientType;\r\n rotation: number;\r\n shape?: string;\r\n stops: GradientStop[];\r\n valid: boolean;\r\n} {\r\n let type: GradientType = 'linear';\r\n let rotation = 180;\r\n let shape: string | undefined;\r\n let stops: GradientStop[] = [];\r\n let valid = false;\r\n\r\n if (!value) return { type, rotation, shape, stops, valid };\r\n\r\n const match = value.trim().match(/^(\\s*)(conic|linear|radial)-gradient\\s*\\((.*)\\)$/i);\r\n if (!match) return { type, rotation, shape, stops, valid };\r\n\r\n type = match[2].toLowerCase() as GradientType;\r\n let content = match[3].trim();\r\n\r\n // --- Split arguments by commas, respecting parentheses (for rgba, hsl, etc.)\r\n const parts: string[] = [];\r\n let buf = '';\r\n let depth = 0;\r\n for (const c of content) {\r\n if (c === '(') depth++;\r\n if (c === ')') depth--;\r\n if (c === ',' && depth === 0) {\r\n parts.push(buf.trim());\r\n buf = '';\r\n } else {\r\n buf += c;\r\n }\r\n }\r\n if (buf.trim()) parts.push(buf.trim());\r\n\r\n // --- Determine starting index for color stops\r\n let colorStopStart = 0;\r\n const first = parts[0];\r\n\r\n if (type === 'linear') {\r\n // e.g., \"90deg\" or \"to right\"\r\n const angleMatch = first.match(/^(\\d+)(deg)?$/i);\r\n if (angleMatch) {\r\n rotation = parseFloat(angleMatch[1]);\r\n colorStopStart = 1;\r\n } else if (/^to /i.test(first)) {\r\n // optional direction mapping\r\n colorStopStart = 1;\r\n }\r\n } else if (type === 'radial') {\r\n // e.g., \"circle\", \"circle at center\", \"ellipse at top left\"\r\n if (!/^#|rgb|hsl|[a-z]+\\(/i.test(first)) {\r\n shape = first;\r\n colorStopStart = 1;\r\n }\r\n } else if (type === 'conic') {\r\n // e.g., \"from 0deg at center\"\r\n if (!/^#|rgb|hsl|[a-z]+\\(/i.test(first)) colorStopStart = 1;\r\n }\r\n\r\n // --- Regex for color stops\r\n const colorStopRegex = /((#([0-9a-fA-F]{3,8}))|(rgba?\\([^\\)]+\\))|(hsla?\\([^\\)]+\\))|([a-zA-Z]+))(\\s+([\\d.]+%?))?/;\r\n\r\n for (let i = colorStopStart; i < parts.length; i++) {\r\n const stopPart = parts[i].trim();\r\n const m = stopPart.match(colorStopRegex);\r\n if (m) {\r\n const color = m[1];\r\n const posStr = m[9];\r\n let value = 0;\r\n if (posStr && posStr.endsWith('%')) value = parseFloat(posStr);\r\n else if (posStr) value = parseFloat(posStr);\r\n else {\r\n // اگر درصدی وجود نداشت، با توجه به ایندکس مقدار دهی کن\r\n if (stops.length === 0) value = 0;\r\n else if (i === parts.length - 1) value = 100;\r\n else value = (100 / (parts.length - colorStopStart - 1)) * stops.length;\r\n }\r\n\r\n stops.push({ color, value, id: generateId(stops) });\r\n }\r\n }\r\n\r\n valid = stops.length >= 2;\r\n return { type, rotation, shape, stops, valid };\r\n}\r\n\r\nfunction generateId(rangeValues: GradientStop[]): string {\r\n const id = 'ngx-stop-' + Math.random().toString(36).substring(2, 9);\r\n return rangeValues.find((x) => x.id === id) ? generateId(rangeValues) : id;\r\n}\r\n","import { GradientStop } from './GradientStop';\r\n\r\nexport const DefaultGradients: GradientStop[][] = [\r\n // Sunset\r\n [\r\n { id: '1', value: 0, color: '#ff7e5f' },\r\n { id: '2', value: 100, color: '#feb47b' },\r\n ],\r\n\r\n // Ocean Blue\r\n [\r\n { id: '1', value: 0, color: '#00c6ff' },\r\n { id: '2', value: 100, color: '#0072ff' },\r\n ],\r\n\r\n // Purple Dream\r\n [\r\n { id: '1', value: 0, color: '#a18cd1' },\r\n { id: '2', value: 100, color: '#fbc2eb' },\r\n ],\r\n\r\n // Cool Sky\r\n [\r\n { id: '1', value: 0, color: '#2193b0' },\r\n { id: '2', value: 100, color: '#6dd5ed' },\r\n ],\r\n\r\n // Peach\r\n [\r\n { id: '1', value: 0, color: '#ed4264' },\r\n { id: '2', value: 100, color: '#ffedbc' },\r\n ],\r\n\r\n // Night Fade\r\n [\r\n { id: '1', value: 0, color: '#a18cd1' },\r\n { id: '2', value: 100, color: '#fbc2eb' },\r\n ],\r\n\r\n // Aqua Marine\r\n [\r\n { id: '1', value: 0, color: '#1a2980' },\r\n { id: '2', value: 100, color: '#26d0ce' },\r\n ],\r\n\r\n // Forest\r\n [\r\n { id: '1', value: 0, color: '#5a3f37' },\r\n { id: '2', value: 100, color: '#2c7744' },\r\n ],\r\n\r\n // Flame\r\n [\r\n { id: '1', value: 0, color: '#ff4e50' },\r\n { id: '2', value: 100, color: '#f9d423' },\r\n ],\r\n\r\n // Blue Lagoon\r\n [\r\n { id: '1', value: 0, color: '#43cea2' },\r\n { id: '2', value: 100, color: '#185a9d' },\r\n ],\r\n\r\n // Retro\r\n [\r\n { id: '1', value: 0, color: '#3fada8' },\r\n { id: '2', value: 100, color: '#808080' },\r\n ],\r\n\r\n // Sunrise\r\n [\r\n { id: '1', value: 0, color: '#ff512f' },\r\n { id: '2', value: 100, color: '#dd2476' },\r\n ],\r\n\r\n // Rainbow\r\n [\r\n { id: '1', value: 0, color: '#ff0000' },\r\n { id: '2', value: 20, color: '#ff9900' },\r\n { id: '3', value: 40, color: '#ffff00' },\r\n { id: '4', value: 60, color: '#00ff00' },\r\n { id: '5', value: 80, color: '#0000ff' },\r\n { id: '6', value: 100, color: '#8b00ff' },\r\n ],\r\n\r\n // Candy\r\n [\r\n { id: '1', value: 0, color: '#f953c6' },\r\n { id: '2', value: 100, color: '#b91d73' },\r\n ],\r\n\r\n // Citrus\r\n [\r\n { id: '1', value: 0, color: '#fdc830' },\r\n { id: '2', value: 100, color: '#f37335' },\r\n ],\r\n\r\n // Lava\r\n [\r\n { id: '1', value: 0, color: '#e52d27' },\r\n { id: '2', value: 100, color: '#b31217' },\r\n ],\r\n\r\n // Winter\r\n [\r\n { id: '1', value: 0, color: '#e6dada' },\r\n { id: '2', value: 100, color: '#274046' },\r\n ],\r\n\r\n // Purple Love\r\n [\r\n { id: '1', value: 0, color: '#cc2b5e' },\r\n { id: '2', value: 100, color: '#753a88' },\r\n ],\r\n\r\n // Mint\r\n [\r\n { id: '1', value: 0, color: '#76b852' },\r\n { id: '2', value: 100, color: '#8dc26f' },\r\n ],\r\n\r\n // Cloud\r\n [\r\n { id: '1', value: 0, color: '#bdc3c7' },\r\n { id: '2', value: 100, color: '#2c3e50' },\r\n ],\r\n];\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n NG_VALIDATORS,\r\n ControlValueAccessor,\r\n Validator,\r\n AbstractControl,\r\n ValidationErrors,\r\n FormsModule,\r\n} from '@angular/forms';\r\nimport { GradientStop, GradientType } from '../contracts/GradientStop';\r\nimport { buildGradientFromStops, generateRandomColor, isValidGradient, parseGradient } from '../utils/build-gradient';\r\nimport { DefaultGradients } from '../contracts/default-gradients';\r\nimport { BrowserService, RangeSliderComponent } from 'ngx-input/shared';\r\nimport { NgxInputColor } from 'ngx-input/color-picker';\r\nimport { NgxInputAngle } from 'ngx-input/angle-selector';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ngx-input-gradient',\r\n templateUrl: './input-gradient.component.html',\r\n styleUrls: ['./input-gradient.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxInputGradientComponent), multi: true },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: NgxInputGradientComponent,\r\n },\r\n ],\r\n host: {\r\n '[class.dark]': 'theme==\"dark\"',\r\n },\r\n imports: [CommonModule, FormsModule, RangeSliderComponent, NgxInputColor, NgxInputAngle],\r\n})\r\nexport class NgxInputGradientComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\r\n browserService = inject(BrowserService);\r\n theme: 'light' | 'dark' = this.browserService.prefersDarkMode ? 'dark' : 'light';\r\n @Input('theme') set setTheme(val: 'light' | 'dark' | 'auto') {\r\n if (!val || val == 'auto') {\r\n this.theme = this.browserService.prefersDarkMode ? 'dark' : 'light';\r\n } else {\r\n this.theme = val;\r\n }\r\n }\r\n @Output() change = new EventEmitter<string>();\r\n\r\n defaultGradients: string[] = [];\r\n\r\n resultGradient = '';\r\n baseBg = '';\r\n rangeValues: GradientStop[] = [];\r\n type: GradientType = 'linear';\r\n rotation: number = 90;\r\n selectedIndex = 0;\r\n\r\n isDisabled = false;\r\n _onChange = (value: string) => {};\r\n _onTouched = () => {};\r\n _onValidateChange = () => {};\r\n\r\n @ViewChild('rangeSlider', { static: true }) rangeSlider?: RangeSliderComponent;\r\n\r\n constructor(private cd: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.setDefaultGradients();\r\n }\r\n ngOnDestroy(): void {}\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n }\r\n registerOnValidatorChange(fn: () => void): void {\r\n this._onValidateChange = fn;\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n if (!this.resultGradient) return { required: true };\r\n const parsed = parseGradient(this.resultGradient);\r\n if (!parsed.valid) return { invalid: true };\r\n if (parsed.stops.length < 2) return { stops: 'at least 2 color stops required' };\r\n return null;\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (value && isValidGradient(value)) {\r\n const parsed = parseGradient(value);\r\n if (parsed.valid) {\r\n this.resultGradient = value;\r\n this.type = parsed.type;\r\n this.rotation = +parsed.rotation;\r\n this.rangeValues = parsed.stops;\r\n } else {\r\n this.resultGradient = '';\r\n this.rangeValues = [\r\n { color: generateRandomColor(), value: 0, id: this.generateId() },\r\n { color: generateRandomColor(), value: 100, id: this.generateId() },\r\n ];\r\n this.type = 'linear';\r\n this.rotation = 90;\r\n }\r\n } else {\r\n this.resultGradient = '';\r\n this.rangeValues = [\r\n { color: generateRandomColor(), value: 0, id: this.generateId() },\r\n { color: generateRandomColor(), value: 100, id: this.generateId() },\r\n ];\r\n this.type = 'linear';\r\n this.rotation = 90;\r\n }\r\n this.generateGradient();\r\n }\r\n private generateId(): string {\r\n let id = 'ngx-thumb-' + Math.random().toString(36).substring(2, 9);\r\n if (this.rangeValues.findIndex((x) => x.id == id) >= 0) {\r\n return this.generateId();\r\n }\r\n return id;\r\n }\r\n\r\n stopPropagation(ev: Event) {\r\n ev.stopPropagation();\r\n }\r\n\r\n remove() {\r\n if (this.rangeValues.length > 2) {\r\n this.rangeValues.splice(this.selectedIndex, 1);\r\n this.selectedIndex = 0;\r\n this.generateGradient();\r\n }\r\n }\r\n\r\n generateGradient(ev?: string) {\r\n if (ev && this.rangeValues[this.selectedIndex]) {\r\n this.rangeValues[this.selectedIndex].color = ev;\r\n }\r\n for (let item of this.rangeValues) {\r\n item.color ??= generateRandomColor();\r\n }\r\n this.baseBg = buildGradientFromStops(this.rangeValues, 'linear', 90);\r\n this.resultGradient = buildGradientFromStops(this.rangeValues, this.type, +this.rotation);\r\n this.emitChange();\r\n }\r\n\r\n updateRangeSlider() {\r\n if (this.rangeSlider) {\r\n this.rangeSlider.writeValue(this.rangeValues);\r\n }\r\n }\r\n emitChange() {\r\n this._onChange(this.resultGradient);\r\n this.change.emit(this.resultGradient);\r\n }\r\n\r\n setDefaultGradients() {\r\n this.defaultGradients = [];\r\n\r\n for (let item of DefaultGradients) {\r\n this.defaultGradients.push(buildGradientFromStops(item, 'linear', 90));\r\n }\r\n }\r\n\r\n onSelectDefault(item: string, i: number) {\r\n // console.log('onSelectDefault', item, i);\r\n this.writeValue(item);\r\n this.emitChange();\r\n }\r\n}\r\n","<div class=\"ngx-input-gradient-picker\" (click)=\"stopPropagation($event)\">\r\n <div class=\"ngx-color-preview\" [ngStyle]=\"{ '--ngx-selected-gradient': resultGradient }\"></div>\r\n <div class=\"ngx-c-inner\">\r\n <range-slider\r\n [(ngModel)]=\"rangeValues\"\r\n name=\"rangeCalues\"\r\n [min]=\"0\"\r\n [max]=\"100\"\r\n [step]=\"1\"\r\n [addNewRangeOnClick]=\"true\"\r\n [background]=\"baseBg\"\r\n [(selectedIndex)]=\"selectedIndex\"\r\n (change)=\"generateGradient()\"\r\n #rangeSlider></range-slider>\r\n\r\n <div class=\"text-end\">\r\n <button class=\"remove-btn\" type=\"button\" (click)=\"remove()\">remove</button>\r\n </div>\r\n @if (rangeValues[selectedIndex]) {\r\n <div class=\"ngx-row\">\r\n <div class=\"ngx-col-6\">\r\n <div class=\"label\">Color</div>\r\n <div class=\"input-color\">\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"rangeValues[selectedIndex].color\"\r\n name=\"color\"\r\n #inputColor\r\n (ngModelChange)=\"generateGradient(); updateRangeSlider()\" />\r\n <span\r\n #ngxGradColor\r\n class=\"color\"\r\n [style.backgroundColor]=\"rangeValues[selectedIndex].color\"\r\n [ngxInputColor]=\"inputColor\"\r\n [theme]=\"theme\"\r\n [ngModel]=\"rangeValues[selectedIndex].color\"\r\n [simpleMode]=\"true\"\r\n (change)=\"generateGradient($event)\"></span>\r\n </div>\r\n </div>\r\n <div class=\"ngx-col-6\">\r\n <div class=\"label\">Position</div>\r\n <input\r\n type=\"number\"\r\n [(ngModel)]=\"rangeValues[selectedIndex].value\"\r\n min=\"0\"\r\n max=\"100\"\r\n name=\"posiition\"\r\n (change)=\"generateGradient(); updateRangeSlider()\" />\r\n </div>\r\n <div class=\"ngx-col-6\">\r\n <div class=\"label\">Rotation</div>\r\n <div class=\"ngx-input-group\">\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"rotation\"\r\n ngxInputAngle\r\n [theme]=\"theme\"\r\n (change)=\"generateGradient()\"\r\n name=\"rotation\"\r\n [disabled]=\"type == 'radial'\" />\r\n <span class=\"ngx-input-prefix\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\r\n <path\r\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"ngx-col-6\">\r\n <div class=\"label\">Type</div>\r\n <div class=\"ngx-input-group\">\r\n <select [(ngModel)]=\"type\" (change)=\"generateGradient()\" name=\"type\">\r\n <option value=\"linear\">linear</option>\r\n <option value=\"radial\">radial</option>\r\n </select>\r\n <span class=\"ngx-input-prefix\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\r\n <path\r\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"default-list\">\r\n @for (item of defaultGradients; track $index; let i = $index) {\r\n <span [style.background]=\"item\" (click)=\"onSelectDefault(item, i)\"></span>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n Renderer2,\r\n ViewContainerRef,\r\n forwardRef,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\nimport { NgxInputGradientComponent } from '../components/input-gradient.component';\r\nimport { isValidGradient, parseGradient } from '../utils/build-gradient';\r\nimport { DialogOverlayRef, DialogService } from 'ngx-input/shared';\r\n\r\n@Directive({\r\n selector: '[ngxInputGradient]',\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxInputGradient), multi: true },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: NgxInputGradient,\r\n },\r\n ],\r\n})\r\nexport class NgxInputGradient implements AfterViewInit, OnDestroy, ControlValueAccessor, Validator {\r\n @Input() setInputBackground = true;\r\n @Input() theme: 'light' | 'dark' | 'auto' = 'auto';\r\n private _targetInput?: HTMLInputElement;\r\n @Input('ngxInputColor') set ngxInputColor(\r\n el: HTMLInputElement | ElementRef<HTMLInputElement> | null | undefined | '',\r\n ) {\r\n this.isHostInput = false;\r\n if (el instanceof ElementRef) {\r\n this._targetInput = el.nativeElement;\r\n } else if (el instanceof HTMLInputElement) {\r\n this.isHostInput = true;\r\n this._targetInput = el;\r\n } else {\r\n this._targetInput = undefined;\r\n }\r\n\r\n if (this._targetInput) {\r\n this._targetInput.removeEventListener('input', this.boundInputHandler);\r\n this._targetInput.addEventListener('input', this.boundInputHandler);\r\n }\r\n }\r\n @Output() change = new EventEmitter<string>();\r\n\r\n private boundInputHandler = (e: Event) => {\r\n this.writeValue((e.target as HTMLInputElement).value);\r\n };\r\n private isHostInput = false;\r\n private pickerRef?: DialogOverlayRef<NgxInputGradientComponent>;\r\n\r\n value = '';\r\n\r\n _onChange = (value: string) => {};\r\n _onTouched = () => {};\r\n _onValidateChange = () => {};\r\n constructor(\r\n private el: ElementRef<HTMLInputElement>,\r\n private renderer: Renderer2,\r\n private viewContainerRef: ViewContainerRef,\r\n private dialogService: DialogService,\r\n ) {}\r\n\r\n @HostListener('click', ['$event']) onClick(ev: Event) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.toggleColorPicker();\r\n }\r\n ngAfterViewInit(): void {\r\n if (this._targetInput && this._targetInput.tagName.toLowerCase() === 'input') {\r\n this.writeValue(this._targetInput.value);\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n if (disabled) {\r\n this.renderer.setProperty(this.el.nativeElement, 'disabled', disabled);\r\n } else {\r\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\r\n }\r\n }\r\n registerOnValidatorChange(fn: () => void): void {\r\n this._onValidateChange = fn;\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return null;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyPicker();\r\n }\r\n\r\n writeValue(val: any): void {\r\n this.value = val;\r\n if (val && isValidGradient(val)) {\r\n // const parsed = parseGradient(val);\r\n if (this.setInputBackground) {\r\n this.renderer.setStyle(this.el.nativeElement, 'background', val);\r\n }\r\n if (this.isHostInput) {\r\n this.el.nativeElement.value = this.value;\r\n }\r\n this._onValidateChange();\r\n } else {\r\n this.renderer.setStyle(this.el.nativeElement, 'background', '');\r\n }\r\n }\r\n\r\n toggleColorPicker() {\r\n if (this.pickerRef) {\r\n this.destroyPicker();\r\n return;\r\n }\r\n\r\n this.pickerRef = this.dialogService.open({\r\n anchor: this.el.nativeElement,\r\n component: NgxInputGradientComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n alignment: 'start',\r\n placement: 'auto',\r\n configure: (instance, ref) => {\r\n instance.setTheme = this.theme;\r\n instance.writeValue(this.value);\r\n\r\n instance.change.subscribe((c: string) => {\r\n this.value = c;\r\n this.emitChange(c);\r\n });\r\n\r\n // instance.closed.subscribe(() => ref.close());\r\n },\r\n onClosed: () => {\r\n this.pickerRef = undefined;\r\n },\r\n });\r\n }\r\n\r\n destroyPicker() {\r\n if (this.pickerRef) {\r\n this.pickerRef.close();\r\n this.pickerRef = undefined;\r\n }\r\n }\r\n\r\n private async emitChange(c: string) {\r\n if (this.setInputBackground) {\r\n this.renderer.setStyle(this.el.nativeElement, 'background', c);\r\n }\r\n\r\n // اگر روی input باشیم، مقدار رو در input قرار بده\r\n if (this.isHostInput) {\r\n const input = this.el.nativeElement as HTMLInputElement;\r\n input.value = c;\r\n }\r\n\r\n // اگر targetInput وجود داره، در اونم مقدار ست کن\r\n if (this._targetInput instanceof HTMLInputElement) {\r\n this._targetInput.value = c;\r\n const event = new Event('input', { bubbles: true });\r\n this._targetInput.dispatchEvent(event);\r\n }\r\n\r\n this._onChange(c);\r\n this.change.emit(c);\r\n this._onTouched();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-input-shared.mjs","sources":["../../../projects/libs/shared/utils/get-offset-position.ts","../../../projects/libs/shared/range-slider/range-slider.component.ts","../../../projects/libs/shared/range-slider/range-slider.component.html","../../../projects/libs/shared/saturation/saturation.component.ts","../../../projects/libs/shared/saturation/saturation.component.html","../../../projects/libs/shared/slider/slider.component.ts","../../../projects/libs/shared/slider/slider.component.html","../../../projects/libs/shared/services/browser.service.ts","../../../projects/libs/shared/dialog/dialog-overlay-ref.ts","../../../projects/libs/shared/dialog/dialog.service.ts","../../../projects/libs/shared/ngx-input-shared.ts"],"sourcesContent":["export function getOffsetPosition(\r\n evt: MouseEvent | TouchEvent,\r\n parent: HTMLElement\r\n) {\r\n let position = {\r\n x: 0,\r\n y: 0,\r\n };\r\n\r\n if (evt instanceof MouseEvent) {\r\n position.x = evt.pageX;\r\n position.y = evt.pageY;\r\n } else if (evt.touches && evt.touches.length > 0) {\r\n position.x = evt.touches[0].pageX;\r\n position.y = evt.touches[0].pageY;\r\n }\r\n\r\n // Adjust for the parent's offset\r\n let parentRect = parent.getBoundingClientRect();\r\n position.x -= parentRect.left + window.scrollX;\r\n position.y -= parentRect.top + window.scrollY;\r\n\r\n return position;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n forwardRef,\r\n type OnInit,\r\n} from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\n\r\nexport interface IValue {\r\n id?: string;\r\n value: number;\r\n}\r\nexport class ValueModel {\r\n id!: string;\r\n value!: number;\r\n x?: number;\r\n thumb?: HTMLElement;\r\n color?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'range-slider',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CommonModule],\r\n templateUrl: './range-slider.component.html',\r\n styleUrls: ['./range-slider.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RangeSliderComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => RangeSliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RangeSliderComponent implements OnInit, ControlValueAccessor, Validator {\r\n /**\r\n * The step value for the slider\r\n */\r\n @Input() step = 1;\r\n /**\r\n * The minimum value for the slider\r\n */\r\n @Input() min = 0;\r\n /**\r\n * The maximum value for the slider\r\n */\r\n @Input() max = 100;\r\n /**\r\n * The background color of the slider\r\n * - can use css like `background: linear-gradient(to right, red, blue);`\r\n * - or a solid color like `background: red;`\r\n */\r\n @Input() background?: string;\r\n /**\r\n * If true, the background will be transparent\r\n */\r\n @Input() isBgTransparent = false;\r\n /**\r\n * If true, clicking on the slider will add a new range at that position\r\n */\r\n @Input() addNewRangeOnClick = false;\r\n\r\n /**\r\n * The current value of the slider\r\n */\r\n @Output() change = new EventEmitter<IValue[]>();\r\n @Input() selectedIndex?: number;\r\n @Output() selectedIndexChange = new EventEmitter<number>();\r\n\r\n private isDragging = false;\r\n\r\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: false }) thumb?: ElementRef<HTMLDivElement>;\r\n\r\n values: ValueModel[] = [];\r\n isDisabled = false;\r\n _onChange = (value: IValue[]) => {};\r\n _onTouched = () => {};\r\n _validatorOnChange = () => {};\r\n private sliderRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n ngOnInit(): void {}\r\n\r\n private generateId(): string {\r\n let id = 'ngx-thumb-' + Math.random().toString(36).substring(2, 9);\r\n if (this.values.findIndex((x) => x.id == id) >= 0) {\r\n return this.generateId();\r\n }\r\n return id;\r\n }\r\n\r\n writeValue(items?: IValue[]): void {\r\n this.values = [];\r\n if (!items || !Array.isArray(items)) {\r\n items = [];\r\n }\r\n if (items.length === 0) {\r\n items.push({ id: this.generateId(), value: this.min });\r\n }\r\n for (let val of items) {\r\n if (typeof val.value !== 'number' || isNaN(val.value)) {\r\n throw new Error('RangeSliderComponent: value must be an array of numbers');\r\n }\r\n let newVal = +val.value;\r\n if (newVal < +this.min) newVal = +this.min;\r\n else if (newVal > +this.max) newVal = +this.max;\r\n this.values.push({\r\n ...val,\r\n id: val.id ?? this.generateId(),\r\n value: newVal,\r\n });\r\n }\r\n this.updateAllThumbPositions();\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return null; // TODO: return errors if any;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n }\r\n private updateRects() {\r\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\r\n if (this.thumb) {\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updateThumbPosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.values);\r\n }\r\n dragStart(ev: MouseEvent | TouchEvent, index: number) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.selectedIndex = index;\r\n this.updateRects();\r\n this.updateThumbPosition(ev);\r\n this.selectedIndexChange.emit(this.selectedIndex);\r\n }\r\n\r\n addnewRangeOnSliderClick(event: MouseEvent | TouchEvent) {\r\n if (!this.addNewRangeOnClick) return;\r\n const position = getOffsetPosition(event, this.slider.nativeElement);\r\n const newValue = this.min + (position.x / this.sliderRect!.width) * (this.max - this.min);\r\n // must be add with order by position\r\n const indexByOrderValue = this.values.findIndex((item) => item.value > newValue);\r\n const insertIndex = indexByOrderValue >= 0 ? indexByOrderValue : this.values.length;\r\n this.values.splice(insertIndex, 0, {\r\n id: this.generateId(),\r\n value: newValue,\r\n });\r\n this.dragStart(event, insertIndex);\r\n // this.updateAllThumbPositions();\r\n // this.valueChanged();\r\n }\r\n\r\n private updateThumbPosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging || this.selectedIndex == undefined) return;\r\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.slider.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n position.x -= thumbRec.width / 2;\r\n let sliderRec = this.sliderRect!;\r\n const thumb = this.values[this.selectedIndex];\r\n if (position.x < 0) {\r\n thumb.x = 0;\r\n } else if (position.x > sliderRec.width - thumbRec.width) {\r\n thumb.x = sliderRec.width - thumbRec.width;\r\n } else {\r\n thumb.x = position.x;\r\n }\r\n this.setValueByPosition(thumb, thumbRec, sliderRec);\r\n }\r\n\r\n updateAllThumbPositions() {\r\n // wait to add thumbs\r\n setTimeout(() => {\r\n this.updateRects();\r\n const sliderRec = this.sliderRect!;\r\n const thumbRec = this.thumbRect!;\r\n for (let item of this.values) {\r\n item.x = ((item.value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n setValueByPosition(thumb: ValueModel, thumbRec: DOMRect, sliderRec: DOMRect) {\r\n const percentage = (thumb.x ?? 0) / (sliderRec.width - thumbRec.width);\r\n let newValue = this.min + percentage * (this.max - this.min);\r\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\r\n newValue = parseFloat((Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces));\r\n let value = Math.min(Math.max(newValue, this.min), this.max);\r\n if (thumb.value !== value) {\r\n thumb.value = value;\r\n this.valueChanged();\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n // this.selectedIndex = undefined;\r\n }\r\n\r\n valueChanged() {\r\n const v = this.values; // this.values.map(({ x, thumb, ...rest }) => ({ ...rest }));\r\n this._onChange(v);\r\n this.change.emit(v);\r\n }\r\n}\r\n","<div class=\"slider-container\">\r\n <ng-content></ng-content>\r\n <div\r\n #slider\r\n class=\"slider\"\r\n [class.add-range-cursor]=\"addNewRangeOnClick\"\r\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\r\n [class.bg-transparent]=\"isBgTransparent\"\r\n (mousedown)=\"addnewRangeOnSliderClick($event)\"\r\n (touchstart)=\"addnewRangeOnSliderClick($event)\">\r\n @for (item of values; track $index; let i = $index) {\r\n <div\r\n class=\"thumb\"\r\n [class.is-active]=\"selectedIndex == i\"\r\n #thumb\r\n [style.left.px]=\"item.x\"\r\n [style.background]=\"item.color\"\r\n [title]=\"item.value\"\r\n (mousedown)=\"dragStart($event, i)\"\r\n (touchstart)=\"dragStart($event, i)\"></div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- {{ selectedIndex }}\r\n<pre dir=\"ltr\" style=\"text-align: left\">{{ values | json }}</pre> -->\r\n\r\n","\r\nimport { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, forwardRef } from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n FormControl,\r\n AbstractControl,\r\n ValidationErrors,\r\n} from '@angular/forms';\r\nimport { IPosition } from '../contracts/IPosition';\r\n\r\n@Component({\r\n selector: 'saturation',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './saturation.component.html',\r\n styleUrl: './saturation.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SaturationComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SaturationComponent implements ControlValueAccessor {\r\n @Input() width?: number;\r\n @Input() height?: number;\r\n @Input() color = 'red';\r\n @Input() step = 1;\r\n @Input() min: IPosition = { x: 0, y: 0 };\r\n @Input() max = { x: 100, y: 100 };\r\n @Output() change = new EventEmitter<IPosition>();\r\n\r\n isDragging = false;\r\n @ViewChild('saturation', { static: true }) saturation!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\r\n x = 0;\r\n y = 0;\r\n myControl = new FormControl<IPosition | null>(null);\r\n isDisabled = false;\r\n _onChange = (value: any) => {};\r\n _onTouched = () => {};\r\n _validatorOnChange = () => {};\r\n\r\n private saturationRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n\r\n constructor() {}\r\n\r\n private updateRects() {\r\n this.saturationRect = this.saturation.nativeElement.getBoundingClientRect();\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n\r\n writeValue(val?: IPosition | null): void {\r\n if (!val) val = { x: 0, y: 0 };\r\n let value: IPosition = val;\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this.updateRects();\r\n const saturationRec = this.saturationRect!;\r\n const thumbRec = this.thumbRect!;\r\n this.x = ((value.x - this.min.x) * (saturationRec.width - thumbRec.width / 2)) / (this.max.x - this.min.x);\r\n this.y = ((value.y - this.min.y) * (saturationRec.height - thumbRec.height / 2)) / (this.max.y - this.min.y);\r\n if (val !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.myControl.errors;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n if (disabled) this.myControl.disable();\r\n else this.myControl.enable();\r\n }\r\n\r\n dragStart(ev: MouseEvent | TouchEvent) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.updateRects();\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.myControl.value);\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updatePosition(ev);\r\n }\r\n\r\n private updatePosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n if (!this.saturationRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.saturation.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n let saturationRec = this.saturationRect!;\r\n if (position.x < 0) {\r\n this.x = 0;\r\n } else if (position.x > saturationRec.width - (thumbRec.width / 2 - 3)) {\r\n this.x = saturationRec.width - (thumbRec.width / 2 - 3);\r\n } else {\r\n this.x = position.x;\r\n }\r\n // this.x = this.x - thumbRec.width / 2;\r\n\r\n if (position.y < 0) {\r\n this.y = 0;\r\n } else if (position.y > saturationRec.height - (thumbRec.height / 2 - 3)) {\r\n this.y = saturationRec.height - (thumbRec.height / 2 - 3);\r\n } else {\r\n this.y = position.y;\r\n }\r\n // this.y = this.y - thumbRec.height / 2;\r\n this.setValueByPosition(thumbRec, saturationRec);\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n }\r\n\r\n setValueByPosition(thumbRec: DOMRect, saturationRec: DOMRect) {\r\n const percentageX = this.x / (saturationRec.width - thumbRec.width);\r\n let newValueX = this.min.x + percentageX * (this.max.x - this.min.x);\r\n newValueX = Math.round(newValueX / this.step) * this.step;\r\n let valueX = Math.min(Math.max(newValueX, this.min.x), this.max.x);\r\n //-----------------------------\r\n const percentageY = this.y / (saturationRec.height - thumbRec.height);\r\n let newValueY = this.min.y + percentageY * (this.max.y - this.min.y);\r\n newValueY = Math.round(newValueY / this.step) * this.step;\r\n let valueY = Math.min(Math.max(newValueY, this.min.y), this.max.y);\r\n const newValue = { x: valueX, y: valueY };\r\n if (!this.myControl.value || this.myControl.value.x !== valueX || this.myControl.value.y !== valueY) {\r\n this.valueChanged(newValue);\r\n }\r\n }\r\n\r\n valueChanged(value: IPosition) {\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this._onChange(value);\r\n this.change.emit(value);\r\n }\r\n}\r\n","<div\r\n class=\"saturation-container\"\r\n [style.width.px]=\"width\"\r\n [style.height.px]=\"height\"\r\n (mousedown)=\"dragStart($event)\"\r\n (touchstart)=\"dragStart($event)\">\r\n <div class=\"saturation\" #saturation>\r\n <div class=\"s-bg\" [style.background]=\"color\"></div>\r\n <div class=\"s-white\"></div>\r\n <div class=\"s-black\"></div>\r\n </div>\r\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [style.top.px]=\"y\"></div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n forwardRef,\r\n type OnInit,\r\n} from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControl,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n Validators,\r\n} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'slider',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SliderComponent implements OnInit, ControlValueAccessor, Validator {\r\n @Input() step = 1;\r\n @Input() min = 0;\r\n @Input() max = 100;\r\n @Input() background?: string;\r\n @Input() isBgTransparent = false;\r\n @Output() change = new EventEmitter<number>();\r\n isDragging = false;\r\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\r\n x = 0;\r\n myControl = new FormControl<number | null>(null);\r\n isDisabled = false;\r\n _onChange = (value: any) => {};\r\n _onTouched = () => {};\r\n _validatorOnChange = () => {};\r\n private sliderRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n constructor() {}\r\n ngOnInit(): void {\r\n this.myControl.setValidators([Validators.min(this.min), Validators.max(this.max)]);\r\n }\r\n\r\n private updateRects() {\r\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n\r\n writeValue(val?: number | string | null): void {\r\n let value = 0;\r\n if (!val) value = 0;\r\n else if (+val < +this.min) value = +this.min;\r\n else if (+val > +this.max) value = +this.max;\r\n else value = +val;\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this.updateRects();\r\n const sliderRec = this.sliderRect!;\r\n const thumbRec = this.thumbRect!;\r\n this.x = ((value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\r\n if (val !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.myControl.errors;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n if (disabled) this.myControl.disable();\r\n else this.myControl.enable();\r\n }\r\n\r\n dragStart(ev: MouseEvent | TouchEvent) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.updateRects();\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.myControl.value);\r\n }\r\n\r\n private updatePosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.slider.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n position.x -= thumbRec.width / 2;\r\n let sliderRec = this.sliderRect!;\r\n if (position.x < 0) {\r\n this.x = 0;\r\n } else if (position.x > sliderRec.width - thumbRec.width) {\r\n this.x = sliderRec.width - thumbRec.width;\r\n } else {\r\n this.x = position.x;\r\n }\r\n this.setValueByPosition(thumbRec, sliderRec);\r\n }\r\n\r\n setValueByPosition(thumbRec: DOMRect, sliderRec: DOMRect) {\r\n const percentage = this.x / (sliderRec.width - thumbRec.width);\r\n let newValue = this.min + percentage * (this.max - this.min);\r\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\r\n newValue = parseFloat((Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces));\r\n let value = Math.min(Math.max(newValue, this.min), this.max);\r\n if (this.myControl.value !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n }\r\n\r\n valueChanged(value: number) {\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this._onChange(value);\r\n this.change.emit(value);\r\n }\r\n}\r\n","<div class=\"slider-container\">\r\n <ng-content></ng-content>\r\n <div\r\n #slider\r\n class=\"slider\"\r\n (mousedown)=\"dragStart($event)\"\r\n (touchstart)=\"dragStart($event)\"\r\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\r\n [class.bg-transparent]=\"isBgTransparent\">\r\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [title]=\"myControl.value\"></div>\r\n </div>\r\n</div>\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BrowserService {\r\n constructor(@Inject(PLATFORM_ID) private platformId: object) {}\r\n\r\n get isBrowser(): boolean {\r\n return isPlatformBrowser(this.platformId);\r\n }\r\n\r\n get prefersDarkMode(): boolean {\r\n if (!this.isBrowser) return false;\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n }\r\n}\r\n","import { ComponentRef } from '@angular/core';\r\n\r\nexport class DialogOverlayRef<T> {\r\n constructor(\r\n public readonly componentRef: ComponentRef<T>,\r\n private readonly dialogEl: HTMLDialogElement,\r\n private readonly teardownFn: () => void,\r\n ) {}\r\n\r\n close(): void {\r\n this.teardownFn();\r\n }\r\n\r\n get nativeElement(): HTMLElement {\r\n return this.dialogEl;\r\n }\r\n}\r\n","import { Injectable, Inject, ComponentRef, ApplicationRef, OnDestroy, inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { DialogOptions } from './dialog-options';\r\nimport { DialogOverlayRef } from './dialog-overlay-ref';\r\n\r\ninterface DialogInstance {\r\n id: number;\r\n anchor: HTMLElement;\r\n element: HTMLDialogElement;\r\n componentRef: ComponentRef<any>;\r\n options: DialogOptions<any>;\r\n cleanup: () => void;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DialogService implements OnDestroy {\r\n private openDialogs = new Map<number, DialogInstance>();\r\n private idCounter = 0;\r\n\r\n private globalKeyDownAdded = false;\r\n private globalResizeAdded = false;\r\n private globalClickAdded = false;\r\n\r\n private globalKeyDownListener: (e: KeyboardEvent) => void;\r\n private globalResizeListener: () => void;\r\n private globalClickListener: (e: PointerEvent) => void;\r\n\r\n private doc = inject(DOCUMENT);\r\n constructor() {\r\n this.globalKeyDownListener = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n const lastDialog = this.getLastDialog();\r\n if (lastDialog) {\r\n lastDialog.cleanup();\r\n }\r\n }\r\n };\r\n\r\n this.globalResizeListener = () => {\r\n this.repositionAll();\r\n };\r\n\r\n this.globalClickListener = (e: PointerEvent) => {\r\n this.handleClickOnBackdrop(e);\r\n };\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closeAll();\r\n }\r\n\r\n handleGlobalListeners() {\r\n // مطمئن شویم لیسنرها فقط یک بار اضافه شده‌اند\r\n if (!this.globalKeyDownAdded) {\r\n this.doc.addEventListener('keydown', this.globalKeyDownListener);\r\n this.globalKeyDownAdded = true;\r\n }\r\n if (!this.globalResizeAdded) {\r\n window.addEventListener('resize', this.globalResizeListener);\r\n this.globalResizeAdded = true;\r\n }\r\n if (!this.globalClickAdded) {\r\n this.doc.addEventListener('click', this.globalClickListener);\r\n this.globalClickAdded = true;\r\n }\r\n }\r\n\r\n open<T>(options: DialogOptions<T>): DialogOverlayRef<T> {\r\n const { anchor, component, viewContainerRef, configure, onClosed } = options;\r\n\r\n if (!viewContainerRef) {\r\n throw new Error('ViewContainerRef is required to render dialog content.');\r\n }\r\n\r\n this.handleGlobalListeners();\r\n\r\n const id = ++this.idCounter;\r\n\r\n const dialogElement = this.doc.createElement('dialog');\r\n\r\n dialogElement.style.position = 'absolute';\r\n dialogElement.style.outline = 'none';\r\n dialogElement.style.padding = '0';\r\n dialogElement.style.margin = '0';\r\n dialogElement.style.border = 'none';\r\n dialogElement.style.background = 'transparent';\r\n dialogElement.style.maxWidth = '100vw';\r\n dialogElement.style.maxHeight = '100vh';\r\n dialogElement.style.overflow = 'visible';\r\n dialogElement.style.zIndex = `${1000 + this.openDialogs.size}`;\r\n\r\n this.doc.body.appendChild(dialogElement);\r\n\r\n const componentRef = viewContainerRef.createComponent(component);\r\n\r\n if (componentRef.location.nativeElement) {\r\n dialogElement.appendChild(componentRef.location.nativeElement);\r\n }\r\n\r\n // تابع پاک‌سازی اختصاصی برای این دیالوگ\r\n const cleanup = () => {\r\n if (!this.openDialogs.has(id)) return; // جلوگیری از پاک‌سازی مجدد\r\n\r\n this.openDialogs.delete(id);\r\n\r\n if (componentRef.location.nativeElement?.parentNode) {\r\n componentRef.location.nativeElement.remove();\r\n }\r\n componentRef.destroy();\r\n dialogElement.remove();\r\n\r\n onClosed?.();\r\n };\r\n\r\n const instance: DialogInstance = {\r\n id,\r\n anchor,\r\n element: dialogElement,\r\n componentRef: componentRef as ComponentRef<T>,\r\n options: options,\r\n cleanup,\r\n };\r\n\r\n this.openDialogs.set(id, instance);\r\n dialogElement.showModal();\r\n\r\n if (configure) {\r\n const ref = new DialogOverlayRef(componentRef, dialogElement, cleanup);\r\n configure(componentRef.instance, ref);\r\n }\r\n\r\n requestAnimationFrame(() => {\r\n this.positionDialog(instance);\r\n });\r\n\r\n setTimeout(() => {\r\n const focusable = dialogElement.querySelector(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\r\n );\r\n if (focusable) {\r\n (focusable as HTMLElement).focus();\r\n }\r\n }, 0);\r\n\r\n const ref = new DialogOverlayRef(componentRef, dialogElement, cleanup);\r\n return ref;\r\n }\r\n\r\n private repositionAll() {\r\n Array.from(this.openDialogs.values()).forEach((instance) => {\r\n if (instance.anchor && instance.element.isConnected) {\r\n this.positionDialog(instance);\r\n }\r\n });\r\n }\r\n\r\n private positionDialog(dialogInstance: DialogInstance) {\r\n const anchor = dialogInstance.anchor;\r\n const dialog = dialogInstance.element;\r\n const { placement, alignment, margin = 8 } = dialogInstance.options;\r\n\r\n if (!anchor || !dialog) return;\r\n\r\n const anchorRect = anchor.getBoundingClientRect();\r\n const dialogRect = dialog.getBoundingClientRect();\r\n\r\n const vw = window.innerWidth;\r\n const vh = window.innerHeight;\r\n const isRTL = getComputedStyle(this.doc.documentElement).direction === 'rtl';\r\n\r\n let top = 0;\r\n let left: number | 'auto' = 'auto';\r\n let right: number | 'auto' = 'auto';\r\n\r\n const spaceBelow = vh - anchorRect.bottom;\r\n const spaceAbove = anchorRect.top;\r\n let verticalPos: 'above' | 'bottom' = 'above';\r\n\r\n // vertical position\r\n if (placement === 'bottom' || (placement === 'auto' && spaceBelow >= dialogRect.height + margin)) {\r\n top = anchorRect.bottom + margin;\r\n verticalPos = 'above';\r\n if (top + dialogRect.height > vh - margin) {\r\n top = vh - dialogRect.height - margin;\r\n verticalPos = 'bottom';\r\n }\r\n } else {\r\n top = anchorRect.top - dialogRect.height - margin;\r\n verticalPos = 'bottom';\r\n if (top > spaceAbove) {\r\n top = anchorRect.top + anchorRect.height + margin;\r\n verticalPos = 'above';\r\n }\r\n }\r\n\r\n // horizontal position\r\n if (alignment === 'center') {\r\n left = anchorRect.left + anchorRect.width / 2 - dialogRect.width / 2;\r\n } else if (alignment === 'start') {\r\n if (isRTL) {\r\n left = 'auto';\r\n right = vw - anchorRect.right;\r\n } else {\r\n left = anchorRect.left;\r\n }\r\n } else {\r\n // end\r\n left = isRTL ? anchorRect.left : anchorRect.right - dialogRect.width;\r\n }\r\n\r\n if (left != 'auto' && left < margin) {\r\n left = margin;\r\n }\r\n if (left != 'auto' && left + dialogRect.width > vw - margin) {\r\n left = vw - dialogRect.width - margin;\r\n }\r\n\r\n dialog.className = `tips-${verticalPos}`;\r\n\r\n dialog.style.top = `${top}px`;\r\n dialog.style.left = left != 'auto' ? `${left}px` : left;\r\n dialog.style.right = right != 'auto' ? `${right}px` : right;\r\n dialog.style.transform = 'none';\r\n }\r\n\r\n private getLastDialog(): DialogInstance | undefined {\r\n if (this.openDialogs.size === 0) return undefined;\r\n const lastKey = Array.from(this.openDialogs.keys()).pop();\r\n return lastKey ? this.openDialogs.get(lastKey) : undefined;\r\n }\r\n\r\n closeAll(): void {\r\n const ids = Array.from(this.openDialogs.keys());\r\n ids.forEach((id) => {\r\n const instance = this.openDialogs.get(id);\r\n instance?.cleanup();\r\n });\r\n }\r\n\r\n handleClickOnBackdrop(event: PointerEvent) {\r\n const target = event.target;\r\n\r\n const lastDialog = this.getLastDialog();\r\n if (!lastDialog) return;\r\n\r\n // The click target _must_ be the dialog element itself, and not elements underneath or inside.\r\n if (target !== lastDialog.element || !lastDialog.element?.open) return;\r\n // If the dialog contains a form, do not close the dialog when clicking outside of the dialog\r\n if (lastDialog.element.querySelector('form')) return;\r\n const rect = lastDialog.element.getBoundingClientRect();\r\n const clickWasInsideDialog =\r\n rect.top <= event.clientY &&\r\n event.clientY <= rect.top + rect.height &&\r\n rect.left <= event.clientX &&\r\n event.clientX <= rect.left + rect.width;\r\n if (!clickWasInsideDialog) {\r\n lastDialog.cleanup();\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-input.mjs","sources":["../../../projects/libs/public-api.ts","../../../projects/libs/ngx-input.ts"],"sourcesContent":["export const NGX_INPUT = '@ngxInput';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,SAAS,GAAG;;ACAzB;;AAEG;;;;"}
File without changes