@seniorsistemas/angular-components 19.5.5 → 19.6.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 (98) hide show
  1. package/accordion/README.md +95 -59
  2. package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +4 -0
  3. package/datepicker/README.md +175 -0
  4. package/datepicker/index.d.ts +5 -0
  5. package/datepicker/lib/datepicker/date.utils.d.ts +21 -0
  6. package/datepicker/lib/datepicker/datepicker.component.d.ts +254 -0
  7. package/datepicker/lib/datepicker/models/index.d.ts +16 -0
  8. package/datepicker/public-api.d.ts +2 -0
  9. package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +3 -1
  10. package/dynamic-form/dynamic-form/components/lookup/models/lookup-alert-config.d.ts +5 -0
  11. package/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.d.ts +119 -24
  12. package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +6 -0
  13. package/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.d.ts +6 -23
  14. package/dynamic-form/public-api.d.ts +1 -0
  15. package/editor/README.md +229 -0
  16. package/editor/index.d.ts +5 -0
  17. package/editor/lib/editor/editor.component.d.ts +127 -0
  18. package/editor/lib/editor/link-dialog/link-dialog.component.d.ts +18 -0
  19. package/editor/lib/editor/models/index.d.ts +12 -0
  20. package/editor/lib/editor/toolbar-button/editor-toolbar-button.component.d.ts +10 -0
  21. package/editor/public-api.d.ts +2 -0
  22. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +5 -1
  23. package/esm2022/datepicker/lib/datepicker/date.utils.mjs +182 -0
  24. package/esm2022/datepicker/lib/datepicker/datepicker.component.mjs +1062 -0
  25. package/esm2022/datepicker/lib/datepicker/models/index.mjs +2 -0
  26. package/esm2022/datepicker/public-api.mjs +2 -0
  27. package/esm2022/datepicker/seniorsistemas-angular-components-datepicker.mjs +5 -0
  28. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +11 -5
  29. package/esm2022/dynamic-form/dynamic-form/components/lookup/models/lookup-alert-config.mjs +2 -0
  30. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.mjs +1 -1
  31. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
  32. package/esm2022/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +2 -2
  33. package/esm2022/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +23 -116
  34. package/esm2022/dynamic-form/dynamic-form/form-field/fields/lookup/lookup-field.component.mjs +3 -3
  35. package/esm2022/dynamic-form/public-api.mjs +1 -1
  36. package/esm2022/editor/lib/editor/editor.component.mjs +375 -0
  37. package/esm2022/editor/lib/editor/link-dialog/link-dialog.component.mjs +48 -0
  38. package/esm2022/editor/lib/editor/models/index.mjs +3 -0
  39. package/esm2022/editor/lib/editor/toolbar-button/editor-toolbar-button.component.mjs +17 -0
  40. package/esm2022/editor/public-api.mjs +3 -0
  41. package/esm2022/editor/seniorsistemas-angular-components-editor.mjs +5 -0
  42. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.mjs +22 -12
  43. package/esm2022/inline-edit/lib/inline-edit/inline-edit.module.mjs +5 -5
  44. package/esm2022/lib/locale/fallback.mjs +82 -3
  45. package/esm2022/optional-fields/editor/editor-field/editor-field.component.mjs +5 -6
  46. package/esm2022/optional-fields/editor/editor-field.mjs +1 -1
  47. package/esm2022/panel/lib/panel/panel.component.mjs +7 -3
  48. package/esm2022/select/lib/select/select.component.mjs +4 -8
  49. package/esm2022/shared/lib/accessibility/datepicker-no-period-tab.directive.mjs +5 -1
  50. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +4 -0
  51. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  52. package/fesm2022/seniorsistemas-angular-components-datepicker.mjs +1250 -0
  53. package/fesm2022/seniorsistemas-angular-components-datepicker.mjs.map +1 -0
  54. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +49 -135
  55. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  56. package/fesm2022/seniorsistemas-angular-components-editor.mjs +437 -0
  57. package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -0
  58. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +24 -15
  59. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  60. package/fesm2022/seniorsistemas-angular-components-optional-fields-editor.mjs +4 -5
  61. package/fesm2022/seniorsistemas-angular-components-optional-fields-editor.mjs.map +1 -1
  62. package/fesm2022/seniorsistemas-angular-components-panel.mjs +6 -2
  63. package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
  64. package/fesm2022/seniorsistemas-angular-components-select.mjs +3 -7
  65. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  66. package/fesm2022/seniorsistemas-angular-components-shared.mjs +4 -0
  67. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  68. package/fesm2022/seniorsistemas-angular-components.mjs +81 -2
  69. package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
  70. package/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.d.ts +6 -4
  71. package/inline-edit/lib/inline-edit/inline-edit.module.d.ts +2 -2
  72. package/loading-state/README.md +57 -17
  73. package/optional-fields/editor/editor-field.d.ts +9 -6
  74. package/package.json +74 -8
  75. package/panel/README.md +12 -1
  76. package/panel/lib/panel/panel.component.d.ts +3 -1
  77. package/schematics/collection.json +4 -0
  78. package/schematics/migrations/migrate-p-datepicker/index.d.ts +2 -0
  79. package/schematics/migrations/migrate-p-datepicker/index.js +141 -0
  80. package/schematics/migrations/migrate-p-datepicker/index.js.map +1 -0
  81. package/schematics/migrations/migrate-p-datepicker/index.test.d.ts +1 -0
  82. package/schematics/migrations/migrate-p-datepicker/index.test.js +392 -0
  83. package/schematics/migrations/migrate-p-datepicker/index.test.js.map +1 -0
  84. package/schematics/migrations.json +10 -0
  85. package/schematics/utils/ast-utils.d.ts +28 -0
  86. package/schematics/utils/ast-utils.js +116 -0
  87. package/schematics/utils/ast-utils.js.map +1 -0
  88. package/schematics/utils/ast-utils.test.d.ts +1 -0
  89. package/schematics/utils/ast-utils.test.js +138 -0
  90. package/schematics/utils/ast-utils.test.js.map +1 -0
  91. package/schematics/utils/workspace-utils.d.ts +6 -0
  92. package/schematics/utils/workspace-utils.js +37 -0
  93. package/schematics/utils/workspace-utils.js.map +1 -0
  94. package/schematics/utils/workspace-utils.test.d.ts +1 -0
  95. package/schematics/utils/workspace-utils.test.js +152 -0
  96. package/schematics/utils/workspace-utils.test.js.map +1 -0
  97. package/shared/lib/accessibility/datepicker-no-period-tab.directive.d.ts +4 -0
  98. package/stats-card/README.md +80 -45
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seniorsistemas-angular-components-editor.mjs","sources":["../../projects/angular-components/editor/src/lib/editor/link-dialog/link-dialog.component.ts","../../projects/angular-components/editor/src/lib/editor/link-dialog/link-dialog.component.html","../../projects/angular-components/editor/src/lib/editor/toolbar-button/editor-toolbar-button.component.ts","../../projects/angular-components/editor/src/lib/editor/toolbar-button/editor-toolbar-button.component.html","../../projects/angular-components/editor/src/lib/editor/editor.component.ts","../../projects/angular-components/editor/src/lib/editor/editor.component.html","../../projects/angular-components/editor/src/seniorsistemas-angular-components-editor.ts"],"sourcesContent":["import { Component, inject, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\n\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\nimport { ActiveDialog, DialogComponent } from '@seniorsistemas/angular-components/dialog';\nimport { DynamicFormModule, DynamicStructure } from '@seniorsistemas/angular-components/dynamic-form';\nimport { TemplateModule } from '@seniorsistemas/angular-components/template';\n\n@Component({\n standalone: true,\n imports: [ReactiveFormsModule, TranslateModule, DialogComponent, DynamicFormModule, ButtonModule, TemplateModule],\n templateUrl: './link-dialog.component.html',\n})\nexport class LinkDialogComponent implements OnInit {\n private readonly activeDialog = inject(ActiveDialog);\n private readonly translateService = inject(TranslateService);\n\n initialUrl = '';\n\n form = new FormGroup({ url: new FormControl('') });\n\n configs: DynamicStructure[] = [];\n\n ngOnInit(): void {\n this.form.setValue({ url: this.initialUrl });\n this.configs = [\n {\n type: 'row',\n fields: [\n {\n type: 'string',\n name: 'url',\n label: this.translateService.instant('platform.angular_components.editor_link_url_label'),\n placeholder: this.translateService.instant(\n 'platform.angular_components.editor_link_url_placeholder',\n ),\n },\n ],\n },\n ];\n }\n\n confirm(): void {\n this.activeDialog.close(this.form.value.url?.trim() ?? '');\n }\n\n cancel(): void {\n this.activeDialog.dismiss();\n }\n}\n\n","<s-dialog [header]=\"'platform.angular_components.editor_insert_link' | translate\">\n <ng-template sTemplate=\"body\">\n <s-dynamic-form [form]=\"form\" [configs]=\"configs\" />\n </ng-template>\n <ng-template sTemplate=\"footer\">\n <div style=\"display:flex; justify-content:flex-end; gap:8px; width:100%\">\n <s-button\n [label]=\"'platform.angular_components.cancel' | translate\"\n priority=\"secondary\"\n (clicked)=\"cancel()\"\n />\n <s-button\n [label]=\"'platform.angular_components.editor_confirm' | translate\"\n priority=\"primary\"\n (clicked)=\"confirm()\"\n />\n </div>\n </ng-template>\n</s-dialog>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\n@Component({\n selector: 's-editor-toolbar-button',\n standalone: true,\n imports: [NgClass],\n templateUrl: './editor-toolbar-button.component.html',\n host: { style: 'display: contents' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorToolbarButtonComponent {\n icon = input.required<string>();\n label = input.required<string>();\n active = input<boolean>(false);\n disabled = input<boolean>(false);\n clicked = output<void>();\n}\n\n","<button\n type=\"button\"\n class=\"inline-flex items-center justify-center w-7 h-7 p-0 border-0 bg-transparent rounded cursor-pointer text-base leading-none transition-colors duration-150 disabled:opacity-[.35] disabled:cursor-not-allowed\"\n [ngClass]=\"{\n 'bg-[#ebebfa]': active(),\n 'text-[#5c5ce6]': active(),\n 'hover:bg-[#ddddf7]': active(),\n 'text-[#3d3d4d]': !active(),\n 'enabled:hover:bg-[#e8e8f0]': !active(),\n 'enabled:hover:text-[#1e1e2e]': !active()\n }\"\n [disabled]=\"disabled()\"\n [title]=\"label()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-pressed]=\"active()\"\n (click)=\"clicked.emit()\"\n>\n <i [class]=\"icon()\"></i>\n</button>\n","import { NgClass, NgStyle } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n OnDestroy,\n effect,\n forwardRef,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { take } from 'rxjs/operators';\n\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { DialogService } from '@seniorsistemas/angular-components/dialog';\nimport { Editor } from '@tiptap/core';\nimport { Color } from '@tiptap/extension-color';\nimport Highlight from '@tiptap/extension-highlight';\nimport Image from '@tiptap/extension-image';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport Subscript from '@tiptap/extension-subscript';\nimport Superscript from '@tiptap/extension-superscript';\nimport TextAlign from '@tiptap/extension-text-align';\nimport { TextStyle } from '@tiptap/extension-text-style';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\n\nimport { LinkDialogComponent } from './link-dialog/link-dialog.component';\nimport { EditorFormat, EditorSelectionChangeEvent, EditorTextChangeEvent, Extension } from './models';\nimport { EditorToolbarButtonComponent } from './toolbar-button/editor-toolbar-button.component';\n\n/**\n * @description Componente de editor de texto rico (WYSIWYG) construído sobre o Tiptap/ProseMirror.\n * Substitui o `p-editor` do PrimeNG sem dependência externa de licença comercial.\n * Implementa {@link ControlValueAccessor} para integração com Angular Forms.\n *\n * @example\n * ```html\n * <s-editor\n * formControlName=\"descricao\"\n * [readonly]=\"false\"\n * (textChange)=\"onTextChange($event)\" />\n * ```\n */\n@Component({\n selector: 's-editor',\n standalone: true,\n imports: [NgClass, NgStyle, TranslateModule, EditorToolbarButtonComponent],\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EditorComponent),\n multi: true,\n },\n ],\n})\nexport class EditorComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly dialogService = inject(DialogService);\n private readonly translateService = inject(TranslateService);\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * @description Coloca o editor em modo somente leitura.\n * @default false\n */\n readonly = input<boolean>(false);\n\n /**\n * @description Lista de formatos habilitados na toolbar. Quando vazio, todos os formatos são exibidos.\n */\n formats = input<EditorFormat[]>();\n\n /**\n * @description Texto de dica exibido quando o editor está vazio.\n */\n placeholder = input<string>();\n\n /**\n * @description Estilos inline aplicados ao container do editor.\n */\n style = input<{ [klass: string]: unknown }>();\n\n /**\n * @description Classes CSS adicionais aplicadas ao container do editor.\n */\n styleClass = input<string>();\n\n /**\n * @description Extensões Tiptap adicionais para estender o comportamento padrão do editor.\n */\n extensions = input<Extension[]>([]);\n\n /**\n * @description Emitido quando o editor é inicializado e está pronto para uso.\n */\n editorInit = output<Editor>();\n\n /**\n * @description Emitido sempre que o conteúdo do editor é alterado.\n */\n textChange = output<EditorTextChangeEvent>();\n\n /**\n * @description Emitido quando a seleção de texto no editor muda.\n */\n selectionChange = output<EditorSelectionChangeEvent>();\n\n private editorContainer = viewChild.required<ElementRef<HTMLDivElement>>('editorContainer');\n private imageInput = viewChild.required<ElementRef<HTMLInputElement>>('imageInput');\n\n private editor?: Editor;\n private _formDisabled = false;\n private _currentPlaceholder = '';\n\n activeStates = {\n isBold: false,\n isItalic: false,\n isUnderline: false,\n isStrike: false,\n isBulletList: false,\n isOrderedList: false,\n isBlockquote: false,\n isCode: false,\n isSubscript: false,\n isSuperscript: false,\n isAlignLeft: false,\n isAlignCenter: false,\n isAlignRight: false,\n currentHeading: 0,\n currentColor: '#000000',\n currentHighlight: 'transparent',\n canUndo: false,\n canRedo: false,\n };\n\n private _value = '';\n private _onChange: (value: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n if (this.editor) {\n this.editor.setEditable(!this.readonly() && !this._formDisabled);\n this.cdr.markForCheck();\n }\n });\n\n effect(() => {\n this._currentPlaceholder = this.placeholder() ?? '';\n this.editor?.view.dispatch(this.editor.state.tr);\n });\n }\n\n ngAfterViewInit(): void {\n this.initEditor();\n }\n\n ngOnDestroy(): void {\n this.editor?.destroy();\n }\n\n writeValue(value: string): void {\n this._value = value ?? '';\n if (this.editor) {\n this.editor.chain().setMeta('addToHistory', false).setContent(this._value, { emitUpdate: false }).run();\n this.cdr.markForCheck();\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled = isDisabled;\n this.editor?.setEditable(!isDisabled && !this.readonly());\n this.cdr.markForCheck();\n }\n\n isFormatAllowed(format: EditorFormat): boolean {\n const formats = this.formats();\n return !formats?.length || formats.includes(format);\n }\n\n hasAnyFormatBeforeUndoRedo(): boolean {\n const formatsBeforeUndoRedo: EditorFormat[] = [\n 'header', 'bold', 'italic', 'underline', 'strike', 'subscript', 'superscript',\n 'color', 'highlight', 'list', 'align', 'blockquote', 'code-block', 'link', 'image',\n ];\n return formatsBeforeUndoRedo.some(f => this.isFormatAllowed(f));\n }\n\n toggleBold(): void {\n this.editor?.chain().focus().toggleBold().run();\n }\n\n toggleItalic(): void {\n this.editor?.chain().focus().toggleItalic().run();\n }\n\n toggleUnderline(): void {\n this.editor?.chain().focus().toggleUnderline().run();\n }\n\n toggleStrike(): void {\n this.editor?.chain().focus().toggleStrike().run();\n }\n\n toggleBulletList(): void {\n this.editor?.chain().focus().toggleBulletList().run();\n }\n\n toggleOrderedList(): void {\n this.editor?.chain().focus().toggleOrderedList().run();\n }\n\n toggleBlockquote(): void {\n this.editor?.chain().focus().toggleBlockquote().run();\n }\n\n toggleCode(): void {\n this.editor?.chain().focus().toggleCode().run();\n }\n\n toggleSubscript(): void {\n this.editor?.chain().focus().toggleSubscript().run();\n }\n\n toggleSuperscript(): void {\n this.editor?.chain().focus().toggleSuperscript().run();\n }\n\n setTextAlign(align: 'left' | 'center' | 'right'): void {\n this.editor?.chain().focus().setTextAlign(align).run();\n }\n\n setColor(color: string): void {\n this.editor?.chain().focus().setColor(color).run();\n }\n\n setHighlight(color: string): void {\n this.editor?.chain().focus().setHighlight({ color }).run();\n }\n\n clearFormatting(): void {\n this.editor?.chain().focus().clearNodes().unsetAllMarks().run();\n }\n\n onHeadingChange(event: Event): void {\n const level = parseInt((event.target as HTMLSelectElement).value) as 0 | 1 | 2 | 3;\n if (isNaN(level) || level === 0) {\n this.editor?.chain().focus().setParagraph().run();\n } else {\n this.editor?.chain().focus().setHeading({ level }).run();\n }\n }\n\n setLink(): void {\n const existingUrl = (this.editor?.getAttributes('link')['href'] as string) ?? '';\n const ref = this.dialogService.open(LinkDialogComponent, { size: 'sm' });\n ref.componentInstance.initialUrl = existingUrl;\n ref.closed\n .pipe(take(1), takeUntilDestroyed(this.destroyRef))\n .subscribe((url: string) => {\n if (url === '') {\n this.editor?.chain().focus().extendMarkRange('link').unsetLink().run();\n } else {\n this.editor?.chain().focus().extendMarkRange('link').setLink({ href: url }).run();\n }\n });\n }\n\n setImage(): void {\n this.imageInput().nativeElement.click();\n }\n\n onImageFileSelected(event: Event): void {\n const input = event.target as HTMLInputElement;\n const file = input.files?.[0];\n if (!file) return;\n\n const reader = new FileReader();\n reader.onload = (e) => {\n const src = e.target?.result as string;\n this.editor?.chain().focus().setImage({ src }).run();\n input.value = '';\n this.cdr.markForCheck();\n };\n reader.readAsDataURL(file);\n }\n\n undo(): void {\n this.editor?.chain().focus().undo().run();\n }\n\n redo(): void {\n this.editor?.chain().focus().redo().run();\n }\n\n onToolbarKeydown(event: KeyboardEvent): void {\n if (!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) return;\n event.preventDefault();\n\n const toolbar = event.currentTarget as HTMLElement;\n const focusable = this.getToolbarFocusable(toolbar);\n if (!focusable.length) return;\n\n const currentIndex = focusable.findIndex(el => el === document.activeElement);\n let nextIndex: number;\n\n switch (event.key) {\n case 'ArrowRight': nextIndex = (currentIndex + 1) % focusable.length; break;\n case 'ArrowLeft': nextIndex = (currentIndex - 1 + focusable.length) % focusable.length; break;\n case 'Home': nextIndex = 0; break;\n default: nextIndex = focusable.length - 1; break;\n }\n\n focusable.forEach((el, i) => el.setAttribute('tabindex', i === nextIndex ? '0' : '-1'));\n focusable[nextIndex].focus();\n }\n\n onToolbarFocusIn(event: FocusEvent): void {\n const target = event.target as HTMLElement;\n const toolbar = event.currentTarget as HTMLElement;\n const focusable = this.getToolbarFocusable(toolbar);\n if (focusable.includes(target)) {\n focusable.forEach(el => el.setAttribute('tabindex', el === target ? '0' : '-1'));\n }\n }\n\n private getToolbarFocusable(toolbar: HTMLElement): HTMLElement[] {\n return Array.from(\n toolbar.querySelectorAll<HTMLElement>('button:not([disabled]), select, label[tabindex]'),\n );\n }\n\n private initEditor(): void {\n this.editor = new Editor({\n element: this.editorContainer().nativeElement,\n extensions: [\n StarterKit.configure({\n link: { openOnClick: false },\n underline: false,\n }),\n Underline,\n Image,\n TextAlign.configure({ types: ['heading', 'paragraph'] }),\n TextStyle,\n Color,\n Highlight.configure({ multicolor: true }),\n Placeholder.configure({ placeholder: () => this._currentPlaceholder }),\n Subscript,\n Superscript,\n ...this.extensions(),\n ],\n content: this._value,\n editable: !this.readonly(),\n editorProps: {\n attributes: {\n role: 'textbox',\n 'aria-multiline': 'true',\n 'aria-label': this.translateService.instant(\n 'platform.angular_components.editor_content_area',\n ),\n },\n },\n onUpdate: ({ editor }) => {\n const html = editor.getHTML();\n const text = editor.getText();\n this._value = html;\n this._onChange(html);\n this.textChange.emit({ htmlValue: html, textValue: text });\n this.syncActiveStates();\n this.cdr.markForCheck();\n },\n onBlur: () => {\n this._onTouched();\n },\n onSelectionUpdate: ({ editor }) => {\n this.syncActiveStates();\n const { from, to, empty } = editor.state.selection;\n this.selectionChange.emit({ from, to, empty });\n this.cdr.markForCheck();\n },\n });\n\n this.syncActiveStates();\n this.cdr.markForCheck();\n this.editorInit.emit(this.editor);\n }\n\n private syncActiveStates(): void {\n if (!this.editor) return;\n\n const e = this.editor;\n this.activeStates = {\n isBold: e.isActive('bold'),\n isItalic: e.isActive('italic'),\n isUnderline: e.isActive('underline'),\n isStrike: e.isActive('strike'),\n isBulletList: e.isActive('bulletList'),\n isOrderedList: e.isActive('orderedList'),\n isBlockquote: e.isActive('blockquote'),\n isCode: e.isActive('code'),\n isSubscript: e.isActive('subscript'),\n isSuperscript: e.isActive('superscript'),\n isAlignLeft: e.isActive({ textAlign: 'left' }),\n isAlignCenter: e.isActive({ textAlign: 'center' }),\n isAlignRight: e.isActive({ textAlign: 'right' }),\n currentHeading: [1, 2, 3].find((level) => e.isActive('heading', { level })) ?? 0,\n currentColor: (e.getAttributes('textStyle')['color'] as string) || '#000000',\n currentHighlight: (e.getAttributes('highlight')['color'] as string) || 'transparent',\n canUndo: e.can().undo(),\n canRedo: e.can().redo(),\n };\n }\n}\n","<div\n class=\"rounded bg-white flex flex-col border border-grayscale-30 transition-[border-color,box-shadow] duration-150 focus-within:border-[#5c5ce6] focus-within:shadow-[0_0_0_2px_rgba(92,92,230,0.15)]\"\n [ngClass]=\"styleClass()\"\n [ngStyle]=\"style()\"\n [class.s-editor--readonly]=\"readonly()\"\n>\n @if (!readonly()) {\n <div\n class=\"rounded-t flex flex-wrap items-center gap-0.5 border-b border-grayscale-30 bg-[#f9f9fb] px-2 py-1.5\"\n role=\"toolbar\"\n [attr.aria-label]=\"'platform.angular_components.editor_toolbar' | translate\"\n (keydown)=\"onToolbarKeydown($event)\"\n (focusin)=\"onToolbarFocusIn($event)\"\n >\n @if (isFormatAllowed('header')) {\n <select\n class=\"rounded bg-white h-7 cursor-pointer border border-grayscale-30 px-1.5 text-[13px] text-[#3d3d4d] outline-none transition-colors duration-150 focus:border-[#5c5ce6]\"\n (change)=\"onHeadingChange($event)\"\n [attr.aria-label]=\"'platform.angular_components.editor_heading_level' | translate\"\n >\n <option\n [value]=\"0\"\n [selected]=\"activeStates.currentHeading === 0\"\n >\n {{ 'platform.angular_components.editor_heading_normal' | translate }}\n </option>\n <option\n [value]=\"1\"\n [selected]=\"activeStates.currentHeading === 1\"\n >\n {{ 'platform.angular_components.editor_heading_1' | translate }}\n </option>\n <option\n [value]=\"2\"\n [selected]=\"activeStates.currentHeading === 2\"\n >\n {{ 'platform.angular_components.editor_heading_2' | translate }}\n </option>\n <option\n [value]=\"3\"\n [selected]=\"activeStates.currentHeading === 3\"\n >\n {{ 'platform.angular_components.editor_heading_3' | translate }}\n </option>\n </select>\n <span class=\"mx-1 inline-block h-5 w-px shrink-0 bg-[#d1d1dc]\"></span>\n }\n\n @if (isFormatAllowed('bold')) {\n <s-editor-toolbar-button\n icon=\"fa fa-bold\"\n [label]=\"'platform.angular_components.editor_bold' | translate\"\n [active]=\"activeStates.isBold\"\n (clicked)=\"toggleBold()\"\n />\n }\n\n @if (isFormatAllowed('italic')) {\n <s-editor-toolbar-button\n icon=\"fa fa-italic\"\n [label]=\"'platform.angular_components.editor_italic' | translate\"\n [active]=\"activeStates.isItalic\"\n (clicked)=\"toggleItalic()\"\n />\n }\n\n @if (isFormatAllowed('underline')) {\n <s-editor-toolbar-button\n icon=\"fa fa-underline\"\n [label]=\"'platform.angular_components.editor_underline' | translate\"\n [active]=\"activeStates.isUnderline\"\n (clicked)=\"toggleUnderline()\"\n />\n }\n\n @if (isFormatAllowed('strike')) {\n <s-editor-toolbar-button\n icon=\"fa fa-strikethrough\"\n [label]=\"'platform.angular_components.editor_strikethrough' | translate\"\n [active]=\"activeStates.isStrike\"\n (clicked)=\"toggleStrike()\"\n />\n }\n\n @if (isFormatAllowed('subscript')) {\n <s-editor-toolbar-button\n icon=\"fa fa-subscript\"\n [label]=\"'platform.angular_components.editor_subscript' | translate\"\n [active]=\"activeStates.isSubscript\"\n (clicked)=\"toggleSubscript()\"\n />\n }\n\n @if (isFormatAllowed('superscript')) {\n <s-editor-toolbar-button\n icon=\"fa fa-superscript\"\n [label]=\"'platform.angular_components.editor_superscript' | translate\"\n [active]=\"activeStates.isSuperscript\"\n (clicked)=\"toggleSuperscript()\"\n />\n }\n\n @if (isFormatAllowed('color')) {\n <label\n tabindex=\"0\"\n class=\"relative flex h-7 w-7 cursor-pointer items-center justify-center rounded bg-white transition-colors duration-150 hover:bg-[#f0f0f8]\"\n [attr.title]=\"'platform.angular_components.editor_text_color' | translate\"\n [attr.aria-label]=\"'platform.angular_components.editor_text_color' | translate\"\n (keydown.enter)=\"$event.preventDefault(); colorInput.click()\"\n (keydown.space)=\"$event.preventDefault(); colorInput.click()\"\n >\n <span class=\"flex flex-col items-center gap-px\">\n <i class=\"fa fa-font text-[11px] text-[#3d3d4d]\"></i>\n <span\n class=\"h-[3px] w-3.5 rounded-sm\"\n [style.background-color]=\"activeStates.currentColor\"\n ></span>\n </span>\n <input\n #colorInput\n type=\"color\"\n class=\"absolute inset-0 h-full w-full cursor-pointer opacity-0\"\n [value]=\"activeStates.currentColor\"\n (input)=\"setColor($any($event.target).value)\"\n />\n </label>\n }\n\n @if (isFormatAllowed('highlight')) {\n <label\n tabindex=\"0\"\n class=\"relative flex h-7 w-7 cursor-pointer items-center justify-center rounded bg-white transition-colors duration-150 hover:bg-[#f0f0f8]\"\n [attr.title]=\"'platform.angular_components.editor_background_color' | translate\"\n [attr.aria-label]=\"'platform.angular_components.editor_background_color' | translate\"\n (keydown.enter)=\"$event.preventDefault(); highlightInput.click()\"\n (keydown.space)=\"$event.preventDefault(); highlightInput.click()\"\n >\n <span class=\"flex flex-col items-center gap-px\">\n <i class=\"fa fa-highlighter text-[11px] text-[#3d3d4d]\"></i>\n <span\n class=\"h-[3px] w-3.5 rounded-sm\"\n [style.background-color]=\"activeStates.currentHighlight === 'transparent' ? '#ffff00' : activeStates.currentHighlight\"\n ></span>\n </span>\n <input\n #highlightInput\n type=\"color\"\n class=\"absolute inset-0 h-full w-full cursor-pointer opacity-0\"\n [value]=\"activeStates.currentHighlight === 'transparent' ? '#ffff00' : activeStates.currentHighlight\"\n (input)=\"setHighlight($any($event.target).value)\"\n />\n </label>\n }\n\n @if (isFormatAllowed('list')) {\n <span class=\"mx-1 inline-block h-5 w-px shrink-0 bg-[#d1d1dc]\"></span>\n <s-editor-toolbar-button\n icon=\"fa fa-list-ul\"\n [label]=\"'platform.angular_components.editor_bullet_list' | translate\"\n [active]=\"activeStates.isBulletList\"\n (clicked)=\"toggleBulletList()\"\n />\n <s-editor-toolbar-button\n icon=\"fa fa-list-ol\"\n [label]=\"'platform.angular_components.editor_ordered_list' | translate\"\n [active]=\"activeStates.isOrderedList\"\n (clicked)=\"toggleOrderedList()\"\n />\n }\n\n @if (isFormatAllowed('align')) {\n <span class=\"mx-1 inline-block h-5 w-px shrink-0 bg-[#d1d1dc]\"></span>\n <s-editor-toolbar-button\n icon=\"fa fa-align-left\"\n [label]=\"'platform.angular_components.editor_align_left' | translate\"\n [active]=\"activeStates.isAlignLeft\"\n (clicked)=\"setTextAlign('left')\"\n />\n <s-editor-toolbar-button\n icon=\"fa fa-align-center\"\n [label]=\"'platform.angular_components.editor_align_center' | translate\"\n [active]=\"activeStates.isAlignCenter\"\n (clicked)=\"setTextAlign('center')\"\n />\n <s-editor-toolbar-button\n icon=\"fa fa-align-right\"\n [label]=\"'platform.angular_components.editor_align_right' | translate\"\n [active]=\"activeStates.isAlignRight\"\n (clicked)=\"setTextAlign('right')\"\n />\n }\n\n @if (isFormatAllowed('blockquote')) {\n <span class=\"mx-1 inline-block h-5 w-px shrink-0 bg-[#d1d1dc]\"></span>\n <s-editor-toolbar-button\n icon=\"fa fa-quote-right\"\n [label]=\"'platform.angular_components.editor_blockquote' | translate\"\n [active]=\"activeStates.isBlockquote\"\n (clicked)=\"toggleBlockquote()\"\n />\n }\n\n @if (isFormatAllowed('code-block')) {\n <s-editor-toolbar-button\n icon=\"fa fa-code\"\n [label]=\"'platform.angular_components.editor_inline_code' | translate\"\n [active]=\"activeStates.isCode\"\n (clicked)=\"toggleCode()\"\n />\n }\n\n @if (isFormatAllowed('link')) {\n <span class=\"mx-1 inline-block h-5 w-px shrink-0 bg-[#d1d1dc]\"></span>\n <s-editor-toolbar-button\n icon=\"fa fa-link\"\n [label]=\"'platform.angular_components.editor_insert_link' | translate\"\n (clicked)=\"setLink()\"\n />\n }\n\n @if (isFormatAllowed('image')) {\n <s-editor-toolbar-button\n icon=\"fa fa-image\"\n [label]=\"'platform.angular_components.editor_insert_image' | translate\"\n (clicked)=\"setImage()\"\n />\n }\n\n @if (hasAnyFormatBeforeUndoRedo()) {\n <span class=\"mx-1 inline-block h-5 w-px shrink-0 bg-[#d1d1dc]\"></span>\n }\n\n <s-editor-toolbar-button\n icon=\"fa fa-undo\"\n [label]=\"('platform.angular_components.editor_undo' | translate) + ' (Ctrl+Z)'\"\n [disabled]=\"!activeStates.canUndo\"\n (clicked)=\"undo()\"\n />\n <s-editor-toolbar-button\n icon=\"fa fa-redo\"\n [label]=\"('platform.angular_components.editor_redo' | translate) + ' (Ctrl+Y)'\"\n [disabled]=\"!activeStates.canRedo\"\n (clicked)=\"redo()\"\n />\n\n @if (isFormatAllowed('clean')) {\n <span class=\"mx-1 inline-block h-5 w-px shrink-0 bg-[#d1d1dc]\"></span>\n <s-editor-toolbar-button\n icon=\"fa fa-remove-format\"\n [label]=\"'platform.angular_components.editor_clear_formatting' | translate\"\n (clicked)=\"clearFormatting()\"\n />\n }\n </div>\n }\n\n <div\n #editorContainer\n class=\"s-editor-content flex-1\"\n ></div>\n <input\n #imageInput\n type=\"file\"\n accept=\"image/*\"\n style=\"display: none\"\n aria-hidden=\"true\"\n (change)=\"onImageFileSelected($event)\"\n />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ViewContainerRef, Component, ViewChild, Input, NgModule } from '@angular/core';
2
+ import { inject, ViewContainerRef, Component, ViewChild, Input, ElementRef, NgModule } from '@angular/core';
3
3
  import * as i1$1 from '@angular/forms';
4
4
  import { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
5
  import { delay, first } from 'rxjs/operators';
@@ -14,9 +14,8 @@ import * as i4 from '@seniorsistemas/angular-components/info-sign';
14
14
  import { InfoSignModule } from '@seniorsistemas/angular-components/info-sign';
15
15
  import * as i5 from '@ngx-translate/core';
16
16
  import { TranslateModule } from '@ngx-translate/core';
17
- import { Calendar } from 'primeng/calendar';
18
- import * as i2$1 from 'primeng/datepicker';
19
- import { DatePickerModule } from 'primeng/datepicker';
17
+ import * as i2$1 from '@seniorsistemas/angular-components/datepicker';
18
+ import { DatepickerComponent } from '@seniorsistemas/angular-components/datepicker';
20
19
  import * as i3$1 from '@seniorsistemas/angular-components/bignumber-input';
21
20
  import { BignumberInputModule } from '@seniorsistemas/angular-components/bignumber-input';
22
21
  import * as i5$1 from '@seniorsistemas/angular-components/tooltip';
@@ -307,13 +306,23 @@ class InlineEditCalendarComponent {
307
306
  localeService = inject(LocaleService);
308
307
  field;
309
308
  formGroup = new FormGroup({});
310
- calendar = null;
311
- tempValue = '';
309
+ datepickerEl = null;
310
+ tempValue = null;
312
311
  calendarLocaleOptions = null;
312
+ get resolvedHourFormat() {
313
+ return this.calendarLocaleOptions?.hourFormat === '12' ? '12' : '24';
314
+ }
315
+ get resolvedMode() {
316
+ if (this.field.view === 'month')
317
+ return 'month';
318
+ if (this.field.view === 'year')
319
+ return 'year';
320
+ return 'date';
321
+ }
313
322
  ngOnInit() {
314
323
  this._getLocaleOptions();
315
324
  if (this.formGroup && this.field) {
316
- this.tempValue = this.formGroup.get(this.field.name)?.value || '';
325
+ this.tempValue = this.formGroup.get(this.field.name)?.value || null;
317
326
  }
318
327
  }
319
328
  saveValue() {
@@ -322,7 +331,7 @@ class InlineEditCalendarComponent {
322
331
  }
323
332
  }
324
333
  getValueAsText() {
325
- return this.calendar?.el.nativeElement.querySelector('input').value ?? '';
334
+ return this.datepickerEl?.nativeElement?.querySelector('input')?.value ?? '';
326
335
  }
327
336
  _getLocaleOptions() {
328
337
  this.localeService.get().pipe(first()).subscribe((locale) => {
@@ -330,19 +339,19 @@ class InlineEditCalendarComponent {
330
339
  });
331
340
  }
332
341
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InlineEditCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
333
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: InlineEditCalendarComponent, selector: "ng-component", inputs: { field: "field", formGroup: "formGroup" }, viewQueries: [{ propertyName: "calendar", first: true, predicate: Calendar, descendants: true }], ngImport: i0, template: "<!-- Este componente utilizava a diretiva: sCalendarMask, verificar se ainda \u00E9 necess\u00E1rio -->\n<p-datepicker\n #calendar\n [inputId]=\"field.name\"\n [name]=\"field.name\"\n [showIcon]=\"true\"\n [selectionMode]=\"field.selectionMode\"\n [rangeSeparator]=\"field.rangeSeparator ? field.rangeSeparator : calendar.rangeSeparator\"\n [showSeconds]=\"field.showSeconds\"\n [showOnFocus]=\"field.showOnFocus\"\n icon=\"fa fa-calendar\"\n [minDate]=\"field.minDate\"\n [maxDate]=\"field.maxDate\"\n [dateFormat]=\"calendarLocaleOptions?.dateFormat ?? calendar.dateFormat\"\n [hourFormat]=\"calendarLocaleOptions?.hourFormat ?? calendar.hourFormat\"\n [defaultDate]=\"field.defaultDate ? field.defaultDate : calendar.defaultDate\"\n [view]=\"field.view ? field.view : calendar.view\"\n [placeholder]=\"field.placeholder\"\n inputStyleClass=\"mousetrap\"\n [appendTo]=\"field.appendTo\"\n (onBlur)=\"field.onBlur ? field.onBlur($event) : null\"\n (onFocus)=\"field.onFocus ? field.onFocus($event) : null\"\n (onSelect)=\"field.onSelect ? field.onSelect($event) : null\"\n (onClose)=\"field.onClose ? field.onClose($event) : null\"\n (onTodayClick)=\"field.onTodayClick ? field.onTodayClick($event) : null\"\n (onClearClick)=\"field.onClearClick ? field.onClearClick($event) : null\"\n (onMonthChange)=\"field.onMonthChange ? field.onMonthChange($event) : null\"\n (onYearChange)=\"field.onYearChange ? field.onYearChange($event) : null\"\n [showTransitionOptions]=\"'0ms'\"\n [hideTransitionOptions]=\"'0ms'\"\n [(ngModel)]=\"tempValue\">\n</p-datepicker>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$1.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "fluid", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "size", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }] });
342
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: InlineEditCalendarComponent, selector: "ng-component", inputs: { field: "field", formGroup: "formGroup" }, viewQueries: [{ propertyName: "datepickerEl", first: true, predicate: DatepickerComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<s-datepicker\n #datepicker\n [inputId]=\"field.name\"\n [name]=\"field.name\"\n [showIcon]=\"true\"\n [mode]=\"resolvedMode\"\n [rangeSeparator]=\"field.rangeSeparator ?? ' \u2014 '\"\n [showSeconds]=\"field.showSeconds ?? false\"\n icon=\"fas fa-calendar\"\n [min]=\"field.minDate ?? null\"\n [max]=\"field.maxDate ?? null\"\n [dateFormat]=\"calendarLocaleOptions?.dateFormat ?? 'dd/MM/yyyy'\"\n [hourFormat]=\"resolvedHourFormat\"\n [defaultDate]=\"field.defaultDate ?? null\"\n [placeholder]=\"field.placeholder\"\n (blurred)=\"field.onBlur ? field.onBlur($event) : null\"\n (focused)=\"field.onFocus ? field.onFocus($event) : null\"\n (selected)=\"field.onSelect ? field.onSelect($event) : null\"\n (closed)=\"field.onClose ? field.onClose($event) : null\"\n (todayClick)=\"field.onTodayClick ? field.onTodayClick($event) : null\"\n (clearClick)=\"field.onClearClick ? field.onClearClick($event) : null\"\n (monthChange)=\"field.onMonthChange ? field.onMonthChange($event) : null\"\n (yearChange)=\"field.onYearChange ? field.onYearChange($event) : null\"\n [(ngModel)]=\"tempValue\">\n</s-datepicker>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$1.DatepickerComponent, selector: "s-datepicker", inputs: ["inputId", "name", "placeholder", "mode", "selectionMode", "multipleSeparator", "showIcon", "icon", "min", "max", "defaultDate", "dateFormat", "hourFormat", "minuteStep", "showSeconds", "rangeSeparator", "showOnFocus", "readonlyInput", "firstDayOfWeek", "showButtonBar", "showClear", "showOtherMonths", "selectOtherMonths", "hideOnDateTimeSelect", "stepHour", "stepSecond", "tabindex", "autofocus", "disabledDates", "disabledDays", "disabled"], outputs: ["disabledChange", "blurred", "focused", "selected", "closed", "todayClick", "clearClick", "monthChange", "yearChange", "show", "valueInput"] }] });
334
343
  }
335
344
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InlineEditCalendarComponent, decorators: [{
336
345
  type: Component,
337
- args: [{ template: "<!-- Este componente utilizava a diretiva: sCalendarMask, verificar se ainda \u00E9 necess\u00E1rio -->\n<p-datepicker\n #calendar\n [inputId]=\"field.name\"\n [name]=\"field.name\"\n [showIcon]=\"true\"\n [selectionMode]=\"field.selectionMode\"\n [rangeSeparator]=\"field.rangeSeparator ? field.rangeSeparator : calendar.rangeSeparator\"\n [showSeconds]=\"field.showSeconds\"\n [showOnFocus]=\"field.showOnFocus\"\n icon=\"fa fa-calendar\"\n [minDate]=\"field.minDate\"\n [maxDate]=\"field.maxDate\"\n [dateFormat]=\"calendarLocaleOptions?.dateFormat ?? calendar.dateFormat\"\n [hourFormat]=\"calendarLocaleOptions?.hourFormat ?? calendar.hourFormat\"\n [defaultDate]=\"field.defaultDate ? field.defaultDate : calendar.defaultDate\"\n [view]=\"field.view ? field.view : calendar.view\"\n [placeholder]=\"field.placeholder\"\n inputStyleClass=\"mousetrap\"\n [appendTo]=\"field.appendTo\"\n (onBlur)=\"field.onBlur ? field.onBlur($event) : null\"\n (onFocus)=\"field.onFocus ? field.onFocus($event) : null\"\n (onSelect)=\"field.onSelect ? field.onSelect($event) : null\"\n (onClose)=\"field.onClose ? field.onClose($event) : null\"\n (onTodayClick)=\"field.onTodayClick ? field.onTodayClick($event) : null\"\n (onClearClick)=\"field.onClearClick ? field.onClearClick($event) : null\"\n (onMonthChange)=\"field.onMonthChange ? field.onMonthChange($event) : null\"\n (onYearChange)=\"field.onYearChange ? field.onYearChange($event) : null\"\n [showTransitionOptions]=\"'0ms'\"\n [hideTransitionOptions]=\"'0ms'\"\n [(ngModel)]=\"tempValue\">\n</p-datepicker>\n" }]
346
+ args: [{ template: "<s-datepicker\n #datepicker\n [inputId]=\"field.name\"\n [name]=\"field.name\"\n [showIcon]=\"true\"\n [mode]=\"resolvedMode\"\n [rangeSeparator]=\"field.rangeSeparator ?? ' \u2014 '\"\n [showSeconds]=\"field.showSeconds ?? false\"\n icon=\"fas fa-calendar\"\n [min]=\"field.minDate ?? null\"\n [max]=\"field.maxDate ?? null\"\n [dateFormat]=\"calendarLocaleOptions?.dateFormat ?? 'dd/MM/yyyy'\"\n [hourFormat]=\"resolvedHourFormat\"\n [defaultDate]=\"field.defaultDate ?? null\"\n [placeholder]=\"field.placeholder\"\n (blurred)=\"field.onBlur ? field.onBlur($event) : null\"\n (focused)=\"field.onFocus ? field.onFocus($event) : null\"\n (selected)=\"field.onSelect ? field.onSelect($event) : null\"\n (closed)=\"field.onClose ? field.onClose($event) : null\"\n (todayClick)=\"field.onTodayClick ? field.onTodayClick($event) : null\"\n (clearClick)=\"field.onClearClick ? field.onClearClick($event) : null\"\n (monthChange)=\"field.onMonthChange ? field.onMonthChange($event) : null\"\n (yearChange)=\"field.onYearChange ? field.onYearChange($event) : null\"\n [(ngModel)]=\"tempValue\">\n</s-datepicker>\n" }]
338
347
  }], propDecorators: { field: [{
339
348
  type: Input,
340
349
  args: [{ required: true }]
341
350
  }], formGroup: [{
342
351
  type: Input
343
- }], calendar: [{
352
+ }], datepickerEl: [{
344
353
  type: ViewChild,
345
- args: [Calendar]
354
+ args: [DatepickerComponent, { read: ElementRef }]
346
355
  }] } });
347
356
 
348
357
  class InlineEditLookupComponent {
@@ -618,7 +627,7 @@ class InlineEditModule {
618
627
  InfoSignModule,
619
628
  ContentGeneratorModule,
620
629
  TooltipModule,
621
- DatePickerModule,
630
+ DatepickerComponent,
622
631
  InputMaskModule,
623
632
  InputTextModule,
624
633
  TextareaModule,
@@ -634,7 +643,7 @@ class InlineEditModule {
634
643
  InfoSignModule,
635
644
  ContentGeneratorModule,
636
645
  TooltipModule,
637
- DatePickerModule,
646
+ DatepickerComponent,
638
647
  InputMaskModule,
639
648
  InputTextModule,
640
649
  TextareaModule,
@@ -655,7 +664,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
655
664
  InfoSignModule,
656
665
  ContentGeneratorModule,
657
666
  TooltipModule,
658
- DatePickerModule,
667
+ DatepickerComponent,
659
668
  InputMaskModule,
660
669
  InputTextModule,
661
670
  TextareaModule,