iss-ctrl 0.0.13 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{iss-ctrl-iss-ctrl-BN9rcLt2.mjs → iss-ctrl-iss-ctrl-BpcynMId.mjs} +733 -169
- package/fesm2022/iss-ctrl-iss-ctrl-BpcynMId.mjs.map +1 -0
- package/fesm2022/{iss-ctrl-load-event-AgBohfHa.mjs → iss-ctrl-load-event-r4xUfn0F.mjs} +3 -3
- package/fesm2022/{iss-ctrl-load-event-AgBohfHa.mjs.map → iss-ctrl-load-event-r4xUfn0F.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-load-options-event-ClQPHNBO.mjs → iss-ctrl-load-options-event-BCHN0tAM.mjs} +3 -3
- package/fesm2022/{iss-ctrl-load-options-event-CBejHpME.mjs.map → iss-ctrl-load-options-event-BCHN0tAM.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-load-value-event-CDAKsE_O.mjs → iss-ctrl-load-value-event-CilsqNpU.mjs} +3 -3
- package/fesm2022/{iss-ctrl-load-value-event-CDAKsE_O.mjs.map → iss-ctrl-load-value-event-CilsqNpU.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-note.field-C9cVaAz0.mjs → iss-ctrl-note.field-C5zBFWV-.mjs} +2 -2
- package/fesm2022/{iss-ctrl-note.field-C9cVaAz0.mjs.map → iss-ctrl-note.field-C5zBFWV-.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-replace-api-keys-Chwe42Nu.mjs → iss-ctrl-replace-api-keys-uUZLoWuP.mjs} +2 -2
- package/fesm2022/{iss-ctrl-replace-api-keys-CLP4wBYu.mjs.map → iss-ctrl-replace-api-keys-uUZLoWuP.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-set-value-event-CrpzRR6X.mjs → iss-ctrl-set-value-event-DHF2LsSf.mjs} +2 -2
- package/fesm2022/{iss-ctrl-set-value-event-C7YYwHZV.mjs.map → iss-ctrl-set-value-event-DHF2LsSf.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-table.field-BP-HMKO3.mjs → iss-ctrl-table.field-CjCWmdqf.mjs} +2 -2
- package/fesm2022/{iss-ctrl-table.field-BP-HMKO3.mjs.map → iss-ctrl-table.field-CjCWmdqf.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-trigger-based-on-json-value-DS4TR38v.mjs → iss-ctrl-trigger-based-on-json-value-BwxH6MLn.mjs} +2 -2
- package/fesm2022/{iss-ctrl-trigger-based-on-json-value-CprcFCWi.mjs.map → iss-ctrl-trigger-based-on-json-value-BwxH6MLn.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-user-picker.field-8Jb1325c.mjs → iss-ctrl-user-picker.field-Bc_yX1v9.mjs} +2 -2
- package/fesm2022/{iss-ctrl-user-picker.field-8Jb1325c.mjs.map → iss-ctrl-user-picker.field-Bc_yX1v9.mjs.map} +1 -1
- package/fesm2022/iss-ctrl.mjs +1 -1
- package/package.json +1 -1
- package/types/iss-ctrl.d.ts +213 -12
- package/upgrade.scss +8 -17
- package/fesm2022/iss-ctrl-iss-ctrl-BN9rcLt2.mjs.map +0 -1
- package/fesm2022/iss-ctrl-iss-ctrl-DOmgkxUv.mjs +0 -8924
- package/fesm2022/iss-ctrl-iss-ctrl-DOmgkxUv.mjs.map +0 -1
- package/fesm2022/iss-ctrl-iss-ctrl-WfIqBEcL.mjs +0 -8913
- package/fesm2022/iss-ctrl-iss-ctrl-WfIqBEcL.mjs.map +0 -1
- package/fesm2022/iss-ctrl-load-event-D70VZuyD.mjs +0 -60
- package/fesm2022/iss-ctrl-load-event-D70VZuyD.mjs.map +0 -1
- package/fesm2022/iss-ctrl-load-event-SlQmVmyf.mjs +0 -60
- package/fesm2022/iss-ctrl-load-event-SlQmVmyf.mjs.map +0 -1
- package/fesm2022/iss-ctrl-load-options-event-CBejHpME.mjs +0 -50
- package/fesm2022/iss-ctrl-load-options-event-ClQPHNBO.mjs.map +0 -1
- package/fesm2022/iss-ctrl-load-options-event-DHmaMAOb.mjs +0 -50
- package/fesm2022/iss-ctrl-load-options-event-DHmaMAOb.mjs.map +0 -1
- package/fesm2022/iss-ctrl-load-value-event-Bu9-rZ6T.mjs +0 -52
- package/fesm2022/iss-ctrl-load-value-event-Bu9-rZ6T.mjs.map +0 -1
- package/fesm2022/iss-ctrl-load-value-event-Cpuy1og1.mjs +0 -52
- package/fesm2022/iss-ctrl-load-value-event-Cpuy1og1.mjs.map +0 -1
- package/fesm2022/iss-ctrl-note.field-IM4x1O3b.mjs +0 -65
- package/fesm2022/iss-ctrl-note.field-IM4x1O3b.mjs.map +0 -1
- package/fesm2022/iss-ctrl-note.field-onDjqI_X.mjs +0 -65
- package/fesm2022/iss-ctrl-note.field-onDjqI_X.mjs.map +0 -1
- package/fesm2022/iss-ctrl-replace-api-keys-CLP4wBYu.mjs +0 -57
- package/fesm2022/iss-ctrl-replace-api-keys-Chwe42Nu.mjs.map +0 -1
- package/fesm2022/iss-ctrl-replace-api-keys-CvhCKvNB.mjs +0 -57
- package/fesm2022/iss-ctrl-replace-api-keys-CvhCKvNB.mjs.map +0 -1
- package/fesm2022/iss-ctrl-set-value-event-C7YYwHZV.mjs +0 -61
- package/fesm2022/iss-ctrl-set-value-event-CrpzRR6X.mjs.map +0 -1
- package/fesm2022/iss-ctrl-set-value-event-DiHESiPT.mjs +0 -61
- package/fesm2022/iss-ctrl-set-value-event-DiHESiPT.mjs.map +0 -1
- package/fesm2022/iss-ctrl-table.field-CDSVakji.mjs +0 -592
- package/fesm2022/iss-ctrl-table.field-CDSVakji.mjs.map +0 -1
- package/fesm2022/iss-ctrl-table.field-DxwfNXNc.mjs +0 -592
- package/fesm2022/iss-ctrl-table.field-DxwfNXNc.mjs.map +0 -1
- package/fesm2022/iss-ctrl-trigger-based-on-json-value-CprcFCWi.mjs +0 -24
- package/fesm2022/iss-ctrl-trigger-based-on-json-value-DS4TR38v.mjs.map +0 -1
- package/fesm2022/iss-ctrl-trigger-based-on-json-value-Dp0EhVLA.mjs +0 -24
- package/fesm2022/iss-ctrl-trigger-based-on-json-value-Dp0EhVLA.mjs.map +0 -1
- package/fesm2022/iss-ctrl-user-picker.field-Mqi37i7D.mjs +0 -225
- package/fesm2022/iss-ctrl-user-picker.field-Mqi37i7D.mjs.map +0 -1
- package/fesm2022/iss-ctrl-user-picker.field-PxT_dZ_O.mjs +0 -225
- package/fesm2022/iss-ctrl-user-picker.field-PxT_dZ_O.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"iss-ctrl-iss-ctrl-DOmgkxUv.mjs","sources":["../../../projects/iss/src/shared/pipes/select-status.pipe.ts","../../../projects/iss/src/components/controls/base/control-base.ts","../../../projects/iss/src/components/controls/checkbox/checkbox.control.ts","../../../projects/iss/src/components/controls/chips/chips.control.ts","../../../projects/iss/src/shared/constants/date-format.const.ts","../../../projects/iss/src/components/controls/date-picker/date-picker.control.ts","../../../projects/iss/src/components/controls/date-range-picker/date-range-picker.control.ts","../../../projects/iss/src/components/controls/time-picker/time-picker.control.ts","../../../projects/iss/src/components/controls/datetime-picker/datetime-picker.control.ts","../../../projects/iss/src/components/shared/hints.component.ts","../../../projects/iss/src/components/controls/file-picker/droppable.ts","../../../projects/iss/src/components/controls/file-picker/file-picker.control.ts","../../../projects/iss/src/components/controls/input/input.control.ts","../../../projects/iss/src/components/controls/mobile/countries.const.ts","../../../projects/iss/src/components/controls/mobile/phone.ts","../../../projects/iss/src/components/controls/mobile/mobile.control.ts","../../../projects/iss/src/components/controls/plate/plate-letters.const.ts","../../../projects/iss/src/components/controls/plate/plate.control.ts","../../../projects/iss/src/components/controls/radio/radio.control.ts","../../../projects/iss/src/components/controls/select/select.control.ts","../../../projects/iss/src/components/controls/slide-toggle/slide-toggle.control.ts","../../../projects/iss/src/components/controls/textarea/textarea.control.ts","../../../projects/iss/src/components/controls/toggle-button/toggle-button.control.ts","../../../projects/iss/src/shared/classes/field-async-validation.ts","../../../projects/iss/src/shared/classes/field-config.ts","../../../projects/iss/src/shared/classes/field-action-config.ts","../../../projects/iss/src/shared/classes/field-event.ts","../../../projects/iss/src/shared/classes/iss-field.ts","../../../projects/iss/src/shared/indexes/validators.index.ts","../../../projects/iss/src/shared/services/form-engine.ts","../../../projects/iss/src/shared/indexes/components.index.ts","../../../projects/iss/src/shared/indexes/services.index.ts","../../../projects/iss/src/shared/indexes/viewers.index.ts","../../../projects/iss/src/shared/services/loader.ts","../../../projects/iss/src/shared/tokens/field.token.ts","../../../projects/iss/src/components/outlet/field-data-injector.ts","../../../projects/iss/src/components/outlet/outlet.ts","../../../projects/iss/src/shared/constants/view-provider.const.ts","../../../projects/iss/src/shared/constants/validation.const.ts","../../../projects/iss/src/shared/tokens/language.token.ts","../../../projects/iss/src/shared/pipes/translate.pipe.ts","../../../projects/iss/src/components/shared/validation-message.component.ts","../../../projects/iss/src/events/triggers/event-trigger.ts","../../../projects/iss/src/events/triggers/event-trigger-manager.ts","../../../projects/iss/src/events/event-handler.ts","../../../projects/iss/src/components/controls/base/field-base.ts","../../../projects/iss/src/components/controls/base/viewer-base.ts","../../../projects/iss/src/components/controls/input/input.viewer.ts","../../../projects/iss/src/components/controls/input/input.field.ts","../../../projects/iss/src/components/controls/textarea/textarea.viewer.ts","../../../projects/iss/src/components/controls/textarea/textarea.field.ts","../../../projects/iss/src/components/controls/chips/chips.viewer.ts","../../../projects/iss/src/components/controls/chips/chips.field.ts","../../../projects/iss/src/components/controls/radio/radio.viewer.ts","../../../projects/iss/src/components/controls/radio/radio.field.ts","../../../projects/iss/src/components/controls/select/select.viewer.ts","../../../projects/iss/src/components/controls/select/select.field.ts","../../../projects/iss/src/components/controls/mobile/mobile.viewer.ts","../../../projects/iss/src/components/controls/mobile/mobile.field.ts","../../../projects/iss/src/components/controls/checkbox/checkbox.viewer.ts","../../../projects/iss/src/components/controls/checkbox/checkbox.field.ts","../../../projects/iss/src/components/controls/toggle-button/toggle-button.viewer.ts","../../../projects/iss/src/components/controls/toggle-button/toggle-button.field.ts","../../../projects/iss/src/components/controls/slide-toggle/slide-toggle.viewer.ts","../../../projects/iss/src/components/controls/slide-toggle/slide-toggle.field.ts","../../../projects/iss/src/components/controls/plate/plate.viewer.ts","../../../projects/iss/src/components/controls/plate/plate.field.ts","../../../projects/iss/src/components/controls/file-picker/attachment.viewer.ts","../../../projects/iss/src/shared/tokens/attachment.token.ts","../../../projects/iss/src/shared/constants/placeholder-regex.const.ts","../../../projects/iss/src/shared/utilities/replace-placeholder.util.ts","../../../projects/iss/src/components/controls/file-picker/file-handler.ts","../../../projects/iss/src/components/controls/file-picker/file-picker.field.ts","../../../projects/iss/src/components/controls/time-picker/time-picker.viewer.ts","../../../projects/iss/src/components/controls/time-picker/time-picker.field.ts","../../../projects/iss/src/components/controls/date-picker/date-picker.viewer.ts","../../../projects/iss/src/components/controls/date-picker/date-picker.field.ts","../../../projects/iss/src/components/controls/datetime-picker/datetime-picker.viewer.ts","../../../projects/iss/src/components/controls/datetime-picker/datetime-picker.field.ts","../../../projects/iss/src/components/controls/date-range-picker/date-range-picker.viewer.ts","../../../projects/iss/src/components/controls/date-range-picker/date-range-picker.field.ts","../../../projects/iss/src/shared/tokens/host.token.ts","../../../projects/iss/src/shared/tokens/user-search-api.token.ts","../../../projects/iss/src/shared/pipes/arabic-number.pipe.ts","../../../projects/iss/src/components/controls/plate/plate-letter.pipe.ts","../../../projects/iss/src/components/controls/user-picker/employee.ts","../../../projects/iss/src/shared/utilities/array-from.util.ts","../../../projects/iss/src/components/controls/file-picker/format-file-size.util.ts","../../../projects/iss/src/shared/utilities/get-property-by-path.util.ts","../../../projects/iss/src/validators/core.validator.ts","../../../projects/iss/src/validators/file.validator.ts","../../../projects/iss/src/validators/time.validator.ts","../../../projects/iss/src/public-api.ts","../../../projects/iss/src/iss-ctrl.ts"],"sourcesContent":["import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { Option } from \"../interfaces/option\";\r\n\r\n@Pipe({name: \"selectStatus\"})\r\nexport class SelectStatusPipe implements PipeTransform {\r\n transform(option: Option, ...args: unknown[]): boolean {\r\n const selectedOptions = args[0] as Map<string, Option>;\r\n return selectedOptions.has(option.value);\r\n }\r\n}\r\n","import { afterEveryRender, Component, ElementRef, inject, input, InputSignal, output, OutputEmitterRef, signal, WritableSignal } from \"@angular/core\";\nimport { AbstractControl, ControlValueAccessor, FormControl, ValidationErrors, Validator } from \"@angular/forms\";\nimport { Hint } from \"../../../shared/interfaces/hint\";\n\n/**\n * Base class for every `iss-ctrl-*` control.\n *\n * Controls are the presentational layer: they know nothing about {@link IssField} and are\n * driven purely by bindings, so they can be used standalone inside any reactive form.\n * Every control below inherits the properties declared here and adds its own on top.\n *\n * ### Inherited inputs\n * | Property | Type | Default | Description |\n * | --- | --- | --- | --- |\n * | `formControlName` | `string` | `\"\"` | Name of the control in the surrounding `FormGroup`. |\n * | `placeholder` | `string` | `\"\"` | Placeholder text shown while the field is empty. |\n * | `readonly` | `boolean` | `false` | Renders the value but blocks every interaction. |\n * | `multiple` | `boolean \\| undefined` | `false` | Allows more than one value, where the control supports it. |\n * | `min` | `number \\| string \\| null` | `null` | Lower bound (number or date/time string). |\n * | `max` | `number \\| string \\| null` | `null` | Upper bound (number or date/time string). |\n * | `minLength` | `number \\| null` | `null` | Minimum number of characters. |\n * | `maxLength` | `number \\| null` | `null` | Maximum number of characters. |\n * | `hints` | `Hint[]` | `[]` | Helper messages rendered under the field. |\n * | `className` | `string \\| null` | `null` | Extra CSS classes for the host. |\n *\n * ### Inherited outputs\n * | Event | Payload | Description |\n * | --- | --- | --- |\n * | `(onChange)` | `any` | Fires after every committed value change. |\n *\n * ### Not inputs\n * `disabled` and `touched` are signals owned by the control. Disable a control through the\n * forms API (`ctrl.disable()` or a `disabled` field config), never with a template binding.\n *\n * ### Content projection\n * Controls that render a `mat-form-field` project `<label>` into the floating label.\n * The label space collapses automatically when no `<label>` is supplied.\n *\n * @example\n * ```html\n * <iss-ctrl-input formControlName=\"email\" [readonly]=\"false\" (onChange)=\"save($event)\">\n * <label>Email</label>\n * </iss-ctrl-input>\n * ```\n */\n@Component({ template: `` })\nexport class ControlBase implements ControlValueAccessor, Validator {\n /**\n * Name of this control inside the surrounding `FormGroup`.\n */\n formControlName: InputSignal<string> = input<string>(\"\");\n /**\n * Lower bound forwarded to the underlying input — a number, or a date/time string.\n */\n min: InputSignal<number | string | null> = input<number | string | null>(null);\n /**\n * Upper bound forwarded to the underlying input — a number, or a date/time string.\n */\n max: InputSignal<number | string | null> = input<number | string | null>(null);\n /**\n * Minimum number of characters accepted by the underlying input.\n */\n minLength: InputSignal<number | null> = input<number | null>(null);\n /**\n * Maximum number of characters accepted by the underlying input.\n */\n maxLength: InputSignal<number | null> = input<number | null>(null);\n /**\n * Disabled state. **Not an input** — it is set by the forms API through\n * {@link ControlBase.setDisabledState}. Disable via `ctrl.disable()` or the field config.\n */\n disabled: WritableSignal<boolean> = signal(false);\n /**\n * Renders the current value but blocks every user interaction.\n */\n readonly: InputSignal<boolean> = input(false);\n /**\n * Allows selecting/entering more than one value, on controls that support it.\n */\n multiple: InputSignal<boolean | undefined> = input<boolean | undefined>(false);\n /**\n * Placeholder text shown while the control has no value.\n */\n placeholder: InputSignal<string> = input<string>(\"\");\n /**\n * Helper messages rendered beneath the field. See {@link Hint}.\n */\n hints: InputSignal<Hint[]> = input<Hint[]>([]);\n /**\n * Extra CSS class names applied to the control host.\n */\n className: InputSignal<string | null> = input<string | null>(null);\n /**\n * Whether the user has interacted with the control. Owned by the control, not an input.\n */\n touched: WritableSignal<boolean> = signal(false);\n /**\n * Emits the committed value after every change.\n */\n onChange: OutputEmitterRef<any> = output<any>();\n protected ctrl: FormControl = new FormControl(null);\n // mat-form-field reserves the floating-label space as soon as a <mat-label> exists, so an\n // unused `<ng-content select=\"label\">` leaves an empty gap above the field. Templates guard\n // their <mat-label> with this flag, which is re-read after every render: label text often\n // arrives after the first one (async config, translations, a field switching to edit mode).\n protected hasLabel: WritableSignal<boolean> = signal(true);\n private hostRef: ElementRef<HTMLElement> = inject(ElementRef);\n // The projected <label> belongs to the consumer's view, so it keeps being updated even while\n // the guarded <mat-label> is torn down and the element is detached from the DOM. Holding on\n // to it is what lets a label that shows up later be picked up again.\n private labelRef: HTMLElement | null = null;\n\n constructor() {\n afterEveryRender({ read: () => this.syncHasLabel() });\n }\n\n registerOnChange(fn: () => void): void {\n this.onPropagateValue = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n if (isDisabled) {\n this.ctrl.disable();\n } else {\n this.ctrl.enable();\n }\n }\n\n writeValue(value: string | FormData | Date | null): void {\n this.ctrl.setValue(value, { emitEvent: false });\n }\n\n markAsTouched() {\n this.touched.set(true);\n this.onTouch();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this.ctrl.errors;\n }\n\n private syncHasLabel(): void {\n const hasLabel: boolean = this.hasProjectedLabel();\n if (hasLabel !== this.hasLabel()) {\n this.hasLabel.set(hasLabel);\n }\n }\n\n private hasProjectedLabel(): boolean {\n this.labelRef = this.labelRef ?? this.hostRef.nativeElement.querySelector(\"mat-label label\");\n return !!this.labelRef && !!(this.labelRef.textContent || \"\").trim();\n }\n\n protected onTouch: () => void = () => { };\n\n protected onPropagateValue: (_: any) => void = (_: any) => { };\n\n protected emitValue(value?: any) {\n let emissionValue = this.ctrl.getRawValue();\n if (value !== undefined) {\n emissionValue = value;\n }\n this.onPropagateValue(emissionValue);\n this.emitOnChangeEvent(emissionValue);\n }\n\n protected propagateValue(value?: any) {\n let emissionValue = this.ctrl.getRawValue();\n if (value !== undefined) {\n emissionValue = value;\n }\n this.onPropagateValue(emissionValue);\n }\n\n protected emitOnChangeEvent($event?: any) {\n let emissionValue = this.ctrl.getRawValue();\n if ($event !== undefined) {\n emissionValue = $event;\n }\n this.onChange.emit(emissionValue);\n }\n}\n","import { Component, input, InputSignal, signal, WritableSignal } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { Option } from \"../../../shared/interfaces/option\";\r\nimport { SelectStatusPipe } from \"../../../shared/pipes/select-status.pipe\";\r\nimport { ControlBase } from \"../base/control-base\";\r\n\r\n/**\r\n * `<iss-ctrl-checkbox>` — a list of checkboxes over a fixed set of options.\r\n *\r\n * The form value is the comma separated list of selected option values, while `(onChange)`\r\n * emits the resolved `Option[]` (or `null` when nothing is selected).\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-checkbox formControlName=\"days\" [options]=\"days\" (onChange)=\"pick($event)\"/>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * | Property | Type | Default | Description |\r\n * | --- | --- | --- | --- |\r\n * | `options` | `Option[]` | **required** | The selectable choices. |\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)`\r\n *\r\n * Does not project a label — the field label is rendered by the wrapping `iss-field-*`.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-checkbox\",\r\n imports: [ReactiveFormsModule, MatCheckboxModule, SelectStatusPipe],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: CheckboxControl, multi: true },\r\n ],\r\n template: `\r\n <ul class=\"list-unstyled\">\r\n @for (option of options(); track option.value) {\r\n <li class=\"mb-2\">\r\n <mat-checkbox [checked]=\"option | selectStatus: selectedOptions()\" [disabled]=\"disabled() || readonly()\" (change)=\"onCheckboxChange($event.checked, option.value)\">\r\n {{ option.label }}\r\n </mat-checkbox>\r\n </li>\r\n }\r\n </ul>\r\n `\r\n})\r\nexport class CheckboxControl extends ControlBase {\r\n /**\r\n * Selectable choices, each a `{ value, label }` pair. Required.\r\n */\r\n options: InputSignal<Option[]> = input.required();\r\n /**\r\n * Currently checked options, keyed by value. Internal state, not an input.\r\n */\r\n selectedOptions: WritableSignal<Map<string, Option>> = signal(new Map<string, Option>());\r\n\r\n override writeValue(value: string | null) {\r\n this.#reset();\r\n if (value === null || value === undefined) {\r\n return;\r\n }\r\n const values: string[] = value.split(\",\").map((val: string) => val.trim());\r\n const selectedOptions: Option[] = this.options().filter((option: Option) => values.includes(option.value));\r\n this.addToSelectedOptionsMap(this.#selectedOptionsMapFactory(selectedOptions));\r\n this.ctrl.setValue(selectedOptions);\r\n }\r\n\r\n addToSelectedOptionsMap(option: Map<string, Option>) {\r\n if (option) {\r\n this.selectedOptions.set(option);\r\n }\r\n }\r\n\r\n onCheckboxChange(checked: boolean, value: string) {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n this.markAsTouched();\r\n const selectedOption = this.options().find((option: Option) => option.value === value);\r\n\r\n if (!selectedOption) {\r\n return;\r\n }\r\n\r\n const options: Map<string, Option> = new Map(this.selectedOptions());\r\n if (checked) {\r\n options.set(selectedOption.value, selectedOption);\r\n } else {\r\n options.delete(selectedOption.value);\r\n }\r\n this.getEmissionValue(options);\r\n }\r\n\r\n stringifySelectedOptions(): string | null {\r\n if (!this.selectedOptions()?.size) {\r\n return null;\r\n }\r\n return Array.from(this.selectedOptions(), ([value]) => value).join();\r\n }\r\n\r\n getEmissionValue(options: any) {\r\n this.addToSelectedOptionsMap(options);\r\n // the form keeps the stringified values, while (onChange) consumers get the resolved options\r\n this.propagateValue(this.stringifySelectedOptions());\r\n this.emitOnChangeEvent(this.#convertSelectedMapToArray());\r\n }\r\n\r\n #convertSelectedMapToArray(): Option[] | null {\r\n const selectedOptions: Option[] = Array.from(this.selectedOptions().values());\r\n return selectedOptions.length ? selectedOptions : null;\r\n }\r\n\r\n #selectedOptionsMapFactory(selectedOptions: Option[]) {\r\n const selectedOptionsMap: Map<string, Option> = new Map();\r\n for (const option of selectedOptions) {\r\n selectedOptionsMap.set(option.value, option);\r\n }\r\n return selectedOptionsMap;\r\n }\r\n\r\n #reset() {\r\n this.selectedOptions.set(new Map<string, Option>());\r\n this.ctrl.setValue(null);\r\n }\r\n}\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, signal, WritableSignal } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatChipGrid, MatChipInput, MatChipInputEvent, MatChipRemove, MatChipRow } from \"@angular/material/chips\";\r\nimport { MatFormField } from \"@angular/material/form-field\";\r\nimport { MatInput, MatInputModule } from \"@angular/material/input\";\r\nimport { ControlBase } from \"../base/control-base\";\r\n\r\n/**\r\n * `<iss-ctrl-chips>` — free text entered as removable chips.\r\n *\r\n * Each `Enter` turns the typed text into a chip. The form value is the comma separated list\r\n * of chip labels.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-chips formControlName=\"tags\" placeholder=\"Add a tag\">\r\n * <label>Tags</label>\r\n * </iss-ctrl-chips>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * None — the control is configured entirely through the inherited properties.\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)` · `placeholder`\r\n *\r\n * Projects `<label>` into the floating label; omit it to render the control without one.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-chips\",\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n MatFormField,\r\n MatChipGrid,\r\n MatChipRow,\r\n ReactiveFormsModule,\r\n MatChipInput,\r\n MatInput,\r\n MatChipRemove,\r\n MatInputModule,\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: ChipsControl, multi: true }\r\n ],\r\n template: `\r\n <mat-form-field floatLabel=\"auto\" class=\"\">\r\n @if (hasLabel()) {\r\n <mat-label class=\"fs-16 fc-black\">\r\n <ng-content select=\"label\"></ng-content>\r\n </mat-label>\r\n }\r\n <input\r\n matInput\r\n [placeholder]=\"placeholder()\"\r\n [matChipInputFor]=\"chipGrid\"\r\n [disabled]=\"disabled()\"\r\n [readonly]=\"readonly()\"\r\n (matChipInputTokenEnd)=\"add($event)\"\r\n />\r\n </mat-form-field>\r\n <mat-chip-grid #chipGrid>\r\n @for (keyword of keywords(); track keyword) {\r\n <mat-chip-row (removed)=\"remove(keyword)\">\r\n {{ keyword }}\r\n <button matChipRemove [disabled]=\"disabled() || readonly()\">\r\n <ds-icon icon=\"trash\" class=\"fc-red\"></ds-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n `\r\n})\r\nexport class ChipsControl extends ControlBase {\r\n /**\r\n * The chips currently rendered. Internal state, not an input.\r\n */\r\n readonly keywords: WritableSignal<string[]> = signal([]);\r\n\r\n override writeValue(value: string | null) {\r\n if (typeof value === \"string\") {\r\n this.keywords.set(this.#parseValues(value));\r\n }\r\n if (value === undefined || value === null) {\r\n this.keywords.set([]);\r\n }\r\n }\r\n\r\n remove(keyword: string) {\r\n if (this.disabled() || this.readonly()) {\r\n return;\r\n }\r\n this.markAsTouched();\r\n this.keywords.update((keywords: string[]): string[] => {\r\n const index: number = keywords.indexOf(keyword);\r\n if (index < 0) {\r\n return keywords;\r\n }\r\n keywords.splice(index, 1);\r\n return [...keywords];\r\n });\r\n this.emitValue(this.#stringifyValues());\r\n }\r\n\r\n add(event: MatChipInputEvent): void {\r\n if (this.disabled() || this.readonly()) {\r\n return;\r\n }\r\n this.markAsTouched();\r\n const value: string = (event.value || \"\").trim();\r\n if (value) {\r\n this.keywords.update((keywords: string[]): string[] => [...keywords, value]);\r\n }\r\n event.chipInput!.clear();\r\n this.emitValue(this.#stringifyValues());\r\n }\r\n\r\n #stringifyValues() {\r\n return this.keywords().map((s: string) => s.trim()).join();\r\n }\r\n\r\n #parseValues(values: string) {\r\n return values.split(\",\").map((c: string) => c.trim());\r\n }\r\n}\r\n","import { MatDateFormats } from \"@angular/material/core\";\r\n\r\nexport const DATE_FORMAT_ADAPTER: MatDateFormats = {\r\n parse: {\r\n dateInput: \"dd/MM/yyyy\",\r\n timeInput: \"hh:mm:ss aa\",\r\n },\r\n display: {\r\n dateInput: \"dd/MM/yyyy\",\r\n monthYearLabel: \"MMMM yyyy\",\r\n dateA11yLabel: \"dd/MM/yyyyTHH:mm\",\r\n monthYearA11yLabel: \"MMMM yyyy\",\r\n timeInput: \"hh:mm aa\",\r\n timeOptionLabel: \"hh:mm aa\",\r\n },\r\n};\r\n\r\nexport const DATETIME_FORMAT = \"dd/MM/yyyy hh:mm a\";\r\n","import { DatePipe } from \"@angular/common\";\r\nimport { Component, input, InputSignal } from \"@angular/core\";\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validator } from \"@angular/forms\";\r\nimport { provideDateFnsAdapter } from \"@angular/material-date-fns-adapter\";\r\nimport { MAT_DATE_LOCALE } from \"@angular/material/core\";\r\nimport { MatDatepickerInputEvent, MatDatepickerModule } from \"@angular/material/datepicker\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { format } from \"date-fns\";\r\nimport { enGB } from \"date-fns/locale\";\r\nimport { DATE_FORMAT_ADAPTER } from \"../../../shared/constants/date-format.const\";\r\nimport { ControlBase } from \"../base/control-base\";\r\n\r\n/**\r\n * `<iss-ctrl-date-picker>` — single date selection through a Material calendar.\r\n *\r\n * The input itself is read-only; clicking it opens the calendar. The emitted value is a\r\n * `yyyy-MM-dd` string, and a clear button appears once a date is picked.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-date-picker formControlName=\"startsOn\" [minDate]=\"today\" [disabledDays]=\"[5, 6]\">\r\n * <label>Start date</label>\r\n * </iss-ctrl-date-picker>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * | Property | Type | Default | Description |\r\n * | --- | --- | --- | --- |\r\n * | `minDate` | `Date \\| null` | `null` | Earliest selectable date. |\r\n * | `maxDate` | `Date \\| null` | `null` | Latest selectable date. |\r\n * | `disabledDays` | `number[]` | `[]` | Week days to block, `0` = Sunday … `6` = Saturday. |\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)`\r\n *\r\n * Projects `<label>` into the floating label; omit it to render the control without one.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-date-picker\",\r\n imports: [MatFormFieldModule, MatInputModule, MatDatepickerModule, MatIconModule, ReactiveFormsModule],\r\n providers: [\r\n DatePipe,\r\n provideDateFnsAdapter(DATE_FORMAT_ADAPTER),\r\n { provide: MAT_DATE_LOCALE, useValue: enGB },\r\n { provide: NG_VALUE_ACCESSOR, useExisting: DatePickerControl, multi: true },\r\n { provide: NG_VALIDATORS, useExisting: DatePickerControl, multi: true },\r\n ],\r\n template: `\r\n <mat-form-field floatLabel=\"auto\" class=\"\">\r\n @if (hasLabel()) {\r\n <mat-label class=\"fs-16 fc-black\">\r\n <ng-content select=\"label\"></ng-content>\r\n </mat-label>\r\n }\r\n <input\r\n class=\"cursor-pointer\"\r\n matInput\r\n readonly\r\n [matDatepicker]=\"picker\"\r\n (click)=\"openPicker(picker)\"\r\n [formControl]=\"ctrl\"\r\n [readonly]=\"readonly()\"\r\n [min]=\"minDate()\"\r\n [max]=\"maxDate()\"\r\n [matDatepickerFilter]=\"calendarDaysFilter\"\r\n (dateChange)=\"emit($event)\"\r\n />\r\n @if (ctrl.getRawValue()) {\r\n <mat-icon matSuffix style=\"cursor: pointer\" (click)=\"clear($event)\">close</mat-icon>\r\n }\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"readonly()\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n\r\n </mat-form-field>\r\n `,\r\n styles: `\r\n ::ng-deep {\r\n tr:has(> .mat-calendar-body-label[colspan=\"7\"]) {\r\n opacity: 0 !important;\r\n display: none;\r\n }\r\n\r\n .mat-datepicker-content .mat-calendar {\r\n height: unset !important;\r\n }\r\n }\r\n `\r\n})\r\nexport class DatePickerControl extends ControlBase implements Validator {\r\n /**\r\n * Week days that cannot be selected — `0` is Sunday through `6` for Saturday.\r\n */\r\n disabledDays: InputSignal<number[]> = input<number[]>([]);\r\n /**\r\n * Earliest selectable date.\r\n */\r\n minDate: InputSignal<Date | null> = input<Date | null>(null);\r\n /**\r\n * Latest selectable date.\r\n */\r\n maxDate: InputSignal<Date | null> = input<Date | null>(null);\r\n\r\n clear(event: MouseEvent) {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n event.stopImmediatePropagation();\r\n this.ctrl.setValue(null);\r\n\r\n this.propagateValue(null);\r\n this.emitOnChangeEvent(null);\r\n }\r\n\r\n protected calendarDaysFilter = (d: Date | null): boolean => {\r\n const day: number = (d || new Date()).getDay();\r\n return !(this.disabledDays().includes(day));\r\n };\r\n\r\n protected emit($event: MatDatepickerInputEvent<any>) {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n this.markAsTouched();\r\n const selectedDateString = format($event.value, \"yyyy-MM-dd\");\r\n this.propagateValue(selectedDateString);\r\n this.emitOnChangeEvent(selectedDateString);\r\n }\r\n\r\n protected openPicker(picker: any): void {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n picker.open();\r\n this.markAsTouched();\r\n }\r\n}\r\n","import { Component, input, InputSignal, OnDestroy, OnInit, output, OutputEmitterRef } from \"@angular/core\";\r\nimport { FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { provideDateFnsAdapter } from \"@angular/material-date-fns-adapter\";\r\nimport { MAT_DATE_LOCALE } from \"@angular/material/core\";\r\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIcon } from \"@angular/material/icon\";\r\nimport { format } from \"date-fns\";\r\nimport { enGB } from \"date-fns/locale\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { DATE_FORMAT_ADAPTER } from \"../../../shared/constants/date-format.const\";\r\nimport { ControlBase } from \"../base/control-base\";\r\nimport { DateRangeEmission } from \"./date-range-emission\";\r\n\r\n/**\r\n * `<iss-ctrl-date-range-picker>` — a start/end date range in one field.\r\n *\r\n * A half-filled range is not a value: clearing either endpoint clears the form value and\r\n * emits `null`. The form value is a `yyyy-MM-dd` string pair; `(onDateRangeObjectChange)`\r\n * emits the same range as a {@link DateRangeEmission} object.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-date-range-picker formControlName=\"period\" (onDateRangeObjectChange)=\"apply($event)\">\r\n * <label>Period</label>\r\n * </iss-ctrl-date-range-picker>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * | Property | Type | Default | Description |\r\n * | --- | --- | --- | --- |\r\n * | `minDate` | `Date \\| null` | `null` | Earliest selectable date. |\r\n * | `maxDate` | `Date \\| null` | `null` | Latest selectable date. |\r\n * | `disabledDays` | `number[]` | `[]` | Week days to block, `0` = Sunday … `6` = Saturday. |\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)`\r\n *\r\n * ### Outputs\r\n * - `(onDateRangeObjectChange)` — `DateRangeEmission | null`, the range as an object.\r\n *\r\n * Projects `<label>` into the floating label; omit it to render the control without one.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-date-range-picker\",\r\n imports: [\r\n MatFormFieldModule,\r\n MatDatepickerModule,\r\n ReactiveFormsModule,\r\n MatIcon,\r\n ],\r\n providers: [\r\n provideDateFnsAdapter(DATE_FORMAT_ADAPTER),\r\n { provide: MAT_DATE_LOCALE, useValue: enGB },\r\n { provide: NG_VALUE_ACCESSOR, useExisting: DateRangePickerControl, multi: true },\r\n ],\r\n template: `\r\n <mat-form-field floatLabel=\"auto\" class=\"\">\r\n\r\n @if (hasLabel()) {\r\n <mat-label class=\"fs-16 fc-black\">\r\n <ng-content select=\"label\"></ng-content>\r\n </mat-label>\r\n }\r\n <mat-date-range-input\r\n [formGroup]=\"range\"\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDate()\"\r\n [max]=\"maxDate()\"\r\n [dateFilter]=\"calendarDaysFilter\"\r\n >\r\n <input\r\n matStartDate\r\n formControlName=\"start\"\r\n [readonly]=\"readonly()\"\r\n placeholder=\"dd/mm/yyyy\"\r\n (click)=\"openPicker(picker)\"\r\n />\r\n <input\r\n matEndDate\r\n formControlName=\"end\"\r\n [readonly]=\"readonly()\"\r\n placeholder=\"dd/mm/yyyy\"\r\n (click)=\"openPicker(picker)\"\r\n />\r\n </mat-date-range-input>\r\n @if (range.getRawValue().start || range.getRawValue().end) {\r\n <mat-icon matSuffix style=\"cursor: pointer\" (click)=\"clear($event)\">close</mat-icon>\r\n }\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\" [disabled]=\"readonly()\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n\r\n </mat-form-field>\r\n `\r\n})\r\nexport class DateRangePickerControl extends ControlBase implements OnInit, OnDestroy {\r\n /**\r\n * Week days that cannot be selected — `0` is Sunday through `6` for Saturday.\r\n */\r\n disabledDays: InputSignal<number[]> = input<number[]>([]);\r\n /**\r\n * Earliest selectable date.\r\n */\r\n minDate: InputSignal<Date | null> = input<Date | null>(null);\r\n /**\r\n * Latest selectable date.\r\n */\r\n maxDate: InputSignal<Date | null> = input<Date | null>(null);\r\n /**\r\n * Emits the selected range as an object, or `null` while the range is incomplete.\r\n */\r\n onDateRangeObjectChange: OutputEmitterRef<DateRangeEmission | null> = output();\r\n /**\r\n * The `start`/`end` form group backing the range input. Internal state.\r\n */\r\n readonly range: FormGroup = new FormGroup({\r\n start: new FormControl(null),\r\n end: new FormControl(null),\r\n });\r\n #sub: Subscription = new Subscription();\r\n\r\n ngOnInit(): void {\r\n this.#sub.add(\r\n this.range.valueChanges.subscribe((values) => {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n if (!values.start || !values.end) {\r\n // an incomplete range is not a value, clearing one endpoint must clear the form value\r\n this.emitValue(null);\r\n this.onDateRangeObjectChange.emit(null);\r\n return;\r\n }\r\n this.emitValue(this.#getEmissionValue(values.start, values.end));\r\n this.onDateRangeObjectChange.emit(this.#getEmissionObject(values.start, values.end));\r\n })\r\n );\r\n }\r\n\r\n override setDisabledState(isDisabled: boolean): void {\r\n super.setDisabledState(isDisabled);\r\n // the template binds `range`, disabling ctrl alone leaves the inputs live\r\n if (isDisabled) {\r\n this.range.disable({ emitEvent: false });\r\n } else {\r\n this.range.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n clear(event: MouseEvent) {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n event.stopImmediatePropagation();\r\n this.ctrl.setValue(null);\r\n this.range.setValue({\r\n start: null,\r\n end: null,\r\n });\r\n this.propagateValue(null);\r\n this.emitOnChangeEvent(null);\r\n }\r\n\r\n protected openPicker(picker: any): void {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n picker.open();\r\n this.markAsTouched();\r\n }\r\n\r\n override writeValue(value: string | FormData | null) {\r\n if (typeof value !== \"string\" || !value) {\r\n this.ctrl.setValue(null, { emitEvent: false });\r\n this.range.reset({ start: null, end: null }, { emitEvent: false });\r\n return;\r\n }\r\n\r\n const valArr: string[] = value.split(\",\");\r\n const valObj = {\r\n start: valArr[0] ?? null,\r\n end: valArr[1] ?? null,\r\n };\r\n this.range.patchValue(valObj, { emitEvent: false });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#sub.unsubscribe();\r\n }\r\n\r\n protected calendarDaysFilter = (d: Date | null): boolean => {\r\n const day: number = (d || new Date()).getDay();\r\n return !(this.disabledDays().includes(day));\r\n };\r\n\r\n #getDuration(startDate: Date, endDate: Date) {\r\n const start: number = new Date(startDate).getTime();\r\n const end: number = new Date(endDate).getTime();\r\n return Math.ceil((end - start) / (1000 * 60 * 60 * 24) + 1);\r\n }\r\n\r\n #getFormatedDate(date: Date) {\r\n return format(date, \"yyyy-MM-dd'T'HH:mm:ss\");\r\n }\r\n\r\n #getFormatedEndDate(endDate: Date) {\r\n const inputDate: Date = new Date(new Date(endDate).setHours(23, 59, 59));\r\n return this.#getFormatedDate(inputDate);\r\n }\r\n\r\n #getEmissionValue(start: Date, end: Date): string {\r\n const formatedStart: string = this.#getFormatedDate(start);\r\n const formatedEnd: string = this.#getFormatedEndDate(end);\r\n return `${formatedStart},${formatedEnd}`;\r\n }\r\n\r\n #getEmissionObject(start: Date, end: Date): DateRangeEmission {\r\n return {\r\n duration: this.#getDuration(start, end),\r\n start: this.#getFormatedDate(start),\r\n end: this.#getFormatedEndDate(end)\r\n };\r\n }\r\n}\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, input, InputSignal } from \"@angular/core\";\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { provideNativeDateAdapter } from \"@angular/material/core\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIcon } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatTimepickerModule } from \"@angular/material/timepicker\";\r\nimport { format } from \"date-fns\";\r\nimport { ControlBase } from \"../base/control-base\";\r\n\r\n/**\r\n * `<iss-ctrl-time-picker>` — time of day, picked from a list generated at a fixed interval.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-time-picker formControlName=\"startsAt\" interval=\"15min\" minTime=\"08:00\" maxTime=\"17:00\">\r\n * <label>Starts at</label>\r\n * </iss-ctrl-time-picker>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * | Property | Type | Default | Description |\r\n * | --- | --- | --- | --- |\r\n * | `interval` | `string` | `\"30min\"` | Step between the offered times. |\r\n * | `minTime` | `string \\| null` | `null` | Earliest offered time, `HH:mm`. |\r\n * | `maxTime` | `string \\| null` | `null` | Latest offered time, `HH:mm`. |\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)`\r\n *\r\n * Projects `<label>` into the floating label; omit it to render the control without one.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-time-picker\",\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n MatFormFieldModule, MatInputModule, MatTimepickerModule, ReactiveFormsModule, MatIcon,\r\n ],\r\n providers: [\r\n provideNativeDateAdapter(),\r\n { provide: NG_VALUE_ACCESSOR, useExisting: TimePickerControl, multi: true },\r\n { provide: NG_VALIDATORS, useExisting: TimePickerControl, multi: true },\r\n ],\r\n template: `\r\n <mat-form-field floatLabel=\"auto\" class=\"\">\r\n @if (hasLabel()) {\r\n <mat-label class=\"fs-16 fc-black\">\r\n <ng-content select=\"label\"></ng-content>\r\n </mat-label>\r\n }\r\n <input\r\n matInput\r\n [formControl]=\"ctrl\"\r\n [matTimepicker]=\"picker\"\r\n [matTimepickerMin]=\"minTime()\"\r\n [matTimepickerMax]=\"maxTime()\"\r\n [readonly]=\"readonly()\"\r\n readonly\r\n />\r\n @if (ctrl.getRawValue()) {\r\n <mat-icon matSuffix style=\"cursor: pointer\" (click)=\"clear($event)\">close</mat-icon>\r\n }\r\n <mat-timepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"readonly()\"/>\r\n <mat-timepicker (selected)=\"emit($event)\" [interval]=\"interval()\" #picker/>\r\n\r\n </mat-form-field>\r\n `,\r\n})\r\nexport class TimePickerControl extends ControlBase {\r\n /**\r\n * Step between the offered times, for example `\"15min\"` or `\"30min\"`.\r\n */\r\n interval: InputSignal<string> = input(\"30min\");\r\n /**\r\n * Earliest offered time of day, as `HH:mm`.\r\n */\r\n minTime: InputSignal<string | null> = input<string | null>(null);\r\n /**\r\n * Latest offered time of day, as `HH:mm`.\r\n */\r\n maxTime: InputSignal<string | null> = input<string | null>(null);\r\n\r\n emit(evt: any) {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n this.propagateValue(this.#stringifyTime(evt.value));\r\n this.emitOnChangeEvent(this.#stringifyTime(evt.value));\r\n }\r\n\r\n clear(event: MouseEvent) {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n event.stopImmediatePropagation();\r\n this.ctrl.setValue(null);\r\n\r\n this.propagateValue(null);\r\n this.emitOnChangeEvent(null);\r\n }\r\n\r\n override writeValue(value: any) {\r\n if (!value) {\r\n this.ctrl.setValue(null, { emitEvent: false });\r\n return;\r\n }\r\n\r\n const parts: string[] = String(value).split(\":\");\r\n const d = new Date();\r\n d.setHours(Number(parts[0]));\r\n d.setMinutes(Number(parts[1]));\r\n d.setSeconds(Number(parts[2] ?? \"00\"));\r\n this.ctrl.setValue(d, { emitEvent: false });\r\n }\r\n\r\n #stringifyTime(value: any) {\r\n let formatedTime;\r\n try {\r\n formatedTime = format(new Date(value), \"HH:mm:ss\");\r\n } catch (e) {\r\n formatedTime = value;\r\n }\r\n\r\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\r\n return formatedTime;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { Component, input, InputSignal } from \"@angular/core\";\r\nimport { FormControl, FormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatTimepickerModule } from \"@angular/material/timepicker\";\r\nimport { format } from \"date-fns\";\r\nimport { ControlBase } from \"../base/control-base\";\r\nimport { DatePickerControl } from \"../date-picker/date-picker.control\";\r\nimport { TimePickerControl } from \"../time-picker/time-picker.control\";\r\n\r\n/**\r\n * `<iss-ctrl-datetime-picker>` — a date and a time in a single field.\r\n *\r\n * Combines the calendar of the date picker with the time list of the time picker; both parts\r\n * must be set before a value is emitted.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-datetime-picker formControlName=\"scheduledAt\" [minDate]=\"today\" minTime=\"08:00\" maxTime=\"17:00\">\r\n * <label>Scheduled at</label>\r\n * </iss-ctrl-datetime-picker>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * | Property | Type | Default | Description |\r\n * | --- | --- | --- | --- |\r\n * | `minDate` | `Date \\| null` | `null` | Earliest selectable date. |\r\n * | `maxDate` | `Date \\| null` | `null` | Latest selectable date. |\r\n * | `minTime` | `string \\| null` | `null` | Earliest selectable time, `HH:mm`. |\r\n * | `maxTime` | `string \\| null` | `null` | Latest selectable time, `HH:mm`. |\r\n * | `disabledDays` | `number[]` | `[]` | Week days to block, `0` = Sunday … `6` = Saturday. |\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)`\r\n *\r\n * Projects `<label>` into the floating label; omit it to render the control without one.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-datetime-picker\",\r\n imports: [\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatTimepickerModule,\r\n MatDatepickerModule,\r\n ReactiveFormsModule,\r\n DatePickerControl,\r\n TimePickerControl,\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: DatetimePickerControl, multi: true },\r\n { provide: NG_VALIDATORS, useExisting: DatetimePickerControl, multi: true },\r\n ],\r\n template: `\r\n <form [formGroup]=\"datetimeForm\" class=\"d-flex flex-row gap-1\">\r\n <iss-ctrl-date-picker (focusout)=\"markAsTouched()\" [disabledDays]=\"disabledDays()\" [maxDate]=\"maxDate()\" [minDate]=\"minDate()\" [readonly]=\"readonly()\" formControlName=\"date\" (onChange)=\"emit()\">\r\n <label>\r\n <ng-content select=\"label\"></ng-content>\r\n </label>\r\n </iss-ctrl-date-picker>\r\n <iss-ctrl-time-picker\r\n (focusout)=\"markAsTouched()\"\r\n [maxTime]=\"maxTime()\"\r\n [minTime]=\"minTime()\"\r\n [readonly]=\"readonly()\"\r\n formControlName=\"time\"\r\n (onChange)=\"emit()\"\r\n />\r\n </form>\r\n `\r\n})\r\nexport class DatetimePickerControl extends ControlBase {\r\n datetimeForm: FormGroup = new FormGroup({\r\n date: new FormControl(null),\r\n time: new FormControl(null),\r\n });\r\n /**\r\n * Week days that cannot be selected — `0` is Sunday through `6` for Saturday.\r\n */\r\n disabledDays: InputSignal<number[]> = input<number[]>([]);\r\n /**\r\n * Earliest selectable date.\r\n */\r\n minDate: InputSignal<Date | null> = input<Date | null>(null);\r\n /**\r\n * Latest selectable date.\r\n */\r\n maxDate: InputSignal<Date | null> = input<Date | null>(null);\r\n /**\r\n * Earliest selectable time of day, as `HH:mm`.\r\n */\r\n minTime: InputSignal<string | null> = input<string | null>(null);\r\n /**\r\n * Latest selectable time of day, as `HH:mm`.\r\n */\r\n maxTime: InputSignal<string | null> = input<string | null>(null);\r\n\r\n override setDisabledState(isDisabled: boolean): void {\r\n super.setDisabledState(isDisabled);\r\n // the template binds `datetimeForm`, disabling ctrl alone leaves the pickers live\r\n if (isDisabled) {\r\n this.datetimeForm.disable({ emitEvent: false });\r\n } else {\r\n this.datetimeForm.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n emit() {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n const datetimeStr = this.#stringifyDateTime(this.datetimeForm.getRawValue());\r\n this.propagateValue(datetimeStr);\r\n this.emitOnChangeEvent(datetimeStr);\r\n }\r\n\r\n override writeValue(value: string | Date | null) {\r\n this.datetimeForm.patchValue({\r\n date: this.#stringifyDate(value),\r\n time: this.#stringifyTime(value),\r\n });\r\n }\r\n\r\n #stringifyDateTime(datetime: any): string | undefined {\r\n if (!datetime) {\r\n return undefined;\r\n }\r\n if (this.#stringifyDate(datetime) && this.#stringifyTime(datetime)) {\r\n return `${this.#stringifyDate(datetime)}T${this.#stringifyTime(datetime)}`;\r\n }\r\n return undefined;\r\n }\r\n\r\n #stringifyDate(datetime: any) {\r\n if (!datetime) {\r\n return undefined;\r\n }\r\n\r\n if (datetime.date && typeof datetime.date === \"string\") {\r\n return `${datetime.date.split(\"T\")[0]}`;\r\n }\r\n\r\n const date = new Date(datetime);\r\n if (!Number.isNaN(date.getTime())) {\r\n return format(datetime, \"yyyy-MM-dd\");\r\n }\r\n return undefined;\r\n }\r\n\r\n #stringifyTime(datetime: any) {\r\n if (!datetime) {\r\n return undefined;\r\n }\r\n\r\n if (datetime.time && typeof datetime.time === \"string\") {\r\n return `${datetime.time}`;\r\n }\r\n\r\n const date = new Date(datetime);\r\n if (!Number.isNaN(date.getTime())) {\r\n return format(datetime, \"HH:mm:ss\");\r\n }\r\n return undefined;\r\n }\r\n}\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, input, InputSignal } from \"@angular/core\";\r\nimport { MatHint } from \"@angular/material/form-field\";\r\nimport { Hint } from \"../../shared/interfaces/hint\";\r\n\r\n@Component({\r\n selector: \"iss-ctrl-hints\",\r\n imports: [MatHint,],\r\n template: `\r\n @if (hints().length) {\r\n <div class=\"d-flex align-items-center flex-wrap gap-2 mb-3\">\r\n @for (hint of hints(); track $index) {\r\n @if (hint) {\r\n <mat-hint [align]=\"hint.align\" class=\"d-flex align-items-center gap-1 fs-12\">\r\n @if (hint.valid === undefined) {\r\n <ds-icon icon=\"info\" class=\"fs-24 fc-dark-gray\"></ds-icon>\r\n <span class=\"fc-dark-gray text-break\">{{ hint.label }}</span>\r\n } @else {\r\n <ds-icon\r\n icon=\"{{ touched() ? (hint.valid ? 'check-circle-f' : 'close-circle') : 'check-circle-o' }}\"\r\n class=\"fs-24 {{ touched() ? (hint.valid ? 'fc-green' : 'fc-red') : 'fc-dark-gray' }}\"\r\n >\r\n </ds-icon>\r\n <span\r\n class=\"{{ touched() ? (hint.valid ? 'fc-green' : 'fc-red') : 'fc-dark-gray' }} text-break\"\r\n >{{ hint.label }}</span>\r\n }\r\n </mat-hint>\r\n }\r\n }\r\n </div>\r\n }\r\n `,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class HintsComponent {\r\n hints: InputSignal<Hint[]> = input<Hint[]>([]);\r\n touched: InputSignal<boolean> = input(false);\r\n}\r\n","import { Directive, HostListener, output, OutputEmitterRef } from \"@angular/core\";\r\n\r\n@Directive({selector: \"[droppable]\"})\r\nexport class Droppable {\r\n onDrop: OutputEmitterRef<FileList> = output();\r\n\r\n @HostListener(\"dragover\", [\"$event\"])\r\n onDragOver(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n\r\n @HostListener(\"dragleave\", [\"$event\"])\r\n onDragLeave(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n\r\n @HostListener(\"drop\", [\"$event\"])\r\n onDropped(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.onDrop.emit(evt.dataTransfer.files);\r\n }\r\n}\r\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, InputSignal, OnDestroy, Signal, signal, WritableSignal } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { HintsComponent } from \"../../shared/hints.component\";\r\nimport { ControlBase } from \"../base/control-base\";\r\nimport { IssAttachment } from \"./attachment\";\r\nimport { Droppable } from \"./droppable\";\r\nimport { IssFile } from \"./file\";\r\n\r\n/**\r\n * `<iss-ctrl-file-picker>` — attachment upload with a per-file progress and error state.\r\n *\r\n * Uploading is done by the host: the control emits the picked files and renders whatever is\r\n * fed back through `uploadedFiles`, `uploading` and `uploadingError`.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-file-picker\r\n * formControlName=\"attachments\"\r\n * [multiple]=\"true\"\r\n * accept=\".pdf,.png\"\r\n * [uploading]=\"uploading()\"\r\n * [uploadedFiles]=\"uploaded()\"\r\n * />\r\n * ```\r\n *\r\n * ### Own inputs\r\n * | Property | Type | Default | Description |\r\n * | --- | --- | --- | --- |\r\n * | `accept` | `string \\| undefined` | `undefined` | Accepted extensions or MIME types for the native picker. |\r\n * | `showDownloadButton` | `boolean` | `true` | Shows the download action on each attachment. |\r\n * | `showDeleteButton` | `boolean` | `true` | Shows the remove action on each attachment. |\r\n * | `uploading` | `boolean` | `false` | Renders the in-progress state. |\r\n * | `uploadedFiles` | `IssAttachment[]` | `[]` | Files already stored on the server. |\r\n * | `uploadingError` | `string \\| undefined` | `undefined` | Error message attached to the failed upload. |\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)` · `multiple` · `hints`\r\n *\r\n * Does not project a label — the field label is rendered by the wrapping `iss-field-*`.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-file-picker\",\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n ReactiveFormsModule,\r\n Droppable,\r\n HintsComponent,\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: FilePickerControl, multi: true }\r\n ],\r\n template: `\r\n <ds-file-picker (click)=\"openFilePicker(inputFile)\" (onDrop)=\"captureFile($event)\" droppable>\r\n <input\r\n #inputFile\r\n (change)=\"captureFile($any($event.target).files)\"\r\n (click)=\"$event.stopPropagation()\"\r\n [accept]=\"accept()\"\r\n [formControl]=\"ctrl\"\r\n [multiple]=\"multiple()\"\r\n [disabled]=\"readonly()\"\r\n [style.display]=\"'none'\"\r\n type=\"file\"\r\n />\r\n </ds-file-picker>\r\n\r\n <iss-ctrl-hints [hints]=\"hints()\" [touched]=\"touched()\"/>\r\n <!--<iss-viewer-attachment (deleteOut)=\"onDelete($event)\" [field]=\"filesValue()\" [uploading]=\"uploading()\"/>-->\r\n `,\r\n styles: `\r\n .file-uploader {\r\n --uploader-height: 150px;\r\n --uploader-width: 100%;\r\n --uploader-bg: var(--off-white);\r\n --uploader-border: 1px dashed var(--dark-gray);\r\n --uploader-radius: var(--box-radius);\r\n --uploader-padding: 1rem;\r\n\r\n height: var(--uploader-height);\r\n background-color: var(--uploader-bg);\r\n border: var(--uploader-border);\r\n border-radius: var(--uploader-radius);\r\n padding: var(--uploader-padding);\r\n text-align: center;\r\n cursor: pointer;\r\n\r\n & --input {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n height: 100%;\r\n gap: 0.75rem;\r\n }\r\n }`\r\n})\r\nexport class FilePickerControl extends ControlBase implements OnDestroy {\r\n /**\r\n * Accepted extensions or MIME types, passed straight to the native file input.\r\n */\r\n accept: InputSignal<string | undefined> = input();\r\n /**\r\n * Shows the download action on each listed attachment.\r\n */\r\n showDownloadButton: InputSignal<boolean> = input(true);\r\n /**\r\n * Shows the remove action on each listed attachment.\r\n */\r\n showDeleteButton: InputSignal<boolean> = input(true);\r\n /**\r\n * Renders the upload-in-progress state; set by the host that performs the upload.\r\n */\r\n uploading: InputSignal<boolean> = input(false);\r\n /**\r\n * Attachments already stored on the server, merged into the rendered list.\r\n */\r\n uploadedFiles: InputSignal<IssAttachment[]> = input<IssAttachment[]>([]);\r\n /**\r\n * Error message shown on the attachment whose upload failed.\r\n */\r\n uploadingError: InputSignal<string | undefined> = input<string | undefined>(undefined);\r\n readonly filesValue: Signal<any> = computed(() => this.#returnAttachmentViewObject());\r\n protected attachments: WritableSignal<IssFile[]> = signal([]);\r\n #uploadedFilesEffectRef = effect(() => {\r\n this.#markUploadedFiles();\r\n });\r\n\r\n /*todo needs review and refactor*/\r\n\r\n ngOnDestroy(): void {\r\n this.#uploadedFilesEffectRef.destroy();\r\n }\r\n\r\n override writeValue(val: FormData | string | null): void {\r\n if (typeof val === \"string\") {\r\n return;\r\n }\r\n this.#reset();\r\n if (val) {\r\n this.attachments.set([...this.attachments(), ...this.#convertFormDataToFiles(val)]);\r\n }\r\n }\r\n\r\n protected onDelete(files: IssFile[]): void {\r\n this.attachments.set(files);\r\n this.emitValue(this.#formDataFactory(this.attachments()));\r\n }\r\n\r\n protected captureFile($event: FileList) {\r\n if (this.readonly() || this.disabled()) {\r\n return;\r\n }\r\n if (!$event) {\r\n return;\r\n }\r\n if (!$event.length) {\r\n return;\r\n }\r\n this.markAsTouched();\r\n const files: File[] = Array.from($event);\r\n const issFiles: IssFile[] = files.map((file: File): IssFile => {\r\n return {\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n selected: Date.now(),\r\n file: file,\r\n };\r\n });\r\n this.#updateAttachments(issFiles);\r\n // The field component uploads this output. Emit only the files selected in\r\n // this interaction: `attachments` also contains files selected earlier, so\r\n // serialising it would upload those files again whenever more are added.\r\n this.emitValue(this.#formDataFactory(issFiles));\r\n }\r\n\r\n protected openFilePicker(input: HTMLInputElement): void {\r\n if (this.readonly() || this.disabled()) {\r\n return;\r\n }\r\n input.click();\r\n this.markAsTouched();\r\n }\r\n\r\n #updateAttachments(selectedFiles: IssFile[]) {\r\n if (!this.multiple()) {\r\n this.attachments.set([selectedFiles[0]]);\r\n return;\r\n }\r\n this.attachments.update((files: IssFile[]) => {\r\n files = [...files, ...selectedFiles];\r\n return files;\r\n });\r\n }\r\n\r\n #formDataFactory(files: IssFile[]): FormData | null {\r\n if (files.length === 0) {\r\n return null;\r\n }\r\n const fd: FormData = new FormData();\r\n let formDataKey = \"file\";\r\n if (this.multiple()) {\r\n formDataKey = \"files\";\r\n }\r\n for (let i = 0; i < files.length; i++) {\r\n fd.append(formDataKey, (files[i].file as File));\r\n }\r\n return fd;\r\n }\r\n\r\n #reset() {\r\n this.attachments.set([]);\r\n }\r\n\r\n #convertFormDataToFiles(val: FormData): IssFile[] {\r\n if (!val || !(val instanceof FormData)) {\r\n return [];\r\n }\r\n const files: File[] = [];\r\n for (const pair of val.entries()) {\r\n if (pair[1] instanceof File) {\r\n files.push(pair[1]);\r\n }\r\n }\r\n return files;\r\n }\r\n\r\n #markUploadedFiles() {\r\n this.attachments.update((attachments: IssFile[]) => {\r\n return attachments.map((attachment: IssFile) => {\r\n // const uploadedFile = this.uploadedFiles().find((f) => f.selected === attachment.selected && f.name === attachment.name);\r\n if (this.uploadingError()) {\r\n attachment.errorMsg = this.uploadingError();\r\n }\r\n // if (uploadedFile) {\r\n // attachment.id = uploadedFile.id;\r\n // }\r\n return attachment;\r\n });\r\n });\r\n }\r\n\r\n #returnAttachmentViewObject() {\r\n return {\r\n config: {\r\n showDownloadButton: this.showDownloadButton(),\r\n showDeleteButton: this.showDeleteButton()\r\n },\r\n ctrlJsonValue: signal(this.attachments())\r\n };\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, EffectRef, input, InputSignal, OnDestroy, output, OutputEmitterRef } from \"@angular/core\";\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validator } from \"@angular/forms\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInput, MatInputModule } from \"@angular/material/input\";\r\nimport { HintsComponent } from \"../../shared/hints.component\";\r\nimport { ControlBase } from \"../base/control-base\";\r\n\r\n/**\r\n * `<iss-ctrl-input>` — single line text input, the base for every scalar text field.\r\n *\r\n * `type` is forwarded to the native input, so `number`, `email` and `password` variants all\r\n * come from this one control.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-input formControlName=\"amount\" type=\"number\" [min]=\"0\" suffixText=\"SAR\">\r\n * <label>Amount</label>\r\n * </iss-ctrl-input>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * | Property | Type | Default | Description |\r\n * | --- | --- | --- | --- |\r\n * | `type` | `string` | `\"text\"` | Native input type: `text`, `number`, `email`, `password`, … |\r\n * | `prefixIcon` | `string` | `\"\"` | Icon rendered before the value. |\r\n * | `prefixText` | `string` | `\"\"` | Text rendered before the value. |\r\n * | `suffixIcon` | `string` | `\"\"` | Icon rendered after the value. |\r\n * | `suffixText` | `string` | `\"\"` | Text rendered after the value. |\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)` · `placeholder` · `min` · `max` · `minLength` · `maxLength` · `hints`\r\n *\r\n * ### Outputs\r\n * - `(onPrefixClick)` — `string`, the prefix affix was clicked.\r\n * - `(onSuffixClick)` — `string`, the suffix affix was clicked.\r\n *\r\n * Projects `<label>` into the floating label; omit it to render the control without one.\r\n *\r\n * Also projects `[issPrefix]` and `[issSuffix]` for fully custom affixes.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-input\",\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n HintsComponent,\r\n MatInput,\r\n MatInputModule,\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: InputControl, multi: true },\r\n { provide: NG_VALIDATORS, useExisting: InputControl, multi: true }\r\n ],\r\n template: `\r\n <mat-form-field floatLabel=\"auto\" class=\"\">\r\n @if (hasLabel()) {\r\n <mat-label class=\"fs-16 fc-black\">\r\n <ng-content select=\"label\"></ng-content>\r\n </mat-label>\r\n }\r\n <ng-content select=\"[issPrefix]\"></ng-content>\r\n <div (click)=\"emitPrefixClick()\" class=\"cursor-pointer\">\r\n @if (prefixText()) {\r\n <span matTextPrefix>{{ prefixText() }}</span>\r\n }\r\n @if (prefixIcon()) {\r\n <ds-icon matPrefix icon=\"{{prefixIcon()}}\"></ds-icon>\r\n }\r\n </div>\r\n <input\r\n matInput\r\n (blur)=\"markAsTouched()\"\r\n (input)=\"emitValue()\"\r\n [formControl]=\"ctrl\"\r\n [attr.maxlength]=\"maxLength()\"\r\n [attr.minlength]=\"minLength()\"\r\n [attr.max]=\"max()\"\r\n [attr.min]=\"min()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [type]=\"type()\"\r\n />\r\n <ng-content select=\"[issSuffix]\"></ng-content>\r\n <div (click)=\"emitSuffixClick()\" class=\"cursor-pointer\">\r\n @if (suffixText()) {\r\n <span matTextSuffix>{{ suffixText() }}</span>\r\n }\r\n @if (suffixIcon()) {\r\n <ds-icon matSuffix icon=\"{{suffixIcon()}}\"></ds-icon>\r\n }\r\n </div>\r\n <iss-ctrl-hints [hints]=\"hints()\" [touched]=\"touched()\"/>\r\n </mat-form-field>\r\n `\r\n})\r\nexport class InputControl extends ControlBase implements Validator, OnDestroy {\r\n /**\r\n * Native input type — `text`, `number`, `email`, `password`, and so on.\r\n */\r\n type: InputSignal<string> = input(\"text\");\r\n /**\r\n * Icon name rendered before the value.\r\n */\r\n prefixIcon: InputSignal<string> = input(\"\");\r\n /**\r\n * Static text rendered before the value.\r\n */\r\n prefixText: InputSignal<string> = input(\"\");\r\n /**\r\n * Icon name rendered after the value.\r\n */\r\n suffixIcon: InputSignal<string> = input(\"\");\r\n /**\r\n * Static text rendered after the value, a unit or currency for example.\r\n */\r\n suffixText: InputSignal<string> = input(\"\");\r\n /**\r\n * Emits when the prefix affix is clicked.\r\n */\r\n onPrefixClick: OutputEmitterRef<string> = output();\r\n /**\r\n * Emits when the suffix affix is clicked.\r\n */\r\n onSuffixClick: OutputEmitterRef<string> = output();\r\n #disabledEffect: EffectRef = effect(() => {\r\n if (this.disabled()) {\r\n this.ctrl.disable();\r\n } else {\r\n this.ctrl.enable();\r\n }\r\n });\r\n\r\n emitSuffixClick() {\r\n this.onSuffixClick.emit(this.ctrl.getRawValue());\r\n }\r\n\r\n emitPrefixClick() {\r\n this.onPrefixClick.emit(this.ctrl.getRawValue());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#disabledEffect.destroy();\r\n }\r\n}\r\n","import { Country } from \"./country\";\r\n\r\nexport const DEFAULT_COUNTRY: Country = {\r\n name: \"Saudi Arabia (المملكة العربية السعودية)\",\r\n code: \"SA\",\r\n dailCode: \"966\",\r\n priority: 0,\r\n order: 1000,\r\n placeholder: \"501234567\"\r\n};\r\n\r\nexport const COUNTRIES: Country[] = [\r\n {\r\n name: \"Afghanistan (افغانستان)\",\r\n code: \"AF\",\r\n dailCode: \"93\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"701234567\"\r\n },\r\n {\r\n name: \"Albania (Shqipëri)\",\r\n code: \"AL\",\r\n dailCode: \"355\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"672123456\"\r\n },\r\n {\r\n name: \"Algeria (الجزائر)\",\r\n code: \"DZ\",\r\n dailCode: \"213\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"551234567\"\r\n },\r\n {\r\n name: \"American Samoa\",\r\n code: \"AS\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"684\"\r\n ],\r\n placeholder: \"6847331234\"\r\n },\r\n {\r\n name: \"Andorra\",\r\n code: \"AD\",\r\n dailCode: \"376\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"312345\"\r\n },\r\n {\r\n name: \"Angola\",\r\n code: \"AO\",\r\n dailCode: \"244\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"923123456\"\r\n },\r\n {\r\n name: \"Anguilla\",\r\n code: \"AI\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"264\"\r\n ],\r\n placeholder: \"2642351234\"\r\n },\r\n {\r\n name: \"Antigua and Barbuda\",\r\n code: \"AG\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"268\"\r\n ],\r\n placeholder: \"2684641234\"\r\n },\r\n {\r\n name: \"Argentina\",\r\n code: \"AR\",\r\n dailCode: \"54\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"91123456789\"\r\n },\r\n {\r\n name: \"Armenia (Հայաստան)\",\r\n code: \"AM\",\r\n dailCode: \"374\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"77123456\"\r\n },\r\n {\r\n name: \"Aruba\",\r\n code: \"AW\",\r\n dailCode: \"297\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"5601234\"\r\n },\r\n {\r\n name: \"Australia\",\r\n code: \"AU\",\r\n dailCode: \"61\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"412345678\"\r\n },\r\n {\r\n name: \"Austria (Österreich)\",\r\n code: \"AT\",\r\n dailCode: \"43\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"664123456\"\r\n },\r\n {\r\n name: \"Azerbaijan (Azərbaycan)\",\r\n code: \"AZ\",\r\n dailCode: \"994\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"401234567\"\r\n },\r\n {\r\n name: \"Bahamas\",\r\n code: \"BS\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"242\"\r\n ],\r\n placeholder: \"2423591234\"\r\n },\r\n {\r\n name: \"Bahrain (البحرين)\",\r\n code: \"BH\",\r\n dailCode: \"973\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"36001234\"\r\n },\r\n {\r\n name: \"Bangladesh (বাংলাদেশ)\",\r\n code: \"BD\",\r\n dailCode: \"880\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"1812345678\"\r\n },\r\n {\r\n name: \"Barbados\",\r\n code: \"BB\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"246\"\r\n ],\r\n placeholder: \"2462501234\"\r\n },\r\n {\r\n name: \"Belarus (Беларусь)\",\r\n code: \"BY\",\r\n dailCode: \"375\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"294911911\"\r\n },\r\n {\r\n name: \"Belgium (België)\",\r\n code: \"BE\",\r\n dailCode: \"32\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"470123456\"\r\n },\r\n {\r\n name: \"Belize\",\r\n code: \"BZ\",\r\n dailCode: \"501\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"6221234\"\r\n },\r\n {\r\n name: \"Benin (Bénin)\",\r\n code: \"BJ\",\r\n dailCode: \"229\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"90011234\"\r\n },\r\n {\r\n name: \"Bermuda\",\r\n code: \"BM\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"441\"\r\n ],\r\n placeholder: \"4413701234\"\r\n },\r\n {\r\n name: \"Bhutan (འབྲུག)\",\r\n code: \"BT\",\r\n dailCode: \"975\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"17123456\"\r\n },\r\n {\r\n name: \"Bolivia\",\r\n code: \"BO\",\r\n dailCode: \"591\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"71234567\"\r\n },\r\n {\r\n name: \"Bosnia and Herzegovina (Босна и Херцеговина)\",\r\n code: \"BA\",\r\n dailCode: \"387\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"61123456\"\r\n },\r\n {\r\n name: \"Botswana\",\r\n code: \"BW\",\r\n dailCode: \"267\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"71123456\"\r\n },\r\n {\r\n name: \"Brazil (Brasil)\",\r\n code: \"BR\",\r\n dailCode: \"55\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"11961234567\"\r\n },\r\n {\r\n name: \"British Indian Ocean Territory\",\r\n code: \"IO\",\r\n dailCode: \"246\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"3801234\"\r\n },\r\n {\r\n name: \"British Virgin Islands\",\r\n code: \"VG\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"284\"\r\n ],\r\n placeholder: \"2843001234\"\r\n },\r\n {\r\n name: \"Brunei\",\r\n code: \"BN\",\r\n dailCode: \"673\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"7123456\"\r\n },\r\n {\r\n name: \"Bulgaria (България)\",\r\n code: \"BG\",\r\n dailCode: \"359\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"43012345\"\r\n },\r\n {\r\n name: \"Burkina Faso\",\r\n code: \"BF\",\r\n dailCode: \"226\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"70123456\"\r\n },\r\n {\r\n name: \"Burundi (Uburundi)\",\r\n code: \"BI\",\r\n dailCode: \"257\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"79561234\"\r\n },\r\n {\r\n name: \"Cambodia (កម្ពុជា)\",\r\n code: \"KH\",\r\n dailCode: \"855\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"91234567\"\r\n },\r\n {\r\n name: \"Cameroon (Cameroun)\",\r\n code: \"CM\",\r\n dailCode: \"237\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"671234567\"\r\n },\r\n {\r\n name: \"Canada\",\r\n code: \"CA\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"204\",\r\n \"226\",\r\n \"236\",\r\n \"249\",\r\n \"250\",\r\n \"289\",\r\n \"306\",\r\n \"343\",\r\n \"365\",\r\n \"387\",\r\n \"403\",\r\n \"416\",\r\n \"418\",\r\n \"431\",\r\n \"437\",\r\n \"438\",\r\n \"450\",\r\n \"506\",\r\n \"514\",\r\n \"519\",\r\n \"548\",\r\n \"579\",\r\n \"581\",\r\n \"587\",\r\n \"604\",\r\n \"613\",\r\n \"639\",\r\n \"647\",\r\n \"672\",\r\n \"705\",\r\n \"709\",\r\n \"742\",\r\n \"778\",\r\n \"780\",\r\n \"782\",\r\n \"807\",\r\n \"819\",\r\n \"825\",\r\n \"867\",\r\n \"873\",\r\n \"902\",\r\n \"905\"\r\n ],\r\n placeholder: \"5062345678\"\r\n },\r\n {\r\n name: \"Cape Verde (Kabu Verdi)\",\r\n code: \"CV\",\r\n dailCode: \"238\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"9911234\"\r\n },\r\n {\r\n name: \"Caribbean Netherlands\",\r\n code: \"BQ\",\r\n dailCode: \"599\",\r\n priority: 1,\r\n order: 0,\r\n placeholder: \"3181234\"\r\n },\r\n {\r\n name: \"Cayman Islands\",\r\n code: \"KY\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"345\"\r\n ],\r\n placeholder: \"3453231234\"\r\n },\r\n {\r\n name: \"Central African Republic (République centrafricaine)\",\r\n code: \"CF\",\r\n dailCode: \"236\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"70012345\"\r\n },\r\n {\r\n name: \"Chad (Tchad)\",\r\n code: \"TD\",\r\n dailCode: \"235\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"63012345\"\r\n },\r\n {\r\n name: \"Chile\",\r\n code: \"CL\",\r\n dailCode: \"56\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"221234567\"\r\n },\r\n {\r\n name: \"China (中国)\",\r\n code: \"CN\",\r\n dailCode: \"86\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"13123456789\"\r\n },\r\n {\r\n name: \"Christmas Island\",\r\n code: \"CX\",\r\n dailCode: \"61\",\r\n priority: 2,\r\n order: 0,\r\n placeholder: \"412345678\"\r\n },\r\n {\r\n name: \"Cocos (Keeling) Islands\",\r\n code: \"CC\",\r\n dailCode: \"61\",\r\n priority: 1,\r\n order: 0,\r\n placeholder: \"412345678\"\r\n },\r\n {\r\n name: \"Colombia\",\r\n code: \"CO\",\r\n dailCode: \"57\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"3211234567\"\r\n },\r\n {\r\n name: \"Comoros (جزر القمر)\",\r\n code: \"KM\",\r\n dailCode: \"269\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"3212345\"\r\n },\r\n {\r\n name: \"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\",\r\n code: \"CD\",\r\n dailCode: \"243\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"991234567\"\r\n },\r\n {\r\n name: \"Congo (Republic) (Congo-Brazzaville)\",\r\n code: \"CG\",\r\n dailCode: \"242\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"061234567\"\r\n },\r\n {\r\n name: \"Cook Islands\",\r\n code: \"CK\",\r\n dailCode: \"682\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"71234\"\r\n },\r\n {\r\n name: \"Costa Rica\",\r\n code: \"CR\",\r\n dailCode: \"506\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"83123456\"\r\n },\r\n {\r\n name: \"Côte d’Ivoire\",\r\n code: \"CI\",\r\n dailCode: \"225\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"0123456789\"\r\n },\r\n {\r\n name: \"Croatia (Hrvatska)\",\r\n code: \"HR\",\r\n dailCode: \"385\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"921234567\"\r\n },\r\n {\r\n name: \"Cuba\",\r\n code: \"CU\",\r\n dailCode: \"53\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"51234567\"\r\n },\r\n {\r\n name: \"Curaçao\",\r\n code: \"CW\",\r\n dailCode: \"599\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"95181234\"\r\n },\r\n {\r\n name: \"Cyprus (Κύπρος)\",\r\n code: \"CY\",\r\n dailCode: \"357\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"96123456\"\r\n },\r\n {\r\n name: \"Czech Republic (Česká republika)\",\r\n code: \"CZ\",\r\n dailCode: \"420\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"601123456\"\r\n },\r\n {\r\n name: \"Denmark (Danmark)\",\r\n code: \"DK\",\r\n dailCode: \"45\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"34412345\"\r\n },\r\n {\r\n name: \"Djibouti\",\r\n code: \"DJ\",\r\n dailCode: \"253\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"77831001\"\r\n },\r\n {\r\n name: \"Dominica\",\r\n code: \"DM\",\r\n dailCode: \"1767\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"7672251234\"\r\n },\r\n {\r\n name: \"Dominican Republic (República Dominicana)\",\r\n code: \"DO\",\r\n dailCode: \"1\",\r\n priority: 2,\r\n order: 0,\r\n areaCodes: [\r\n \"809\",\r\n \"829\",\r\n \"849\"\r\n ],\r\n placeholder: \"8092345678\"\r\n },\r\n {\r\n name: \"Ecuador\",\r\n code: \"EC\",\r\n dailCode: \"593\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"991234567\"\r\n },\r\n {\r\n name: \"Egypt (مصر)\",\r\n code: \"EG\",\r\n dailCode: \"20\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"1001234567\"\r\n },\r\n {\r\n name: \"El Salvador\",\r\n code: \"SV\",\r\n dailCode: \"503\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"70123456\"\r\n },\r\n {\r\n name: \"Equatorial Guinea (Guinea Ecuatorial)\",\r\n code: \"GQ\",\r\n dailCode: \"240\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"222123456\"\r\n },\r\n {\r\n name: \"Eritrea\",\r\n code: \"ER\",\r\n dailCode: \"291\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"7123456\"\r\n },\r\n {\r\n name: \"Estonia (Eesti)\",\r\n code: \"EE\",\r\n dailCode: \"372\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"51234567\"\r\n },\r\n {\r\n name: \"Ethiopia\",\r\n code: \"ET\",\r\n dailCode: \"251\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"911234567\"\r\n },\r\n {\r\n name: \"Falkland Islands (Islas Malvinas)\",\r\n code: \"FK\",\r\n dailCode: \"500\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"51234\"\r\n },\r\n {\r\n name: \"Faroe Islands (Føroyar)\",\r\n code: \"FO\",\r\n dailCode: \"298\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"211234\"\r\n },\r\n {\r\n name: \"Fiji\",\r\n code: \"FJ\",\r\n dailCode: \"679\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"7012345\"\r\n },\r\n {\r\n name: \"Finland (Suomi)\",\r\n code: \"FI\",\r\n dailCode: \"358\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"412345678\"\r\n },\r\n {\r\n name: \"France\",\r\n code: \"FR\",\r\n dailCode: \"33\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"612345678\"\r\n },\r\n {\r\n name: \"French Guiana (Guyane française)\",\r\n code: \"GF\",\r\n dailCode: \"594\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"694201234\"\r\n },\r\n {\r\n name: \"French Polynesia (Polynésie française)\",\r\n code: \"PF\",\r\n dailCode: \"689\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"87123456\"\r\n },\r\n {\r\n name: \"Gabon\",\r\n code: \"GA\",\r\n dailCode: \"241\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"06031234\"\r\n },\r\n {\r\n name: \"Gambia\",\r\n code: \"GM\",\r\n dailCode: \"220\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"3012345\"\r\n },\r\n {\r\n name: \"Georgia (საქართველო)\",\r\n code: \"GE\",\r\n dailCode: \"995\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"555123456\"\r\n },\r\n {\r\n name: \"Germany (Deutschland)\",\r\n code: \"DE\",\r\n dailCode: \"49\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"15123456789\"\r\n },\r\n {\r\n name: \"Ghana (Gaana)\",\r\n code: \"GH\",\r\n dailCode: \"233\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"231234567\"\r\n },\r\n {\r\n name: \"Gibraltar\",\r\n code: \"GI\",\r\n dailCode: \"350\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"57123456\"\r\n },\r\n {\r\n name: \"Greece (Ελλάδα)\",\r\n code: \"GR\",\r\n dailCode: \"30\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"6912345678\"\r\n },\r\n {\r\n name: \"Greenland (Kalaallit Nunaat)\",\r\n code: \"GL\",\r\n dailCode: \"299\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"221234\"\r\n },\r\n {\r\n name: \"Grenada\",\r\n code: \"GD\",\r\n dailCode: \"1473\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"4734031234\"\r\n },\r\n {\r\n name: \"Guadeloupe\",\r\n code: \"GP\",\r\n dailCode: \"590\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"690001234\"\r\n },\r\n {\r\n name: \"Guam\",\r\n code: \"GU\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"671\"\r\n ],\r\n placeholder: \"6713001234\"\r\n },\r\n {\r\n name: \"Guatemala\",\r\n code: \"GT\",\r\n dailCode: \"502\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"51234567\"\r\n },\r\n {\r\n name: \"Guernsey\",\r\n code: \"GG\",\r\n dailCode: \"44\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"1481\"\r\n ],\r\n placeholder: \"7781123456\"\r\n },\r\n {\r\n name: \"Guinea (Guinée)\",\r\n code: \"GN\",\r\n dailCode: \"224\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"601123456\"\r\n },\r\n {\r\n name: \"Guinea-Bissau (Guiné Bissau)\",\r\n code: \"GW\",\r\n dailCode: \"245\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"955012345\"\r\n },\r\n {\r\n name: \"Guyana\",\r\n code: \"GY\",\r\n dailCode: \"592\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"6091234\"\r\n },\r\n {\r\n name: \"Haiti\",\r\n code: \"HT\",\r\n dailCode: \"509\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"34101234\"\r\n },\r\n {\r\n name: \"Honduras\",\r\n code: \"HN\",\r\n dailCode: \"504\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"91234567\"\r\n },\r\n {\r\n name: \"Hong Kong (香港)\",\r\n code: \"HK\",\r\n dailCode: \"852\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"51234567\"\r\n },\r\n {\r\n name: \"Hungary (Magyarország)\",\r\n code: \"HU\",\r\n dailCode: \"36\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"201234567\"\r\n },\r\n {\r\n name: \"Iceland (Ísland)\",\r\n code: \"IS\",\r\n dailCode: \"354\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"6111234\"\r\n },\r\n {\r\n name: \"India (भारत)\",\r\n code: \"IN\",\r\n dailCode: \"91\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"8123456789\"\r\n },\r\n {\r\n name: \"Indonesia\",\r\n code: \"ID\",\r\n dailCode: \"62\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"812345678\"\r\n },\r\n {\r\n name: \"Iran (ايران)\",\r\n code: \"IR\",\r\n dailCode: \"98\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"9123456789\"\r\n },\r\n {\r\n name: \"Iraq (العراق)\",\r\n code: \"IQ\",\r\n dailCode: \"964\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"7912345678\"\r\n },\r\n {\r\n name: \"Ireland\",\r\n code: \"IE\",\r\n dailCode: \"353\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"850123456\"\r\n },\r\n {\r\n name: \"Isle of Man\",\r\n code: \"IM\",\r\n dailCode: \"44\",\r\n priority: 2,\r\n order: 0,\r\n areaCodes: [\r\n \"1624\"\r\n ],\r\n placeholder: \"7924123456\"\r\n },\r\n {\r\n name: \"Italy (Italia)\",\r\n code: \"IT\",\r\n dailCode: \"39\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"3123456789\"\r\n },\r\n {\r\n name: \"Jamaica\",\r\n code: \"JM\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"876\"\r\n ],\r\n placeholder: \"8762101234\"\r\n },\r\n {\r\n name: \"Japan (日本)\",\r\n code: \"JP\",\r\n dailCode: \"81\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"9012345678\"\r\n },\r\n {\r\n name: \"Jersey\",\r\n code: \"JE\",\r\n dailCode: \"44\",\r\n priority: 3,\r\n order: 0,\r\n areaCodes: [\r\n \"1534\"\r\n ],\r\n placeholder: \"7797712345\"\r\n },\r\n {\r\n name: \"Jordan (الأردن)\",\r\n code: \"JO\",\r\n dailCode: \"962\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"790123456\"\r\n },\r\n {\r\n name: \"Kazakhstan (Казахстан)\",\r\n code: \"KZ\",\r\n dailCode: \"7\",\r\n priority: 1,\r\n order: 0,\r\n placeholder: \"7710009998\"\r\n },\r\n {\r\n name: \"Kenya\",\r\n code: \"KE\",\r\n dailCode: \"254\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"712123456\"\r\n },\r\n {\r\n name: \"Kiribati\",\r\n code: \"KI\",\r\n dailCode: \"686\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"72001234\"\r\n },\r\n {\r\n name: \"Kosovo\",\r\n code: \"XK\",\r\n dailCode: \"383\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"43201234\"\r\n },\r\n {\r\n name: \"Kuwait (الكويت)\",\r\n code: \"KW\",\r\n dailCode: \"965\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"50012345\"\r\n },\r\n {\r\n name: \"Kyrgyzstan (Кыргызстан)\",\r\n code: \"KG\",\r\n dailCode: \"996\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"700123456\"\r\n },\r\n {\r\n name: \"Laos (ລາວ)\",\r\n code: \"LA\",\r\n dailCode: \"856\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"2023123456\"\r\n },\r\n {\r\n name: \"Latvia (Latvija)\",\r\n code: \"LV\",\r\n dailCode: \"371\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"21234567\"\r\n },\r\n {\r\n name: \"Lebanon (لبنان)\",\r\n code: \"LB\",\r\n dailCode: \"961\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"71123456\"\r\n },\r\n {\r\n name: \"Lesotho\",\r\n code: \"LS\",\r\n dailCode: \"266\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"50123456\"\r\n },\r\n {\r\n name: \"Liberia\",\r\n code: \"LR\",\r\n dailCode: \"231\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"770123456\"\r\n },\r\n {\r\n name: \"Libya (ليبيا)\",\r\n code: \"LY\",\r\n dailCode: \"218\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"912345678\"\r\n },\r\n {\r\n name: \"Liechtenstein\",\r\n code: \"LI\",\r\n dailCode: \"423\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"660234567\"\r\n },\r\n {\r\n name: \"Lithuania (Lietuva)\",\r\n code: \"LT\",\r\n dailCode: \"370\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"61234567\"\r\n },\r\n {\r\n name: \"Luxembourg\",\r\n code: \"LU\",\r\n dailCode: \"352\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"628123456\"\r\n },\r\n {\r\n name: \"Macau (澳門)\",\r\n code: \"MO\",\r\n dailCode: \"853\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"66123456\"\r\n },\r\n {\r\n name: \"Macedonia (FYROM) (Македонија)\",\r\n code: \"MK\",\r\n dailCode: \"389\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"72345678\"\r\n },\r\n {\r\n name: \"Madagascar (Madagasikara)\",\r\n code: \"MG\",\r\n dailCode: \"261\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"321234567\"\r\n },\r\n {\r\n name: \"Malawi\",\r\n code: \"MW\",\r\n dailCode: \"265\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"991234567\"\r\n },\r\n {\r\n name: \"Malaysia\",\r\n code: \"MY\",\r\n dailCode: \"60\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"123456789\"\r\n },\r\n {\r\n name: \"Maldives\",\r\n code: \"MV\",\r\n dailCode: \"960\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"7712345\"\r\n },\r\n {\r\n name: \"Mali\",\r\n code: \"ML\",\r\n dailCode: \"223\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"65012345\"\r\n },\r\n {\r\n name: \"Malta\",\r\n code: \"MT\",\r\n dailCode: \"356\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"96961234\"\r\n },\r\n {\r\n name: \"Marshall Islands\",\r\n code: \"MH\",\r\n dailCode: \"692\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"2351234\"\r\n },\r\n {\r\n name: \"Martinique\",\r\n code: \"MQ\",\r\n dailCode: \"596\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"696201234\"\r\n },\r\n {\r\n name: \"Mauritania (موريتانيا)\",\r\n code: \"MR\",\r\n dailCode: \"222\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"22123456\"\r\n },\r\n {\r\n name: \"Mauritius (Moris)\",\r\n code: \"MU\",\r\n dailCode: \"230\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"52512345\"\r\n },\r\n {\r\n name: \"Mayotte\",\r\n code: \"YT\",\r\n dailCode: \"262\",\r\n priority: 1,\r\n order: 0,\r\n placeholder: \"639012345\"\r\n },\r\n {\r\n name: \"Mexico (México)\",\r\n code: \"MX\",\r\n dailCode: \"52\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"2221234567\"\r\n },\r\n {\r\n name: \"Micronesia\",\r\n code: \"FM\",\r\n dailCode: \"691\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"3501234\"\r\n },\r\n {\r\n name: \"Moldova (Republica Moldova)\",\r\n code: \"MD\",\r\n dailCode: \"373\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"62112345\"\r\n },\r\n {\r\n name: \"Monaco\",\r\n code: \"MC\",\r\n dailCode: \"377\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"612345678\"\r\n },\r\n {\r\n name: \"Mongolia (Монгол)\",\r\n code: \"MN\",\r\n dailCode: \"976\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"88123456\"\r\n },\r\n {\r\n name: \"Montenegro (Crna Gora)\",\r\n code: \"ME\",\r\n dailCode: \"382\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"67622901\"\r\n },\r\n {\r\n name: \"Montserrat\",\r\n code: \"MS\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"664\"\r\n ],\r\n placeholder: \"6644923456\"\r\n },\r\n {\r\n name: \"Morocco (المغرب)\",\r\n code: \"MA\",\r\n dailCode: \"212\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"650123456\"\r\n },\r\n {\r\n name: \"Mozambique (Moçambique)\",\r\n code: \"MZ\",\r\n dailCode: \"258\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"821234567\"\r\n },\r\n {\r\n name: \"Myanmar (Burma) (မြန်မာ)\",\r\n code: \"MM\",\r\n dailCode: \"95\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"92123456\"\r\n },\r\n {\r\n name: \"Namibia (Namibië)\",\r\n code: \"NA\",\r\n dailCode: \"264\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"811234567\"\r\n },\r\n {\r\n name: \"Nauru\",\r\n code: \"NR\",\r\n dailCode: \"674\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"5551234\"\r\n },\r\n {\r\n name: \"Nepal (नेपाल)\",\r\n code: \"NP\",\r\n dailCode: \"977\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"9841234567\"\r\n },\r\n {\r\n name: \"Netherlands (Nederland)\",\r\n code: \"NL\",\r\n dailCode: \"31\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"612345678\"\r\n },\r\n {\r\n name: \"New Caledonia (Nouvelle-Calédonie)\",\r\n code: \"NC\",\r\n dailCode: \"687\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"751234\"\r\n },\r\n {\r\n name: \"New Zealand\",\r\n code: \"NZ\",\r\n dailCode: \"64\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"211234567\"\r\n },\r\n {\r\n name: \"Nicaragua\",\r\n code: \"NI\",\r\n dailCode: \"505\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"81234567\"\r\n },\r\n {\r\n name: \"Niger (Nijar)\",\r\n code: \"NE\",\r\n dailCode: \"227\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"93123456\"\r\n },\r\n {\r\n name: \"Nigeria\",\r\n code: \"NG\",\r\n dailCode: \"234\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"8021234567\"\r\n },\r\n {\r\n name: \"Niue\",\r\n code: \"NU\",\r\n dailCode: \"683\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"8884012\"\r\n },\r\n {\r\n name: \"Norfolk Island\",\r\n code: \"NF\",\r\n dailCode: \"672\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"381234\"\r\n },\r\n {\r\n name: \"North Korea (조선 민주주의 인민 공화국)\",\r\n code: \"KP\",\r\n dailCode: \"850\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"1921234567\"\r\n },\r\n {\r\n name: \"Northern Mariana Islands\",\r\n code: \"MP\",\r\n dailCode: \"1670\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"6702345678\"\r\n },\r\n {\r\n name: \"Norway (Norge)\",\r\n code: \"NO\",\r\n dailCode: \"47\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"40612345\"\r\n },\r\n {\r\n name: \"Oman (عُمان)\",\r\n code: \"OM\",\r\n dailCode: \"968\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"92123456\"\r\n },\r\n {\r\n name: \"Pakistan (پاکستان)\",\r\n code: \"PK\",\r\n dailCode: \"92\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"3012345678\"\r\n },\r\n {\r\n name: \"Palau\",\r\n code: \"PW\",\r\n dailCode: \"680\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"6201234\"\r\n },\r\n {\r\n name: \"Palestine (فلسطين)\",\r\n code: \"PS\",\r\n dailCode: \"970\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"599123456\"\r\n },\r\n {\r\n name: \"Panama (Panamá)\",\r\n code: \"PA\",\r\n dailCode: \"507\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"61234567\"\r\n },\r\n {\r\n name: \"Papua New Guinea\",\r\n code: \"PG\",\r\n dailCode: \"675\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"70123456\"\r\n },\r\n {\r\n name: \"Paraguay\",\r\n code: \"PY\",\r\n dailCode: \"595\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"961456789\"\r\n },\r\n {\r\n name: \"Peru (Perú)\",\r\n code: \"PE\",\r\n dailCode: \"51\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"912345678\"\r\n },\r\n {\r\n name: \"Philippines\",\r\n code: \"PH\",\r\n dailCode: \"63\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"9051234567\"\r\n },\r\n {\r\n name: \"Poland (Polska)\",\r\n code: \"PL\",\r\n dailCode: \"48\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"512345678\"\r\n },\r\n {\r\n name: \"Portugal\",\r\n code: \"PT\",\r\n dailCode: \"351\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"912345678\"\r\n },\r\n {\r\n name: \"Puerto Rico\",\r\n code: \"PR\",\r\n dailCode: \"1\",\r\n priority: 3,\r\n order: 0,\r\n areaCodes: [\r\n \"787\",\r\n \"939\"\r\n ],\r\n placeholder: \"7872345678\"\r\n },\r\n {\r\n name: \"Qatar (قطر)\",\r\n code: \"QA\",\r\n dailCode: \"974\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"33123456\"\r\n },\r\n {\r\n name: \"Réunion (La Réunion)\",\r\n code: \"RE\",\r\n dailCode: \"262\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"692123456\"\r\n },\r\n {\r\n name: \"Romania (România)\",\r\n code: \"RO\",\r\n dailCode: \"40\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"712034567\"\r\n },\r\n {\r\n name: \"Russia (Россия)\",\r\n code: \"RU\",\r\n dailCode: \"7\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"9123456789\"\r\n },\r\n {\r\n name: \"Rwanda\",\r\n code: \"RW\",\r\n dailCode: \"250\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"720123456\"\r\n },\r\n {\r\n name: \"Saint Barthélemy (Saint-Barthélemy)\",\r\n code: \"BL\",\r\n dailCode: \"590\",\r\n priority: 1,\r\n order: 0,\r\n placeholder: \"690001234\"\r\n },\r\n {\r\n name: \"Saint Helena\",\r\n code: \"SH\",\r\n dailCode: \"290\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"51234\"\r\n },\r\n {\r\n name: \"Saint Kitts and Nevis\",\r\n code: \"KN\",\r\n dailCode: \"1869\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"8697652917\"\r\n },\r\n {\r\n name: \"Saint Lucia\",\r\n code: \"LC\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"758\"\r\n ],\r\n placeholder: \"7582845678\"\r\n },\r\n {\r\n name: \"Saint Martin (Saint-Martin (partie française))\",\r\n code: \"MF\",\r\n dailCode: \"590\",\r\n priority: 2,\r\n order: 0,\r\n placeholder: \"690001234\"\r\n },\r\n {\r\n name: \"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\",\r\n code: \"PM\",\r\n dailCode: \"508\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"551234\"\r\n },\r\n {\r\n name: \"Saint Vincent and the Grenadines\",\r\n code: \"VC\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"784\"\r\n ],\r\n placeholder: \"7844301234\"\r\n },\r\n {\r\n name: \"Samoa\",\r\n code: \"WS\",\r\n dailCode: \"685\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"7212345\"\r\n },\r\n {\r\n name: \"San Marino\",\r\n code: \"SM\",\r\n dailCode: \"378\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"66661212\"\r\n },\r\n {\r\n name: \"São Tomé and Príncipe (São Tomé e Príncipe)\",\r\n code: \"ST\",\r\n dailCode: \"239\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"9812345\"\r\n },\r\n {\r\n name: \"Saudi Arabia (المملكة العربية السعودية)\",\r\n code: \"SA\",\r\n dailCode: \"966\",\r\n priority: 0,\r\n order: 1,\r\n placeholder: \"501234567\"\r\n },\r\n {\r\n name: \"Senegal (Sénégal)\",\r\n code: \"SN\",\r\n dailCode: \"221\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"701234567\"\r\n },\r\n {\r\n name: \"Serbia (Србија)\",\r\n code: \"RS\",\r\n dailCode: \"381\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"601234567\"\r\n },\r\n {\r\n name: \"Seychelles\",\r\n code: \"SC\",\r\n dailCode: \"248\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"2510123\"\r\n },\r\n {\r\n name: \"Sierra Leone\",\r\n code: \"SL\",\r\n dailCode: \"232\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"25123456\"\r\n },\r\n {\r\n name: \"Singapore\",\r\n code: \"SG\",\r\n dailCode: \"65\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"81234567\"\r\n },\r\n {\r\n name: \"Sint Maarten\",\r\n code: \"SX\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"721\"\r\n ],\r\n placeholder: \"7215205678\"\r\n },\r\n {\r\n name: \"Slovakia (Slovensko)\",\r\n code: \"SK\",\r\n dailCode: \"421\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"912123456\"\r\n },\r\n {\r\n name: \"Slovenia (Slovenija)\",\r\n code: \"SI\",\r\n dailCode: \"386\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"31234567\"\r\n },\r\n {\r\n name: \"Solomon Islands\",\r\n code: \"SB\",\r\n dailCode: \"677\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"7421234\"\r\n },\r\n {\r\n name: \"Somalia (Soomaaliya)\",\r\n code: \"SO\",\r\n dailCode: \"252\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"71123456\"\r\n },\r\n {\r\n name: \"South Africa\",\r\n code: \"ZA\",\r\n dailCode: \"27\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"711234567\"\r\n },\r\n {\r\n name: \"South Korea (대한민국)\",\r\n code: \"KR\",\r\n dailCode: \"82\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"1020000000\"\r\n },\r\n {\r\n name: \"South Sudan (جنوب السودان)\",\r\n code: \"SS\",\r\n dailCode: \"211\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"977123456\"\r\n },\r\n {\r\n name: \"Spain (España)\",\r\n code: \"ES\",\r\n dailCode: \"34\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"612345678\"\r\n },\r\n {\r\n name: \"Sri Lanka (ශ්රී ලංකාව)\",\r\n code: \"LK\",\r\n dailCode: \"94\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"712345678\"\r\n },\r\n {\r\n name: \"Sudan (السودان)\",\r\n code: \"SD\",\r\n dailCode: \"249\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"911231234\"\r\n },\r\n {\r\n name: \"Suriname\",\r\n code: \"SR\",\r\n dailCode: \"597\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"7412345\"\r\n },\r\n {\r\n name: \"Svalbard and Jan Mayen\",\r\n code: \"SJ\",\r\n dailCode: \"47\",\r\n priority: 1,\r\n order: 0,\r\n placeholder: \"41234567\"\r\n },\r\n {\r\n name: \"Swaziland\",\r\n code: \"SZ\",\r\n dailCode: \"268\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"76123456\"\r\n },\r\n {\r\n name: \"Sweden (Sverige)\",\r\n code: \"SE\",\r\n dailCode: \"46\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"701234567\"\r\n },\r\n {\r\n name: \"Switzerland (Schweiz)\",\r\n code: \"CH\",\r\n dailCode: \"41\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"781234567\"\r\n },\r\n {\r\n name: \"Syria (سوريا)\",\r\n code: \"SY\",\r\n dailCode: \"963\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"944567890\"\r\n },\r\n {\r\n name: \"Taiwan (台灣)\",\r\n code: \"TW\",\r\n dailCode: \"886\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"912345678\"\r\n },\r\n {\r\n name: \"Tajikistan\",\r\n code: \"TJ\",\r\n dailCode: \"992\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"917123456\"\r\n },\r\n {\r\n name: \"Tanzania\",\r\n code: \"TZ\",\r\n dailCode: \"255\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"621234567\"\r\n },\r\n {\r\n name: \"Thailand (ไทย)\",\r\n code: \"TH\",\r\n dailCode: \"66\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"812345678\"\r\n },\r\n {\r\n name: \"Timor-Leste\",\r\n code: \"TL\",\r\n dailCode: \"670\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"77212345\"\r\n },\r\n {\r\n name: \"Togo\",\r\n code: \"TG\",\r\n dailCode: \"228\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"90112345\"\r\n },\r\n {\r\n name: \"Tokelau\",\r\n code: \"TK\",\r\n dailCode: \"690\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"7290\"\r\n },\r\n {\r\n name: \"Tonga\",\r\n code: \"TO\",\r\n dailCode: \"676\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"7715123\"\r\n },\r\n {\r\n name: \"Trinidad and Tobago\",\r\n code: \"TT\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"868\"\r\n ],\r\n placeholder: \"8682911234\"\r\n },\r\n {\r\n name: \"Tunisia (تونس)\",\r\n code: \"TN\",\r\n dailCode: \"216\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"20123456\"\r\n },\r\n {\r\n name: \"Turkey (Türkiye)\",\r\n code: \"TR\",\r\n dailCode: \"90\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"5012345678\"\r\n },\r\n {\r\n name: \"Turkmenistan\",\r\n code: \"TM\",\r\n dailCode: \"993\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"66123456\"\r\n },\r\n {\r\n name: \"Turks and Caicos Islands\",\r\n code: \"TC\",\r\n dailCode: \"1649\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"6492311234\"\r\n },\r\n {\r\n name: \"Tuvalu\",\r\n code: \"TV\",\r\n dailCode: \"688\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"901234\"\r\n },\r\n {\r\n name: \"U.S. Virgin Islands\",\r\n code: \"VI\",\r\n dailCode: \"1\",\r\n priority: 1,\r\n order: 0,\r\n areaCodes: [\r\n \"340\"\r\n ],\r\n placeholder: \"3406421234\"\r\n },\r\n {\r\n name: \"Uganda\",\r\n code: \"UG\",\r\n dailCode: \"256\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"712345678\"\r\n },\r\n {\r\n name: \"Ukraine (Україна)\",\r\n code: \"UA\",\r\n dailCode: \"380\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"501234567\"\r\n },\r\n {\r\n name: \"United Arab Emirates (الإمارات العربية المتحدة)\",\r\n code: \"AE\",\r\n dailCode: \"971\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"501234567\"\r\n },\r\n {\r\n name: \"United Kingdom\",\r\n code: \"GB\",\r\n dailCode: \"44\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"7400123456\"\r\n },\r\n {\r\n name: \"United States\",\r\n code: \"US\",\r\n dailCode: \"1\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"2015550123\"\r\n },\r\n {\r\n name: \"Uruguay\",\r\n code: \"UY\",\r\n dailCode: \"598\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"94231234\"\r\n },\r\n {\r\n name: \"Uzbekistan (Oʻzbekiston)\",\r\n code: \"UZ\",\r\n dailCode: \"998\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"912345678\"\r\n },\r\n {\r\n name: \"Vanuatu\",\r\n code: \"VU\",\r\n dailCode: \"678\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"5912345\"\r\n },\r\n {\r\n name: \"Vatican City (Città del Vaticano)\",\r\n code: \"VA\",\r\n dailCode: \"39\",\r\n priority: 1,\r\n order: 0,\r\n placeholder: \"3123456789\"\r\n },\r\n {\r\n name: \"Venezuela\",\r\n code: \"VE\",\r\n dailCode: \"58\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"4121234567\"\r\n },\r\n {\r\n name: \"Vietnam (Việt Nam)\",\r\n code: \"VN\",\r\n dailCode: \"84\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"912345678\"\r\n },\r\n {\r\n name: \"Wallis and Futuna\",\r\n code: \"WF\",\r\n dailCode: \"681\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"821234\"\r\n },\r\n {\r\n name: \"Yemen (اليمن)\",\r\n code: \"YE\",\r\n dailCode: \"967\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"712345678\"\r\n },\r\n {\r\n name: \"Zambia\",\r\n code: \"ZM\",\r\n dailCode: \"260\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"955123456\"\r\n },\r\n {\r\n name: \"Zimbabwe\",\r\n code: \"ZW\",\r\n dailCode: \"263\",\r\n priority: 0,\r\n order: 0,\r\n placeholder: \"712345678\"\r\n },\r\n {\r\n name: \"Åland Islands\",\r\n code: \"AX\",\r\n dailCode: \"358\",\r\n priority: 1,\r\n order: 0,\r\n placeholder: \"412345678\"\r\n }\r\n];\r\n","import { Injectable } from \"@angular/core\";\r\nimport { getExampleNumber, parsePhoneNumber, PhoneNumber } from \"libphonenumber-js/mobile\";\r\nimport examples from \"libphonenumber-js/mobile/examples\";\r\nimport { COUNTRIES } from \"./countries.const\";\r\nimport { Country } from \"./country\";\r\nimport { ISO2 } from \"./iso2.type\";\r\nimport { Mobile } from \"./mobile\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class Phone {\r\n\r\n parse(phoneNumber: string, countryCode?: ISO2): PhoneNumber | undefined {\r\n try {\r\n return parsePhoneNumber(phoneNumber, countryCode);\r\n } catch (e) {\r\n return undefined;\r\n }\r\n }\r\n\r\n getPhoneNumberObject(number: string): Mobile | undefined {\r\n const parsedNumber: PhoneNumber | undefined = this.parse(number);\r\n if (parsedNumber) {\r\n const dailCode: string = parsedNumber.countryCallingCode;\r\n const code: ISO2 = this.getCountryIsoCode(dailCode, parsedNumber) as ISO2;\r\n const nationalNumber: string = parsedNumber.nationalNumber;\r\n const internationalNumber: string = parsedNumber.format(\"E.164\");\r\n const placeholder = this.getPlaceholder(code);\r\n const name: string = this.getCountryByDailCode(dailCode, parsedNumber)?.name ?? \"\";\r\n return {dailCode, code, nationalNumber, internationalNumber, placeholder, name, priority: 0, order: 0};\r\n }\r\n return;\r\n }\r\n\r\n format(phoneNumber: string, countryCode: ISO2, numberFormat: \"E.164\" | \"INTERNATIONAL\" | \"NATIONAL\"): string {\r\n const number = this.parse(phoneNumber, countryCode);\r\n\r\n if (number) {\r\n return number.format(numberFormat);\r\n }\r\n return \"\";\r\n }\r\n\r\n validate(number: string): boolean {\r\n try {\r\n const parsedNumber = parsePhoneNumber(number);\r\n // Check if it's a mobile number type\r\n if (parsedNumber.getType() !== \"MOBILE\") {\r\n return false;\r\n }\r\n return parsedNumber.isValid();\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n getPlaceholder(countryCode: ISO2): string {\r\n try {\r\n const exampleNumber = getExampleNumber(countryCode, examples);\r\n return exampleNumber ? (countryCode === \"SA\" ? \"050 123 4567\" : exampleNumber.formatNational()) : \"\";\r\n } catch (e) {\r\n return \"\";\r\n }\r\n }\r\n\r\n getCountryIsoCode(dailCode: string, number: PhoneNumber): string {\r\n return this.getCountryByDailCode(dailCode, number)?.code ?? \"\";\r\n }\r\n\r\n getCountryByDailCode(dailCode: string | undefined, number: PhoneNumber): Country | undefined {\r\n // Will use this to match area code from the first numbers\r\n const rawNumber = number.nationalNumber;\r\n // List of all countries with dailCode (can be more than one. e.x. US, CA, DO, PR all have +1 dailCode)\r\n const countries: Country[] = COUNTRIES.filter((c: Country) => c.dailCode === dailCode?.toString());\r\n // Main country is the country, which has no areaCodes specified in country-code.ts file.\r\n const mainCountry: Country | undefined = countries.find((c: Country) => c.areaCodes === undefined);\r\n // Secondary countries are all countries, which have areaCodes specified in country-code.ts file.\r\n const secondaryCountries: Country[] = countries.filter((c: Country) => c.areaCodes !== undefined);\r\n let matchedCountry: Country | undefined = mainCountry ? mainCountry : undefined;\r\n\r\n /*\r\n Iterate over each secondary country and check if nationalNumber starts with any of areaCodes available.\r\n If no matches found, fallback to the main country.\r\n */\r\n secondaryCountries.forEach((country) => {\r\n if (country && country.areaCodes) {\r\n country.areaCodes.forEach((areaCode) => {\r\n if (rawNumber.startsWith(areaCode)) {\r\n matchedCountry = country;\r\n }\r\n });\r\n }\r\n });\r\n\r\n return matchedCountry;\r\n }\r\n}\r\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from \"@angular/cdk/overlay\";\r\nimport { NgClass, NgOptimizedImage } from \"@angular/common\";\r\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, EffectRef, inject, input, InputSignal, OnDestroy, Signal, signal, WritableSignal } from \"@angular/core\";\r\nimport { toSignal } from \"@angular/core/rxjs-interop\";\r\nimport { AbstractControl, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, ValidationErrors, Validator } from \"@angular/forms\";\r\nimport { MatFormField, MatPrefix } from \"@angular/material/form-field\";\r\nimport { MatInput, MatInputModule } from \"@angular/material/input\";\r\nimport { ControlBase } from \"../base/control-base\";\r\nimport { COUNTRIES, DEFAULT_COUNTRY } from \"./countries.const\";\r\nimport { Country } from \"./country\";\r\nimport { ISO2 } from \"./iso2.type\";\r\nimport { Mobile } from \"./mobile\";\r\nimport { Phone } from \"./phone\";\r\n\r\n/**\r\n * `<iss-ctrl-mobile>` — international phone number with a country selector.\r\n *\r\n * The number is validated against the selected country and stored in its international form.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-mobile formControlName=\"mobile\" [preferredCountries]=\"['SA', 'AE']\">\r\n * <label>Mobile</label>\r\n * </iss-ctrl-mobile>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * | Property | Type | Default | Description |\r\n * | --- | --- | --- | --- |\r\n * | `preferredCountries` | `ISO2[]` | `[\"SA\"]` | Countries pinned to the top of the country list. |\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)`\r\n *\r\n * Projects `<label>` into the floating label; omit it to render the control without one.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-mobile\",\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n ReactiveFormsModule,\r\n NgClass,\r\n CdkConnectedOverlay,\r\n CdkOverlayOrigin,\r\n MatFormField,\r\n MatInput,\r\n MatPrefix,\r\n NgOptimizedImage,\r\n MatInputModule,\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: MobileControl, multi: true },\r\n { provide: NG_VALIDATORS, useExisting: MobileControl, multi: true }\r\n ],\r\n template: `\r\n <mat-form-field floatLabel=\"auto\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n @if (hasLabel()) {\r\n <mat-label class=\"fs-16 fc-black\">\r\n <ng-content select=\"label\"></ng-content>\r\n </mat-label>\r\n }\r\n <div class=\"d-inline-flex align-items-center gap-1 country-flag\" matPrefix (click)=\"toggleCountryCodeMenu()\">\r\n <img\r\n ngSrc=\"./flags/{{selectedCountry().code.toLowerCase()}}.svg\"\r\n width=\"20\"\r\n height=\"20\"\r\n [alt]=\"selectedCountry().code.toLowerCase()\"\r\n class=\"country-flag--image\"\r\n [priority]=\"true\"\r\n >\r\n <ds-icon icon=\"arrow-down\" class=\"fs-12 fc-dark-gray\"></ds-icon>\r\n </div>\r\n <input\r\n matInput\r\n type=\"tel\"\r\n autocomplete=\"off\"\r\n (blur)=\"markAsTouched()\"\r\n (keydown)=\"onInput($event)\"\r\n (input)=\"emit()\"\r\n [formControl]=\"ctrl\"\r\n [readonly]=\"readonly()\"\r\n [placeholder]=\"selectedCountry().placeholder\"\r\n />\r\n </mat-form-field>\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"closeCountryCodeMenu()\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n >\r\n <div class=\"country-dropdown bc-white box-shadow p-2\">\r\n <div class=\"search-container\">\r\n <mat-form-field>\r\n <input matInput id=\"country-search-box\" [formControl]=\"searchInput\" (click)=\"$event.stopPropagation()\"/>\r\n </mat-form-field>\r\n </div>\r\n <ul class=\"country-list\">\r\n @for (country of filteredCountries(); track $index) {\r\n <li\r\n #countryEl\r\n [ngClass]=\"country.order > 1 ? 'preferredCounty' : ''\"\r\n class=\"d-flex align-items-center gap-2 cursor-pointer p-2\"\r\n (click)=\"onSelectCountry(country)\"\r\n >\r\n @defer (on viewport(countryEl)) {\r\n <img ngSrc=\"./flags/{{country.code.toLowerCase()}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\">\r\n }\r\n <span class=\"fs-12 fc-dark-gray\">(+{{ country.dailCode }})</span>\r\n <span class=\"fs-12 fc-black\">{{ country.name }}</span>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </ng-template>\r\n `,\r\n styles: `\r\n .country-flag {\r\n border-inline-end: var(--input-border);\r\n padding-inline-end: .5rem;\r\n margin-inline-end: .5rem;\r\n cursor: pointer;\r\n }\r\n `\r\n})\r\nexport class MobileControl extends ControlBase implements OnDestroy, Validator {\r\n phoneService: Phone = inject(Phone);\r\n isOpen: WritableSignal<boolean> = signal(false);\r\n selectedCountry: WritableSignal<Country> = signal<Country>(DEFAULT_COUNTRY);\r\n /**\r\n * ISO-2 country codes pinned to the top of the country list; the first one is preselected.\r\n */\r\n preferredCountries: InputSignal<ISO2[]> = input<ISO2[]>([\"SA\"]);\r\n searchInput: FormControl = new FormControl(\"\");\r\n filteredCountries: Signal<Country[]> = computed(() => this.#searchInCountries());\r\n #searchQuery: Signal<string> = toSignal(this.searchInput.valueChanges);\r\n #disabledEffect: EffectRef = effect(() => {\r\n if (this.disabled()) {\r\n this.ctrl.disable();\r\n } else {\r\n this.ctrl.enable();\r\n }\r\n });\r\n\r\n override writeValue(value: string | null) {\r\n if (!value) {\r\n this.selectedCountry.set(DEFAULT_COUNTRY);\r\n this.ctrl.setValue(null, { emitEvent: false });\r\n return;\r\n }\r\n\r\n const mobileObject: Mobile | undefined = this.phoneService.getPhoneNumberObject(value);\r\n if (mobileObject) {\r\n this.selectedCountry.set(mobileObject);\r\n }\r\n this.ctrl.setValue(mobileObject?.nationalNumber ?? value, { emitEvent: false });\r\n }\r\n\r\n emit() {\r\n const nationalNumber: string | null = this.ctrl.getRawValue();\r\n if (!nationalNumber) {\r\n this.propagateValue(null);\r\n this.emitOnChangeEvent(this.selectedCountry());\r\n return;\r\n }\r\n\r\n const mobileInput = `+${this.selectedCountry().dailCode}${nationalNumber}`;\r\n const numberObject: Mobile | undefined = this.phoneService.getPhoneNumberObject(mobileInput);\r\n if (numberObject) {\r\n this.selectedCountry.set(numberObject);\r\n this.propagateValue(`+${numberObject.dailCode}${numberObject.nationalNumber}`);\r\n } else {\r\n this.propagateValue(mobileInput);\r\n }\r\n this.emitOnChangeEvent(this.selectedCountry());\r\n }\r\n\r\n override validate(control: AbstractControl): ValidationErrors | null {\r\n if (!control.getRawValue()) {\r\n return null;\r\n }\r\n\r\n const error: any = { invalidPhoneNumber: { accepted: this.selectedCountry().placeholder, input: control.getRawValue() } };\r\n const isValid: boolean = this.phoneService.validate(control.getRawValue());\r\n if (isValid) {\r\n return null;\r\n }\r\n\r\n return error;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#disabledEffect.destroy();\r\n }\r\n\r\n protected onInput(event: KeyboardEvent) {\r\n const allowedChars = /[0-9+\\-()]/;\r\n const allowedCtrlChars = /[axcv]/; // Allows copy-pasting\r\n const allowedOtherKeys = [\r\n \"ArrowLeft\",\r\n \"ArrowUp\",\r\n \"ArrowRight\",\r\n \"ArrowDown\",\r\n \"Home\",\r\n \"End\",\r\n \"Insert\",\r\n \"Delete\",\r\n \"Backspace\",\r\n ];\r\n if (!allowedChars.test(event.key) && !(event.ctrlKey && allowedCtrlChars.test(event.key)) && !allowedOtherKeys.includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n protected onSelectCountry(country: Country) {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n this.selectedCountry.set(country);\r\n this.searchInput.setValue(\"\");\r\n this.closeCountryCodeMenu();\r\n\r\n const nationalNumber: string | null = this.ctrl.getRawValue();\r\n if (!nationalNumber) {\r\n this.propagateValue(null);\r\n this.emitOnChangeEvent(this.selectedCountry());\r\n return;\r\n }\r\n\r\n const mobileInput = `+${country.dailCode}${nationalNumber}`;\r\n this.propagateValue(mobileInput);\r\n this.emitOnChangeEvent(this.selectedCountry());\r\n }\r\n\r\n protected closeCountryCodeMenu() {\r\n this.isOpen.set(false);\r\n }\r\n\r\n protected toggleCountryCodeMenu() {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n this.isOpen.update((isOpen: boolean) => !isOpen);\r\n }\r\n\r\n #sortCountries(): Country[] {\r\n // copies, never the shared COUNTRIES entries: order is per instance and must not leak globally\r\n return COUNTRIES.map((country: Country): Country => {\r\n const preferredIndex: number = this.preferredCountries().indexOf(country.code);\r\n if (preferredIndex === -1) {\r\n return { ...country };\r\n }\r\n return {\r\n ...country,\r\n order: country.priority + (-1 * (preferredIndex - this.preferredCountries().length)) * 100,\r\n };\r\n }).sort((a: Country, b: Country) => b.order - a.order);\r\n }\r\n\r\n #searchInCountries(): Country[] {\r\n const query: string = (this.#searchQuery() ?? \"\").toLowerCase();\r\n if (!query) {\r\n return this.#sortCountries();\r\n }\r\n return this.#sortCountries().filter((country: Country) => {\r\n return (\r\n country.code.toLowerCase().includes(query)\r\n || country.name.toLowerCase().includes(query)\r\n || country.dailCode.toLowerCase().includes(query)\r\n );\r\n });\r\n }\r\n}\r\n","import { PlateLetter } from \"./plate-letter\";\r\n\r\nexport const PLATE_LETTERS: PlateLetter[] = [\r\n {label: {ar: \"أ\", en: \"A\"}, value: \"A\"},\r\n {label: {ar: \"ب\", en: \"B\"}, value: \"B\"},\r\n {label: {ar: \"ح\", en: \"J\"}, value: \"J\"},\r\n {label: {ar: \"د\", en: \"D\"}, value: \"D\"},\r\n {label: {ar: \"ر\", en: \"R\"}, value: \"R\"},\r\n {label: {ar: \"س\", en: \"S\"}, value: \"S\"},\r\n {label: {ar: \"ص\", en: \"X\"}, value: \"X\"},\r\n {label: {ar: \"ط\", en: \"T\"}, value: \"T\"},\r\n {label: {ar: \"ع\", en: \"E\"}, value: \"E\"},\r\n {label: {ar: \"ق\", en: \"G\"}, value: \"G\"},\r\n {label: {ar: \"ك\", en: \"K\"}, value: \"K\"},\r\n {label: {ar: \"ل\", en: \"L\"}, value: \"L\"},\r\n {label: {ar: \"م\", en: \"Z\"}, value: \"Z\"},\r\n {label: {ar: \"ن\", en: \"N\"}, value: \"N\"},\r\n {label: {ar: \"هـ\", en: \"H\"}, value: \"H\"},\r\n {label: {ar: \"و\", en: \"U\"}, value: \"U\"},\r\n {label: {ar: \"ي\", en: \"V\"}, value: \"V\"}\r\n];\r\n","import { Component, ElementRef, inject, signal } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { ControlBase } from \"../base/control-base\";\r\nimport { PLATE_LETTERS } from \"./plate-letters.const\";\r\n\r\n/**\r\n * `<iss-ctrl-plate-number>` — Saudi vehicle plate, entered as digits and letters in both\r\n * Arabic and English.\r\n *\r\n * Typing into one script fills the matching cell in the other automatically, and letters are\r\n * validated against the allowed plate alphabet.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-plate-number formControlName=\"plate\" [readonly]=\"false\"/>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * None — the control is configured entirely through the inherited properties.\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)`\r\n *\r\n * Does not project a label — the field label is rendered by the wrapping `iss-field-*`.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-plate-number\",\r\n imports: [\r\n ReactiveFormsModule\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: PlateControl, multi: true }\r\n ],\r\n template: `\r\n <div class=\"plate-container\">\r\n <div class=\"section numbers-section\">\r\n <div class=\"digit-row\">\r\n @for (num of numbersAr(); track $index) {\r\n <input\r\n type=\"text\"\r\n class=\"plate-input number-input\"\r\n maxlength=\"1\"\r\n [attr.data-plate-input]=\"'num-ar-' + $index\"\r\n [value]=\"num\"\r\n [readonly]=\"readonly()\"\r\n placeholder=\"١\"\r\n (keydown)=\"preventNonDigits($event, 'ar')\"\r\n (keyup)=\"preventNonDigits($event, 'ar')\"\r\n (input)=\"onNumberInput($index, $event, 'ar')\"\r\n />\r\n }\r\n </div>\r\n\r\n <div class=\"digit-row\">\r\n @for (num of numbersEn(); track $index) {\r\n <input\r\n type=\"text\"\r\n class=\"plate-input number-input\"\r\n maxlength=\"1\"\r\n [attr.data-plate-input]=\"'num-en-' + $index\"\r\n [value]=\"num\"\r\n [readonly]=\"readonly()\"\r\n placeholder=\"1\"\r\n (keydown)=\"preventNonDigits($event, 'en')\"\r\n (keyup)=\"preventNonDigits($event, 'en')\"\r\n (input)=\"onNumberInput($index, $event, 'en')\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"section emblem-section\">\r\n <svg class=\"emblem-svg\" viewBox=\"0 0 17 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M10.8072 16.8744C11.4633 16.178 11.3244 15.3914 10.7996 15.3825C10.9872 15.9606 10.5562 16.3344 10.3922 16.5266C9.97894 16.1712 9.55086 15.7761 9.10778 15.3694C11.2695 13.5812 13.6354 11.995 16.7263 11.9452C13.3983 10.7499 10.7417 12.7815 8.4925 14.8084C6.24308 12.7815 3.58672 10.7499 0.257812 11.9452C3.34944 11.995 5.71507 13.581 7.87722 15.3694C7.43329 15.7761 7.00564 16.1712 6.59172 16.5266C6.42902 16.3344 5.99777 15.9606 6.18435 15.3825C5.65992 15.3914 5.52089 16.178 6.17758 16.8744C5.91495 17.0931 5.48962 17.4631 5.15113 17.5518C4.89082 17.6199 4.68185 17.4846 4.63473 17.2026C4.53542 16.6069 3.61271 16.6959 3.72554 17.5372C3.82907 18.3044 4.76066 18.6391 5.55892 18.2837C5.87565 18.1424 6.3107 17.7413 6.66778 17.45C6.83111 17.641 7.26215 18.0145 7.07494 18.5935C7.59979 18.5838 7.7384 17.798 7.08234 17.1005C7.54845 16.7028 8.01625 16.2927 8.4925 15.887C8.96833 16.2925 9.43634 16.7028 9.90288 17.1005C9.24639 17.798 9.385 18.5838 9.91006 18.5935C9.72285 18.0145 10.1539 17.6414 10.3168 17.45C10.6745 17.7413 11.1091 18.1424 11.4263 18.2837C12.2246 18.6391 13.1555 18.3044 13.259 17.5372C13.3719 16.6959 12.4496 16.6069 12.3494 17.2026C12.3023 17.4846 12.094 17.6196 11.8332 17.5518C11.4948 17.4631 11.0696 17.0931 10.8072 16.8744ZM6.72504 5.72093C6.22365 7.04637 6.19597 8.53894 6.9169 10.1805C6.80195 8.47576 7.17594 7.06771 7.8713 6.0066L8.01815 7.46832H7.84679L8.01815 9.17958H7.84679L8.01815 10.8904H7.84679L8.01794 12.5991L7.53366 13.0819H8.4925H9.45156L8.96685 12.5991L9.13842 10.8904H8.96685L9.13842 9.17958H8.96685L9.13842 7.46832H8.96685L9.11391 6.0066C9.80906 7.06771 10.1833 8.47682 10.0683 10.1805C10.7886 8.53894 10.7616 7.047 10.2602 5.72093C11.1115 6.72478 11.7701 7.89851 12.0661 9.36572C12.3733 7.50466 11.848 5.98568 10.8852 4.8071C11.8174 5.47943 12.6184 6.33157 13.1785 7.48396C13.048 5.72072 12.1559 4.57742 10.927 3.75824C11.989 4.1054 12.8561 4.68645 13.6343 5.71798C13.1139 3.8884 11.9801 3.15564 10.575 2.74362C11.5332 2.67368 12.4386 2.78165 13.3347 3.33988C12.3621 2.02839 11.0565 1.81055 9.73257 1.95634C10.2893 1.67279 10.9158 1.53101 11.5888 1.63137C10.8302 1.07187 9.81836 1.01651 8.95227 1.48812L8.4925 0.328125L8.0321 1.48749C7.1658 1.01651 6.15476 1.07166 5.39623 1.63137C6.06877 1.53122 6.69483 1.67279 7.25179 1.95634C5.92826 1.81055 4.62311 2.0286 3.6499 3.33988C4.54662 2.78165 5.45137 2.67368 6.41001 2.74362C5.00534 3.15564 3.87112 3.8884 3.35113 5.71798C4.12868 4.68666 4.99625 4.1054 6.05842 3.75824C4.8287 4.57721 3.93704 5.72072 3.80625 7.48396C4.36618 6.33157 5.16782 5.47943 6.09962 4.8071C5.13676 5.98568 4.61149 7.50466 4.91871 9.36572C5.21494 7.89851 5.87354 6.72478 6.72504 5.72093Z\"\r\n fill=\"#1D252D\"\r\n />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"section letters-section\">\r\n <div class=\"arabic-row\" dir=\"rtl\">\r\n @for (letter of lettersAr(); track $index) {\r\n <div class=\"input-wrapper\">\r\n <input\r\n type=\"text\"\r\n class=\"plate-input letter-input\"\r\n maxlength=\"1\"\r\n [attr.data-plate-input]=\"'let-ar-' + $index\"\r\n [class.invalid]=\"letterErrors()[$index]\"\r\n [value]=\"letter\"\r\n [readonly]=\"readonly()\"\r\n placeholder=\"س\"\r\n (input)=\"onLetterInput($index, $event, 'ar')\"\r\n />\r\n @if (letterErrors()[$index]) {\r\n <span class=\"error-tooltip\">Invalid</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"english-row\" dir=\"rtl\">\r\n @for (letter of lettersEn(); track $index) {\r\n <div class=\"input-wrapper\">\r\n <input\r\n type=\"text\"\r\n class=\"plate-input letter-input\"\r\n maxlength=\"1\"\r\n [attr.data-plate-input]=\"'let-en-' + $index\"\r\n [class.invalid]=\"letterErrors()[$index]\"\r\n [value]=\"letter\"\r\n [readonly]=\"readonly()\"\r\n placeholder=\"S\"\r\n (input)=\"onLetterInput($index, $event, 'en')\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"ksa-strip\">\r\n <svg class=\"mini-emblem\" viewBox=\"0 0 17 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M10.8072 16.8744C11.4633 16.178 11.3244 15.3914 10.7996 15.3825C10.9872 15.9606 10.5562 16.3344 10.3922 16.5266C9.97894 16.1712 9.55086 15.7761 9.10778 15.3694C11.2695 13.5812 13.6354 11.995 16.7263 11.9452C13.3983 10.7499 10.7417 12.7815 8.4925 14.8084C6.24308 12.7815 3.58672 10.7499 0.257812 11.9452C3.34944 11.995 5.71507 13.581 7.87722 15.3694C7.43329 15.7761 7.00564 16.1712 6.59172 16.5266C6.42902 16.3344 5.99777 15.9606 6.18435 15.3825C5.65992 15.3914 5.52089 16.178 6.17758 16.8744C5.91495 17.0931 5.48962 17.4631 5.15113 17.5518C4.89082 17.6199 4.68185 17.4846 4.63473 17.2026C4.53542 16.6069 3.61271 16.6959 3.72554 17.5372C3.82907 18.3044 4.76066 18.6391 5.55892 18.2837C5.87565 18.1424 6.3107 17.7413 6.66778 17.45C6.83111 17.641 7.26215 18.0145 7.07494 18.5935C7.59979 18.5838 7.7384 17.798 7.08234 17.1005C7.54845 16.7028 8.01625 16.2927 8.4925 15.887C8.96833 16.2925 9.43634 16.7028 9.90288 17.1005C9.24639 17.798 9.385 18.5838 9.91006 18.5935C9.72285 18.0145 10.1539 17.6414 10.3168 17.45C10.6745 17.7413 11.1091 18.1424 11.4263 18.2837C12.2246 18.6391 13.1555 18.3044 13.259 17.5372C13.3719 16.6959 12.4496 16.6069 12.3494 17.2026C12.3023 17.4846 12.094 17.6196 11.8332 17.5518C11.4948 17.4631 11.0696 17.0931 10.8072 16.8744ZM6.72504 5.72093C6.22365 7.04637 6.19597 8.53894 6.9169 10.1805C6.80195 8.47576 7.17594 7.06771 7.8713 6.0066L8.01815 7.46832H7.84679L8.01815 9.17958H7.84679L8.01815 10.8904H7.84679L8.01794 12.5991L7.53366 13.0819H8.4925H9.45156L8.96685 12.5991L9.13842 10.8904H8.96685L9.13842 9.17958H8.96685L9.13842 7.46832H8.96685L9.11391 6.0066C9.80906 7.06771 10.1833 8.47682 10.0683 10.1805C10.7886 8.53894 10.7616 7.047 10.2602 5.72093C11.1115 6.72478 11.7701 7.89851 12.0661 9.36572C12.3733 7.50466 11.848 5.98568 10.8852 4.8071C11.8174 5.47943 12.6184 6.33157 13.1785 7.48396C13.048 5.72072 12.1559 4.57742 10.927 3.75824C11.989 4.1054 12.8561 4.68645 13.6343 5.71798C13.1139 3.8884 11.9801 3.15564 10.575 2.74362C11.5332 2.67368 12.4386 2.78165 13.3347 3.33988C12.3621 2.02839 11.0565 1.81055 9.73257 1.95634C10.2893 1.67279 10.9158 1.53101 11.5888 1.63137C10.8302 1.07187 9.81836 1.01651 8.95227 1.48812L8.4925 0.328125L8.0321 1.48749C7.1658 1.01651 6.15476 1.07166 5.39623 1.63137C6.06877 1.53122 6.69483 1.67279 7.25179 1.95634C5.92826 1.81055 4.62311 2.0286 3.6499 3.33988C4.54662 2.78165 5.45137 2.67368 6.41001 2.74362C5.00534 3.15564 3.87112 3.8884 3.35113 5.71798C4.12868 4.68666 4.99625 4.1054 6.05842 3.75824C4.8287 4.57721 3.93704 5.72072 3.80625 7.48396C4.36618 6.33157 5.16782 5.47943 6.09962 4.8071C5.13676 5.98568 4.61149 7.50466 4.91871 9.36572C5.21494 7.89851 5.87354 6.72478 6.72504 5.72093Z\"\r\n fill=\"#1D252D\"\r\n />\r\n </svg>\r\n <span class=\"ksa-text\">KSA</span>\r\n </div>\r\n </div>\r\n `,\r\n styles: `\r\n .plate-container {\r\n width: 600px;\r\n height: 130px;\r\n border: 4px solid #1D252D;\r\n border-radius: 10px;\r\n background: white;\r\n display: flex;\r\n box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);\r\n overflow: hidden;\r\n position: relative;\r\n }\r\n\r\n /* General Section Styling */\r\n .section {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n /* Left Section: Numbers/Asterisks */\r\n .numbers-section {\r\n flex: 2;\r\n padding: 0 10px;\r\n }\r\n\r\n .digit-row {\r\n display: flex;\r\n justify-content: space-between;\r\n width: 80%;\r\n font-size: 38px;\r\n line-height: 1;\r\n color: #1D252D;\r\n margin: 2px 0;\r\n }\r\n\r\n /* Middle Section: Emblem */\r\n .emblem-section {\r\n flex: 1.2;\r\n padding: 10px;\r\n }\r\n\r\n .emblem-svg {\r\n width: 100%;\r\n height: 100%;\r\n max-height: 90px;\r\n }\r\n\r\n /* Right Section: Letters */\r\n .letters-section {\r\n flex: 1.8;\r\n border-right: 2px solid #1D252D;\r\n padding: 0 10px;\r\n }\r\n\r\n .arabic-row {\r\n font-family: 'Noto Sans Arabic', sans-serif;\r\n font-size: 32px;\r\n display: flex;\r\n justify-content: space-around;\r\n width: 100%;\r\n margin-bottom: 5px;\r\n color: #1D252D;\r\n }\r\n\r\n .english-row {\r\n font-size: 38px;\r\n display: flex;\r\n justify-content: space-around;\r\n width: 100%;\r\n color: #1D252D;\r\n }\r\n\r\n /* Far Right: KSA Strip */\r\n .ksa-strip {\r\n width: 50px;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 10px 0;\r\n background-color: #fff; /* or specific reflective white */\r\n }\r\n\r\n .mini-emblem {\r\n width: 25px;\r\n height: auto;\r\n }\r\n\r\n .ksa-text {\r\n writing-mode: vertical-rl;\r\n text-orientation: upright;\r\n font-weight: 900;\r\n font-size: 16px;\r\n letter-spacing: 2px;\r\n color: #1D252D;\r\n margin-top: auto;\r\n margin-bottom: 5px;\r\n }\r\n\r\n .plate-input {\r\n background: transparent;\r\n border: none;\r\n text-align: center;\r\n font-family: inherit;\r\n font-size: inherit;\r\n font-weight: bold;\r\n color: #1D252D;\r\n width: 100%; /* Fill the flex/grid item */\r\n padding: 0;\r\n margin: 0;\r\n outline: none; /* Remove blue outline on focus */\r\n }\r\n\r\n /* Optional: Add a subtle underline or color change when user clicks the input */\r\n .plate-input:focus {\r\n border-bottom: 2px solid #1D252D;\r\n }\r\n\r\n /* Adjusting the container flex settings to ensure inputs fit */\r\n .digit-row, .arabic-row, .english-row {\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n }\r\n\r\n /* Specific sizing for numbers to ensure they match plate proportions */\r\n .number-input {\r\n /* Adjust width based on your container size, roughly 20-25% */\r\n flex: 1;\r\n }\r\n\r\n /* Specific sizing for letters */\r\n .letter-input {\r\n flex: 1;\r\n }\r\n\r\n /* Placeholder styling to look like a ghost plate */\r\n .plate-input::placeholder {\r\n color: #ccc;\r\n opacity: 1;\r\n }\r\n\r\n .input-wrapper {\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n flex: 1;\r\n }\r\n\r\n .error-tooltip {\r\n position: absolute;\r\n bottom: -15px;\r\n font-size: 10px;\r\n color: red;\r\n white-space: nowrap;\r\n }\r\n\r\n .plate-input.invalid {\r\n color: red;\r\n }\r\n `,\r\n})\r\nexport class PlateControl extends ControlBase {\r\n numbersAr = signal<string[]>(Array(4).fill(\"\"));\r\n numbersEn = signal<string[]>(Array(4).fill(\"\"));\r\n lettersAr = signal<string[]>(Array(3).fill(\"\"));\r\n lettersEn = signal<string[]>(Array(3).fill(\"\"));\r\n letterErrors = signal<boolean[]>(Array(3).fill(false));\r\n #host: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n override writeValue(value: string | null) {\r\n if (!value) {\r\n this.#resetPlate();\r\n return;\r\n }\r\n\r\n const parts = value.split(\"-\");\r\n const letters = parts[0]?.split(\"\") || [];\r\n const numbers = parts[1]?.split(\"\") || [];\r\n\r\n // Initialize letters\r\n const lAr: string[] = [];\r\n const lEn: string[] = [];\r\n for (let i = 0; i < 3; i++) {\r\n const char = letters[i] || \"\";\r\n if (char) {\r\n const plateLetter = PLATE_LETTERS.find(l => l.value === char || l.label.en === char || l.label.ar === char);\r\n if (plateLetter) {\r\n lAr.push(plateLetter.label.ar);\r\n lEn.push(plateLetter.label.en);\r\n } else {\r\n lAr.push(\"\");\r\n lEn.push(\"\");\r\n }\r\n } else {\r\n lAr.push(\"\");\r\n lEn.push(\"\");\r\n }\r\n }\r\n this.lettersAr.set(lAr);\r\n this.lettersEn.set(lEn);\r\n\r\n // Initialize numbers\r\n const nAr: string[] = [];\r\n const nEn: string[] = [];\r\n for (let i = 0; i < 4; i++) {\r\n const char = numbers[i] || \"\";\r\n if (char) {\r\n nAr.push(this.convertDigit(char, \"ar\"));\r\n nEn.push(this.convertDigit(char, \"en\"));\r\n } else {\r\n nAr.push(\"\");\r\n nEn.push(\"\");\r\n }\r\n }\r\n this.numbersAr.set(nAr);\r\n this.numbersEn.set(nEn);\r\n }\r\n\r\n onNumberInput(index: number, event: Event, lang: \"ar\" | \"en\") {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n const input = event.target as HTMLInputElement;\r\n let value = input.value;\r\n\r\n // Allow only numbers\r\n if (!/^[0-9\\u0660-\\u0669]*$/.test(value)) {\r\n return;\r\n }\r\n\r\n input.value = lang === \"ar\" ? this.numbersAr()[index] : this.numbersEn()[index];\r\n\r\n // Take only the last character if multiple characters are entered\r\n if (value.length > 1) {\r\n value = value.slice(-1);\r\n input.value = value;\r\n }\r\n\r\n if (!value) {\r\n const newAr = [...this.numbersAr()];\r\n const newEn = [...this.numbersEn()];\r\n newAr[index] = \"\";\r\n newEn[index] = \"\";\r\n this.numbersAr.set(newAr);\r\n this.numbersEn.set(newEn);\r\n this.emitPlate();\r\n return;\r\n }\r\n\r\n const arDigits = [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"];\r\n const enDigits = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\r\n\r\n let digitIndex = enDigits.indexOf(value);\r\n\r\n if (digitIndex === -1) {\r\n digitIndex = arDigits.indexOf(value);\r\n }\r\n\r\n const newAr = [...this.numbersAr()];\r\n const newEn = [...this.numbersEn()];\r\n\r\n if (digitIndex !== -1) {\r\n newAr[index] = arDigits[digitIndex];\r\n newEn[index] = enDigits[digitIndex];\r\n\r\n // Focus next\r\n if (index < 3) {\r\n this.focusInput(`num-${lang}-${index + 1}`);\r\n } else {\r\n this.focusInput(`let-${lang}-0`);\r\n }\r\n } else {\r\n // Should not happen due to regex check, but safe fallback\r\n newAr[index] = \"\";\r\n newEn[index] = \"\";\r\n }\r\n\r\n this.numbersAr.set(newAr);\r\n this.numbersEn.set(newEn);\r\n this.emitPlate();\r\n }\r\n\r\n onLetterInput(index: number, event: Event, lang: \"ar\" | \"en\") {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n const input = event.target as HTMLInputElement;\r\n let value = input.value;\r\n\r\n if (!value) {\r\n const newAr = [...this.lettersAr()];\r\n const newEn = [...this.lettersEn()];\r\n const newErrors = [...this.letterErrors()];\r\n newAr[index] = \"\";\r\n newEn[index] = \"\";\r\n newErrors[index] = false;\r\n this.lettersAr.set(newAr);\r\n this.lettersEn.set(newEn);\r\n this.letterErrors.set(newErrors);\r\n this.emitPlate();\r\n return;\r\n }\r\n\r\n // Take only the last character\r\n if (value.length > 1) {\r\n value = value.slice(-1);\r\n input.value = value;\r\n }\r\n\r\n const plateLetter = PLATE_LETTERS.find(l =>\r\n l.value === value.toUpperCase() ||\r\n l.label.en === value.toUpperCase() ||\r\n l.label.ar === value\r\n );\r\n\r\n const newAr = [...this.lettersAr()];\r\n const newEn = [...this.lettersEn()];\r\n const newErrors = [...this.letterErrors()];\r\n\r\n if (plateLetter) {\r\n newAr[index] = plateLetter.label.ar;\r\n newEn[index] = plateLetter.label.en;\r\n newErrors[index] = false;\r\n\r\n // Focus next\r\n if (index < 2) {\r\n this.focusInput(`let-${lang}-${index + 1}`);\r\n } else {\r\n this.focusInput(`num-${lang}-0`);\r\n }\r\n } else {\r\n // Show error\r\n if (lang === \"ar\") {\r\n newAr[index] = value;\r\n newEn[index] = \"\"; // Or keep previous?\r\n } else {\r\n newEn[index] = value;\r\n newAr[index] = \"\";\r\n }\r\n newErrors[index] = true;\r\n }\r\n\r\n this.lettersAr.set(newAr);\r\n this.lettersEn.set(newEn);\r\n this.letterErrors.set(newErrors);\r\n this.emitPlate();\r\n }\r\n\r\n protected preventNonDigits($event: KeyboardEvent, ar: string) {\r\n if ($event.key.length === 1 && !/^[0-9\\u0660-\\u0669]$/.test($event.key)) {\r\n $event.preventDefault();\r\n }\r\n }\r\n\r\n #resetPlate() {\r\n this.numbersAr.set(Array(4).fill(\"\"));\r\n this.numbersEn.set(Array(4).fill(\"\"));\r\n this.lettersAr.set(Array(3).fill(\"\"));\r\n this.lettersEn.set(Array(3).fill(\"\"));\r\n this.letterErrors.set(Array(3).fill(false));\r\n this.ctrl.setValue(null, { emitEvent: false });\r\n }\r\n\r\n private emitPlate() {\r\n this.markAsTouched();\r\n this.emitValue(this.stringifyPlate());\r\n }\r\n\r\n private stringifyPlate(): string | null {\r\n // lettersEn holds PlateLetter.label.en, which equals PlateLetter.value for every entry,\r\n // so this round-trips through writeValue and the viewer. Invalid letters are held in the\r\n // opposite-language row and serialize as empty.\r\n const letters: string = this.lettersEn().join(\"\");\r\n const numbers: string = this.numbersEn().join(\"\");\r\n if (!letters && !numbers) {\r\n return null;\r\n }\r\n return `${letters}-${numbers}`;\r\n }\r\n\r\n private focusInput(id: string) {\r\n setTimeout(() => {\r\n // scoped to this host: several plates can be on the same page\r\n const element = this.#host.nativeElement.querySelector(\"[data-plate-input=\\\"\" + id + \"\\\"]\") as HTMLInputElement | null;\r\n if (element) {\r\n element.focus();\r\n // Optional: Select text so user can overwrite easily if they cycle back\r\n element.select();\r\n }\r\n }, 0);\r\n }\r\n\r\n private convertDigit(digit: string, toLang: \"ar\" | \"en\"): string {\r\n const arDigits = [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"];\r\n const enDigits = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\r\n\r\n if (toLang === \"ar\") {\r\n const index = enDigits.indexOf(digit);\r\n return index !== -1 ? arDigits[index] : digit;\r\n } else {\r\n const index = arDigits.indexOf(digit);\r\n return index !== -1 ? enDigits[index] : digit;\r\n }\r\n }\r\n}\r\n","import { Component, input, InputSignal } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatButtonToggle, MatButtonToggleGroup } from \"@angular/material/button-toggle\";\r\nimport { Option } from \"../../../shared/interfaces/option\";\r\nimport { ControlBase } from \"../base/control-base\";\r\n\r\n/**\r\n * `<iss-ctrl-radio>` — one choice out of a fixed set of options.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-radio formControlName=\"gender\" [options]=\"genders\"/>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * | Property | Type | Default | Description |\r\n * | --- | --- | --- | --- |\r\n * | `options` | `Option[]` | **required** | The selectable choices. |\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)`\r\n *\r\n * Does not project a label — the field label is rendered by the wrapping `iss-field-*`.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-radio\",\r\n imports: [\r\n ReactiveFormsModule,\r\n MatButtonToggleGroup,\r\n MatButtonToggle,\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: RadioControl, multi: true }\r\n ],\r\n template: `\r\n <mat-button-toggle-group [hideSingleSelectionIndicator]=\"true\" [disabled]=\"disabled() || readonly()\">\r\n @for (option of options(); track option.value) {\r\n <mat-button-toggle\r\n [value]=\"option.value\"\r\n [checked]=\"ctrl.value === option.value\"\r\n (change)=\"onRadioChange(option.value)\"\r\n >{{ option.label }}\r\n </mat-button-toggle>\r\n }\r\n </mat-button-toggle-group>\r\n `,\r\n})\r\nexport class RadioControl extends ControlBase {\r\n /**\r\n * Selectable choices, each a `{ value, label }` pair. Required.\r\n */\r\n options: InputSignal<Option[]> = input.required();\r\n\r\n override writeValue(value: string | null) {\r\n if (!value) {\r\n this.ctrl.setValue(null, { emitEvent: false });\r\n return;\r\n }\r\n\r\n // single selection mode, only the first value of a comma separated list is honoured\r\n const values: string[] = value.split(\",\").map((val: string) => val.trim());\r\n this.ctrl.setValue(values[0], { emitEvent: false });\r\n }\r\n\r\n onRadioChange(value: string) {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n this.markAsTouched();\r\n this.ctrl.setValue(value, { emitEvent: false });\r\n const selectedOption: Option | undefined = this.options().find((option: Option) => option.value === value);\r\n // the form keeps the raw value, while (onChange) consumers get the resolved option\r\n this.propagateValue(value);\r\n this.emitOnChangeEvent(selectedOption ? [selectedOption] : null);\r\n }\r\n}\r\n","import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\r\nimport { NgClass, NgStyle, NgTemplateOutlet } from \"@angular/common\";\r\nimport { Component, computed, contentChild, CUSTOM_ELEMENTS_SCHEMA, effect, input, InputSignal, OnDestroy, output, OutputEmitterRef, signal, Signal, WritableSignal } from \"@angular/core\";\r\nimport { toSignal } from \"@angular/core/rxjs-interop\";\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatAutocompleteModule } from \"@angular/material/autocomplete\";\r\nimport { MatChipsModule } from \"@angular/material/chips\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { Option } from \"../../../shared/interfaces/option\";\r\nimport { SelectStatusPipe } from \"../../../shared/pipes/select-status.pipe\";\r\nimport { ControlBase } from \"../base/control-base\";\r\n\r\n/**\r\n * `<iss-ctrl-select>` — dropdown selection, single or multiple, with a search box.\r\n *\r\n * Typing in the search box emits `(onQueryChange)`, so options can be loaded remotely; set\r\n * `loading` while that request is in flight.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-select\r\n * formControlName=\"city\"\r\n * [options]=\"cities()\"\r\n * [multiple]=\"false\"\r\n * [loading]=\"loading()\"\r\n * (onQueryChange)=\"search($event)\"\r\n * >\r\n * <label>City</label>\r\n * </iss-ctrl-select>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * | Property | Type | Default | Description |\r\n * | --- | --- | --- | --- |\r\n * | `options` | `Option[]` | **required** | The selectable choices. |\r\n * | `height` | `string` | `\"150px\"` | Max height of the open panel. |\r\n * | `loading` | `boolean` | `false` | Shows the loading state inside the panel. |\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)` · `placeholder` · `multiple`\r\n *\r\n * ### Outputs\r\n * - `(onQueryChange)` — `string`, the current search text.\r\n *\r\n * Projects `<label>` into the floating label; omit it to render the control without one.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-select\",\r\n imports: [\r\n ReactiveFormsModule,\r\n MatAutocompleteModule,\r\n MatInputModule,\r\n MatChipsModule,\r\n MatIconModule,\r\n NgClass,\r\n SelectStatusPipe,\r\n CdkVirtualForOf,\r\n CdkVirtualScrollViewport,\r\n CdkFixedSizeVirtualScroll,\r\n NgStyle,\r\n NgTemplateOutlet,\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: SelectControl, multi: true },\r\n ],\r\n template: `\r\n <mat-form-field floatLabel=\"auto\" class=\"\">\r\n @if (hasLabel()) {\r\n <mat-label class=\"fs-16 fc-black\">\r\n <ng-content select=\"label\"></ng-content>\r\n </mat-label>\r\n }\r\n <input [formControl]=\"ctrl\" [matAutocomplete]=\"auto\" [matChipInputFor]=\"chipGrid\" [placeholder]=\"placeholder()\" [readonly]=\"readonly()\" (blur)=\"markAsTouched()\" class=\"m-0\" matInput/>\r\n @if (!disabled()) {\r\n @if (selectedOptions().size) {\r\n <span matSuffix class=\"sfi sfi-close fs-18 fc-black cursor-pointer\" (click)=\"clearSelection()\"></span>\r\n } @else {\r\n <span matSuffix class=\"sfi sfi-arrow-down fs-18 fc-black cursor-pointer\"></span>\r\n }\r\n }\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"captureValue($event)\" [displayWith]=\"displayFn\" autoActiveFirstOption hideSingleSelectionIndicator>\r\n @if (loading()) {\r\n <mat-option disabled=\"true\">\r\n <ds-icon icon=\"spinner\" class=\"spin fc-coral fs-20\"></ds-icon>\r\n </mat-option>\r\n } @else {\r\n @if (filteredOptions().length) {\r\n @if (multiple()) {\r\n <mat-option (click)=\"toggleAllSelection()\" value=\"_SELECT_ALL_OPTIONS_\">\r\n {{ allSelected() ? \"deselect all\" : \"Select All\" }}\r\n </mat-option>\r\n }\r\n <cdk-virtual-scroll-viewport itemSize=\"5\" [ngStyle]=\"{'height': height()}\">\r\n <mat-option *cdkVirtualFor=\"let option of filteredOptions()\" [value]=\"option\" [ngClass]=\"{'mdc-list-item__selected': option | selectStatus: selectedOptions()}\">\r\n @if (optionTemplate()) {\r\n <ng-container *ngTemplateOutlet=\"optionTemplate(); context: { $implicit: option}\"/>\r\n } @else {\r\n {{ option.label }}\r\n }\r\n </mat-option>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <mat-option disabled=\"true\">No Result Found</mat-option>\r\n }\r\n }\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n\r\n <mat-chip-grid #chipGrid>\r\n @if (multiple()) {\r\n @for (chip of selectedOptions(); track chip[0]) {\r\n <mat-chip-row (removed)=\"removeFromSelectedOptionsMap(chip[1])\">\r\n @if (cardViewerTemplate()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"cardViewerTemplate(); context: { $implicit: chip[1]}\"\r\n />\r\n } @else {\r\n {{ chip[1].label }}\r\n }\r\n <button matChipRemove [disabled]=\"readonly()\" [attr.aria-label]=\"'remove ' + chip[1].label\">\r\n <ds-icon icon=\"trash\" class=\"fc-red\"></ds-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n }\r\n </mat-chip-grid>\r\n `,\r\n styles: `\r\n ::ng-deep {\r\n .mat-mdc-option.mdc-list-item__selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text {\r\n --mat-option-selected-state-label-text-color: var(--green);\r\n color: var(--green);\r\n }\r\n }\r\n `,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class SelectControl extends ControlBase implements OnDestroy {\r\n selectedOptions: WritableSignal<Map<string, Option>> = signal(new Map<string, Option>());\r\n /**\r\n * Selectable choices, each a `{ value, label }` pair. Required.\r\n */\r\n options: InputSignal<Option[]> = input.required();\r\n /**\r\n * Maximum height of the open options panel, as a CSS length.\r\n */\r\n height: InputSignal<string> = input(\"150px\");\r\n query: Signal<string> = toSignal(this.ctrl.valueChanges);\r\n readonly filteredOptions: Signal<Option[]> = computed(() => this.#filter(this.query()));\r\n /**\r\n * Shows the loading state inside the panel while options are being fetched.\r\n */\r\n loading: InputSignal<boolean> = input(false);\r\n /**\r\n * Emits the search text so the host can load matching options.\r\n */\r\n onQueryChange: OutputEmitterRef<string> = output();\r\n protected optionTemplate: any = contentChild(\"optionTemplate\");\r\n protected cardViewerTemplate: any = contentChild(\"cardViewerTemplate\");\r\n protected allSelected: WritableSignal<boolean> = signal(false);\r\n #queryEffectRef = effect(() => {\r\n if (typeof this.query() === \"string\") {\r\n this.onQueryChange.emit(this.query());\r\n }\r\n });\r\n #disabledEffectRef = effect(() => {\r\n if (this.disabled()) {\r\n this.ctrl.disable();\r\n } else {\r\n this.ctrl.enable();\r\n }\r\n });\r\n\r\n displayFn = (options: Option | Option[]): string => {\r\n if (Array.isArray(options) && !this.multiple()) {\r\n return options[0]?.label;\r\n }\r\n return \"\";\r\n };\r\n\r\n /*todo: add pagination for async options*/\r\n\r\n override writeValue(value: string | null) {\r\n this.#reset();\r\n if (value === null || value === undefined) {\r\n return;\r\n }\r\n const values: string[] = value.split(\",\").map(val => val.trim());\r\n let selectedOptions: Option[] = this.options().filter((option: Option) => values.includes(option.value));\r\n if (!this.multiple()) {\r\n // single selection mode, only the first matching option is honoured\r\n selectedOptions = selectedOptions.slice(0, 1);\r\n }\r\n const next: Map<string, Option> = new Map<string, Option>();\r\n for (let i = 0; i < selectedOptions.length; i++) {\r\n const val: Option = selectedOptions[i];\r\n next.set(val.value, val);\r\n }\r\n this.selectedOptions.set(next);\r\n this.ctrl.setValue(selectedOptions);\r\n }\r\n\r\n captureValue($event: any) {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n if ($event?.option.value === \"_SELECT_ALL_OPTIONS_\") {\r\n return;\r\n }\r\n this.#addToSelectedOptionsMap($event?.option.value);\r\n this.#emit();\r\n }\r\n\r\n removeFromSelectedOptionsMap(option: Option) {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n this.selectedOptions.update((selected: Map<string, Option>) => {\r\n const next: Map<string, Option> = new Map(selected);\r\n next.delete(option.value);\r\n return next;\r\n });\r\n this.allSelected.set(false);\r\n this.#emit();\r\n }\r\n\r\n clearSelection() {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n this.#reset();\r\n this.allSelected.set(false);\r\n this.#emit();\r\n }\r\n\r\n toggleAllSelection() {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n if (this.selectedOptions().size === this.options().length) {\r\n this.#reset();\r\n this.#emit();\r\n this.allSelected.set(false);\r\n return;\r\n }\r\n const next: Map<string, Option> = new Map<string, Option>();\r\n for (let i = 0; i < this.options().length; i++) {\r\n const option: Option = this.options()[i];\r\n next.set(option.value, option);\r\n }\r\n this.selectedOptions.set(next);\r\n this.ctrl.setValue(this.#convertSelectedMapToArray());\r\n this.allSelected.set(true);\r\n this.#emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#queryEffectRef.destroy();\r\n this.#disabledEffectRef.destroy();\r\n }\r\n\r\n #addToSelectedOptionsMap(option: any) {\r\n if (option) {\r\n const selectedOption = option;\r\n this.selectedOptions.update((selected: Map<string, Option>) => {\r\n // single selection replaces the map instead of adding to it\r\n const next: Map<string, Option> = this.multiple() ? new Map(selected) : new Map<string, Option>();\r\n next.set(selectedOption.value, selectedOption);\r\n return next;\r\n });\r\n this.ctrl.setValue(this.#convertSelectedMapToArray());\r\n }\r\n }\r\n\r\n #stringifySelectedOptions(): string | null {\r\n const selectedOptionsArr: Option[] | null = this.#convertSelectedMapToArray();\r\n if (selectedOptionsArr) {\r\n return selectedOptionsArr.map((o) => o.value).join();\r\n }\r\n return null;\r\n }\r\n\r\n #filter(queryString: string | Option): Option[] {\r\n if (queryString === null || queryString === undefined || typeof queryString !== \"string\") {\r\n return this.options();\r\n }\r\n const query: string = queryString.toLowerCase();\r\n return this.options().filter((option: Option) => {\r\n return (option.value.toLowerCase().includes(query) || option.label.toLowerCase().includes(query));\r\n });\r\n }\r\n\r\n #emit() {\r\n this.propagateValue(this.#stringifySelectedOptions());\r\n this.emitOnChangeEvent(this.#convertSelectedMapToArray());\r\n }\r\n\r\n #reset() {\r\n this.selectedOptions.set(new Map<string, Option>());\r\n this.ctrl.setValue(null);\r\n }\r\n\r\n #convertSelectedMapToArray(): Option[] | null {\r\n const selectedOptionsArr: Option[] = Array.from(this.selectedOptions(), ([_, option]) => option);\r\n return selectedOptionsArr.length ? selectedOptionsArr : null;\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\r\nimport { ControlBase } from \"../base/control-base\";\r\n\r\n/**\r\n * `<iss-ctrl-slide-toggle>` — an on/off switch for a boolean value.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-slide-toggle formControlName=\"active\" (onChange)=\"save($event)\"/>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * None — the control is configured entirely through the inherited properties.\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)`\r\n *\r\n * Does not project a label — the field label is rendered by the wrapping `iss-field-*`.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-slide-toggle\",\r\n imports: [MatSlideToggleModule, ReactiveFormsModule],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: SlideToggleControl, multi: true }\r\n ],\r\n template: `\r\n <mat-slide-toggle\r\n class=\"d-block\" [formControl]=\"ctrl\"\r\n [disabled]=\"readonly()\"\r\n (change)=\"onSlideToggleChange($event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n `\r\n})\r\nexport class SlideToggleControl extends ControlBase {\r\n onSlideToggleChange(checked: boolean) {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n this.markAsTouched();\r\n this.emitValue(checked);\r\n }\r\n}\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, effect, EffectRef, OnDestroy } from \"@angular/core\";\r\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatFormField, MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInput } from \"@angular/material/input\";\r\nimport { HintsComponent } from \"../../shared/hints.component\";\r\nimport { ControlBase } from \"../base/control-base\";\r\n\r\n/**\r\n * `<iss-ctrl-textarea>` — multi line free text.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-textarea formControlName=\"notes\" [maxLength]=\"500\" placeholder=\"Add a note\">\r\n * <label>Notes</label>\r\n * </iss-ctrl-textarea>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * None — the control is configured entirely through the inherited properties.\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)` · `placeholder` · `minLength` · `maxLength` · `hints`\r\n *\r\n * Projects `<label>` into the floating label; omit it to render the control without one.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-textarea\",\r\n imports: [\r\n MatFormField,\r\n MatInput,\r\n HintsComponent,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: TextareaControl, multi: true },\r\n { provide: NG_VALIDATORS, useExisting: TextareaControl, multi: true }\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n template: `\r\n <mat-form-field floatLabel=\"auto\" class=\"custom-textarea\">\r\n @if (hasLabel()) {\r\n <mat-label class=\"fs-16 fc-black\">\r\n <ng-content select=\"label\"></ng-content>\r\n </mat-label>\r\n }\r\n <textarea\r\n matInput\r\n [placeholder]=\"placeholder()\"\r\n [formControl]=\"ctrl\"\r\n [attr.maxlength]=\"maxLength()\"\r\n [attr.minlength]=\"minLength()\"\r\n [readonly]=\"readonly()\"\r\n (input)=\"emitValue()\"\r\n (focusout)=\"markAsTouched()\"\r\n >\r\n </textarea>\r\n <iss-ctrl-hints [hints]=\"hints()\" [touched]=\"touched()\"/>\r\n </mat-form-field>\r\n `\r\n})\r\nexport class TextareaControl extends ControlBase implements OnDestroy {\r\n #disabledEffect: EffectRef = effect(() => {\r\n if (this.disabled()) {\r\n this.ctrl.disable();\r\n } else {\r\n this.ctrl.enable();\r\n }\r\n });\r\n\r\n ngOnDestroy() {\r\n this.#disabledEffect.destroy();\r\n }\r\n}\r\n","import { Component, input, InputSignal, signal, WritableSignal } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatButtonToggleModule } from \"@angular/material/button-toggle\";\r\nimport { Option } from \"../../../shared/interfaces/option\";\r\nimport { ControlBase } from \"../base/control-base\";\r\n\r\n/**\r\n * `<iss-ctrl-toggle-button>` — options rendered as a button group instead of a dropdown.\r\n *\r\n * With `multiple` set, several buttons can be active at once.\r\n *\r\n * @example\r\n * ```html\r\n * <iss-ctrl-toggle-button formControlName=\"priority\" [options]=\"priorities\" [multiple]=\"false\"/>\r\n * ```\r\n *\r\n * ### Own inputs\r\n * | Property | Type | Default | Description |\r\n * | --- | --- | --- | --- |\r\n * | `options` | `Option[]` | **required** | The selectable choices. |\r\n *\r\n * ### Inherited from {@link ControlBase}\r\n * `formControlName` · `readonly` · `className` · `(onChange)` · `multiple`\r\n *\r\n * Does not project a label — the field label is rendered by the wrapping `iss-field-*`.\r\n */\r\n@Component({\r\n selector: \"iss-ctrl-toggle-button\",\r\n imports: [MatButtonToggleModule, ReactiveFormsModule],\r\n template: `\r\n <mat-button-toggle-group\r\n [formControl]=\"ctrl\"\r\n [disabled]=\"readonly()\"\r\n [multiple]=multiple()\r\n [hideMultipleSelectionIndicator]=\"true\"\r\n [hideSingleSelectionIndicator]=\"true\"\r\n >\r\n @for (option of options(); track option.value) {\r\n <mat-button-toggle class=\"d-block\" [value]=\"option.value\" (change)=\"onToggleButtonChange($event.source.checked,option.value)\">\r\n {{ option.label }}\r\n </mat-button-toggle>\r\n }\r\n </mat-button-toggle-group>\r\n `,\r\n styles: `\r\n .mat-button-toggle-group-appearance-standard {\r\n border-radius: unset !important;\r\n }\r\n `,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: ToggleButtonControl, multi: true }\r\n ]\r\n})\r\nexport class ToggleButtonControl extends ControlBase {\r\n /**\r\n * Selectable choices, each a `{ value, label }` pair. Required.\r\n */\r\n options: InputSignal<Option[]> = input.required();\r\n selectedOptions: WritableSignal<Map<string, Option>> = signal(new Map<string, Option>());\r\n\r\n override writeValue(value: string | null) {\r\n this.#reset();\r\n if (!value) {\r\n return;\r\n }\r\n const values: string[] = value.split(\",\").map((val: string) => val.trim());\r\n const selectedOptions: Option[] = this.options().filter((option: Option) => values.includes(option.value));\r\n if (!this.multiple()) {\r\n // single selection mode, only the first matching option is honoured\r\n const selectedOption: Option | undefined = selectedOptions[0];\r\n this.ctrl.setValue(selectedOption ? selectedOption.value : null, { emitEvent: false });\r\n this.addToSelectedOptionsMap(this.#selectedOptionsMapFactory(selectedOption ? [selectedOption] : []));\r\n return;\r\n }\r\n this.addToSelectedOptionsMap(this.#selectedOptionsMapFactory(selectedOptions));\r\n this.ctrl.setValue(selectedOptions.map((option: Option) => option.value), { emitEvent: false });\r\n }\r\n\r\n addToSelectedOptionsMap(option: Map<string, Option>) {\r\n if (option) {\r\n this.selectedOptions.set(option);\r\n }\r\n }\r\n\r\n onToggleButtonChange(checked: boolean, value: string) {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n this.markAsTouched();\r\n if (!this.multiple()) {\r\n const selectedOption: Option | undefined = this.options().find((o: Option) => o.value === value);\r\n this.addToSelectedOptionsMap(this.#selectedOptionsMapFactory(selectedOption ? [selectedOption] : []));\r\n this.propagateValue(value);\r\n this.emitOnChangeEvent(selectedOption ? [selectedOption] : null);\r\n } else {\r\n const option = this.options().find((o: Option) => o.value === value);\r\n if (!option) {\r\n return;\r\n }\r\n const options: Map<string, Option> = new Map(this.selectedOptions());\r\n if (checked) options.set(option.value, option);\r\n else options.delete(option.value);\r\n this.getEmissionValue(options);\r\n }\r\n }\r\n\r\n stringifySelectedOptions(): string | null {\r\n if (!this.selectedOptions()?.size) {\r\n return null;\r\n }\r\n return Array.from(this.selectedOptions(), ([value]) => value).join();\r\n }\r\n\r\n getEmissionValue(options: any) {\r\n this.addToSelectedOptionsMap(options);\r\n // the form keeps the stringified values, while (onChange) consumers get the resolved options\r\n this.propagateValue(this.stringifySelectedOptions());\r\n this.emitOnChangeEvent(this.#convertSelectedMapToArray());\r\n }\r\n\r\n #convertSelectedMapToArray(): Option[] | null {\r\n const selectedOptions: Option[] = Array.from(this.selectedOptions().values());\r\n return selectedOptions.length ? selectedOptions : null;\r\n }\r\n\r\n #selectedOptionsMapFactory(selectedOptions: Option[]) {\r\n const selectedOptionsMap: Map<string, Option> = new Map();\r\n for (const option of selectedOptions) {\r\n selectedOptionsMap.set(option.value, option);\r\n }\r\n return selectedOptionsMap;\r\n }\r\n\r\n #reset() {\r\n this.selectedOptions.set(new Map<string, Option>());\r\n this.ctrl.setValue(null, { emitEvent: false });\r\n }\r\n}\r\n","export class FieldAsyncValidation {\r\n alreadyExists: string | undefined;\r\n\r\n constructor(asyncValidation: any) {\r\n this.alreadyExists = asyncValidation?.alreadyExists;\r\n }\r\n}\r\n","import { signal, WritableSignal } from \"@angular/core\";\r\n\r\n/**\r\n * Per-field configuration, reachable as `field.config` and consumed by the `iss-field-*`\r\n * components. Every entry is a signal, so it can be changed at runtime by field events.\r\n *\r\n * Not every key applies to every field — the class doc of each `iss-field-*` component\r\n * lists exactly which of these it reads.\r\n *\r\n * ### Keys by area\r\n * - **Common:** `type` · `disabled` · `readonly` · `placeholder` · `suffix` · `hideLabel` · `multiple`\r\n * - **Bounds:** `min` · `max` · `minLength` · `maxLength`\r\n * - **Dates:** `minDate` · `maxDate` · `dateFilter`\r\n * - **Attachments:** `allowedFileSize` · `allowedFileTypes` · `minFilesCount` · `maxFilesCount` · `templateId` · `templateUrl`\r\n * - **Users:** `minUsersCount` · `maxUsersCount`\r\n * - **Table:** `showInTableColumns` · `tableWithFilter` · `tableWithSort` · `tableWithPagination`\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"email\", \"type\": \"text_input\", \"config\": { \"type\": \"email\", \"maxLength\": 120 } }\r\n * ```\r\n */\r\nexport class FieldConfig {\r\n /**\r\n * Native input type for `text_input` (`text`, `email`, `number`, `password`, …).\r\n */\r\n type: WritableSignal<string | undefined> = signal(undefined);\r\n /**\r\n * Disables the control; the underlying `FormControl` is disabled on init.\r\n */\r\n disabled: WritableSignal<boolean | undefined> = signal(undefined);\r\n /**\r\n * Shows the value but blocks interaction. Unlike `disabled`, the value is still submitted.\r\n */\r\n readonly: WritableSignal<boolean | undefined> = signal(undefined);\r\n /**\r\n * Placeholder text shown while the field is empty.\r\n */\r\n placeholder: WritableSignal<string | undefined> = signal(undefined);\r\n /**\r\n * Text rendered after the value (a unit or currency, for example).\r\n */\r\n suffix: WritableSignal<string | undefined> = signal(undefined);\r\n /**\r\n * Hides the field label without removing it from the accessibility tree.\r\n */\r\n hideLabel: WritableSignal<boolean | undefined> = signal(undefined);\r\n /**\r\n * Allows more than one value — multi select, multi file upload, multi toggle.\r\n */\r\n multiple: WritableSignal<boolean | undefined> = signal(undefined);\r\n /**\r\n * Minimum number of characters. Source: `config.minLength`.\r\n */\r\n minLength: WritableSignal<number | undefined> = signal(undefined);\r\n /**\r\n * Maximum number of characters. Source: `config.maxLength`.\r\n */\r\n maxLength: WritableSignal<number | undefined> = signal(undefined);\r\n /**\r\n * Minimum numeric value (also the minimum user count for the user picker).\r\n */\r\n min: WritableSignal<number | undefined> = signal(undefined);\r\n /**\r\n * Maximum numeric value (also the maximum user count for the user picker).\r\n */\r\n max: WritableSignal<number | undefined> = signal(undefined);\r\n\r\n /**\r\n * Earliest selectable date for date, datetime and date-range fields.\r\n */\r\n minDate: WritableSignal<Date | undefined> = signal(undefined);\r\n /**\r\n * Latest selectable date for date, datetime and date-range fields.\r\n */\r\n maxDate: WritableSignal<Date | undefined> = signal(undefined);\r\n /**\r\n * Restricts the calendar to working days. Source: `config.acceptWorkDaysOnly`.\r\n */\r\n dateFilter: WritableSignal<boolean | undefined> = signal(undefined);\r\n\r\n /**\r\n * Id of a downloadable template offered next to an attachment field.\r\n */\r\n templateId: WritableSignal<string | undefined> = signal(undefined);\r\n /**\r\n * Direct URL of the downloadable template for an attachment field.\r\n */\r\n templateUrl: WritableSignal<string | undefined> = signal(undefined);\r\n /**\r\n * Maximum size per uploaded file. Source: `config.allowedSize`.\r\n */\r\n allowedFileSize: WritableSignal<number | undefined> = signal(undefined);\r\n /**\r\n * Comma separated list of accepted file extensions or MIME types.\r\n */\r\n allowedFileTypes: WritableSignal<string | undefined> = signal(undefined);\r\n /**\r\n * Maximum number of files that may be attached.\r\n */\r\n maxFilesCount: WritableSignal<number | undefined> = signal(undefined);\r\n /**\r\n * Minimum number of files required.\r\n */\r\n minFilesCount: WritableSignal<number | undefined> = signal(undefined);\r\n\r\n /**\r\n * Maximum number of users selectable in a user picker.\r\n */\r\n maxUsersCount: WritableSignal<number | undefined> = signal(undefined);\r\n /**\r\n * Minimum number of users required in a user picker.\r\n */\r\n minUsersCount: WritableSignal<number | undefined> = signal(undefined);\r\n\r\n /**\r\n * Parsed from the field definition but not consumed yet — table columns currently come\r\n * from `field.children`.\r\n */\r\n showInTableColumns: WritableSignal<boolean | undefined> = signal(undefined);\r\n /**\r\n * Enables the filter row on a `table` field.\r\n */\r\n tableWithFilter: WritableSignal<boolean | undefined> = signal(undefined);\r\n /**\r\n * Enables column sorting on a `table` field.\r\n */\r\n tableWithSort: WritableSignal<boolean | undefined> = signal(undefined);\r\n /**\r\n * Enables the paginator on a `table` field.\r\n */\r\n tableWithPagination: WritableSignal<boolean | undefined> = signal(undefined);\r\n\r\n constructor(config: any) {\r\n this.type.set(config?.type);\r\n this.suffix.set(config?.suffix);\r\n this.placeholder.set(config?.placeholder);\r\n this.readonly.set(config?.readonly);\r\n this.disabled.set(config?.disabled);\r\n this.multiple.set(config?.multiple);\r\n this.hideLabel.set(config?.hideLabel);\r\n this.min.set(config?.min);\r\n this.max.set(config?.max);\r\n this.minDate.set(config?.minDate);\r\n this.maxDate.set(config?.maxDate);\r\n this.dateFilter.set(config?.acceptWorkDaysOnly);\r\n this.minLength.set(config?.minLength);\r\n this.maxLength.set(config?.maxLength);\r\n this.allowedFileSize.set(config?.allowedSize);\r\n this.allowedFileTypes.set(config?.allowedFileTypes);\r\n this.maxFilesCount.set(config?.maxFilesCount);\r\n this.minFilesCount.set(config?.minFilesCount);\r\n this.templateId.set(config?.templateId);\r\n this.templateUrl.set(config?.templateUrl);\r\n this.maxUsersCount.set(config?.maxUsersCount);\r\n this.minUsersCount.set(config?.minUsersCount);\r\n this.showInTableColumns.set(config?.showInTableColumns);\r\n this.tableWithFilter.set(config?.tableWithFilter);\r\n this.tableWithSort.set(config?.tableWithSort);\r\n this.tableWithPagination.set(config?.tableWithPagination);\r\n }\r\n}\r\n","import { EventConfigFn } from \"../interfaces/event-strategy\";\r\nimport { ActionTriggerFn } from \"../interfaces/event-trigger-fn\";\r\nimport { Loader } from \"../services/loader\";\r\n\r\nexport class FieldActionConfig {\r\n operator: \"or\" | \"and\" | undefined;\r\n setValueFromApiResponse: string | undefined;\r\n setValueFromRequestDto: string | undefined;\r\n setValueFromLoggedInUser: string | undefined;\r\n setValueFromJsonValue: string | undefined;\r\n triggerFromApiResponse: string | undefined;\r\n triggerFromJsonValue: string | undefined;\r\n replaceApiKeyFromField: string | undefined;\r\n fn: EventConfigFn | undefined = undefined;\r\n fnPromise: Promise<EventConfigFn> | undefined = undefined;\r\n afterFetchFn: EventConfigFn | undefined = undefined;\r\n afterFetchFnPromise: Promise<EventConfigFn> | undefined = undefined;\r\n triggerFn!: ActionTriggerFn;\r\n triggerFnPromise: Promise<ActionTriggerFn> | undefined = undefined;\r\n disableAfterFetching: boolean | undefined = false;\r\n disableAfterSetValue: boolean | undefined = false;\r\n\r\n constructor(action: any, loader: Loader) {\r\n this.operator = action.config?.operator;\r\n this.setValueFromApiResponse = action.config?.setValueFromApiResponse;\r\n this.setValueFromRequestDto = action.config?.setValueFromRequestDto;\r\n this.setValueFromLoggedInUser = action.config?.setValueFromLoggedInUser;\r\n this.setValueFromJsonValue = action.config?.setValueFromJsonValue;\r\n this.triggerFromApiResponse = action.config?.fromApiResponse;\r\n this.triggerFromJsonValue = action.config?.fromApiResponse;\r\n this.replaceApiKeyFromField = action.config?.replaceApiKeyFromField;\r\n this.disableAfterFetching = action.config?.disableAfterFetching ?? false;\r\n this.disableAfterSetValue = action.config?.disableAfterSetValue ?? false;\r\n\r\n if (action.config?.fn) {\r\n const fn = loader.loadService<EventConfigFn>(action.config.fn);\r\n if (fn) {\r\n this.fnPromise = fn();\r\n }\r\n }\r\n\r\n if (action.config?.afterFetchFn) {\r\n const fn = loader.loadService<EventConfigFn>(action.config.afterFetchFn);\r\n if (fn) {\r\n this.afterFetchFnPromise = fn();\r\n }\r\n }\r\n\r\n if (action.config?.triggerFn) {\r\n const fn = loader.loadService<ActionTriggerFn>(action.config.triggerFn);\r\n if (fn) {\r\n this.triggerFnPromise = fn();\r\n }\r\n }\r\n }\r\n}\r\n","import { EventStrategy } from \"../interfaces/event-strategy\";\r\nimport { Loader } from \"../services/loader\";\r\nimport { FieldActionConfig } from \"./field-action-config\";\r\n\r\nexport class FieldEvent {\r\n id: number;\r\n name: string;\r\n value: string;\r\n trackedFieldName: string;\r\n triggered: boolean;\r\n config: FieldActionConfig;\r\n fn: EventStrategy | undefined;\r\n fnPromise: Promise<EventStrategy> | undefined = undefined;\r\n\r\n constructor(action: any, loader: Loader) {\r\n this.id = action.id;\r\n this.name = action.name;\r\n this.value = action.value;\r\n this.trackedFieldName = action.eventSourceName;\r\n this.triggered = false;\r\n this.config = new FieldActionConfig(action, loader);\r\n const actionFn = loader.loadService<EventStrategy>(action.name);\r\n if (actionFn) {\r\n this.fnPromise = actionFn();\r\n }\r\n this.fn = undefined;\r\n }\r\n}\r\n","import { isSignal, signal, WritableSignal } from \"@angular/core\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { Option } from \"../interfaces/option\";\r\nimport { Loader } from \"../services/loader\";\r\nimport { FieldAsyncValidation } from \"./field-async-validation\";\r\nimport { FieldConfig } from \"./field-config\";\r\nimport { FieldEvent } from \"./field-event\";\r\n\r\n/**\r\n * Runtime model of a single form field, built from the JSON definition returned by the API.\r\n *\r\n * It is what `iss-field-*` components inject through the `FIELD_DATA` token, and the object\r\n * field events read from and write to. Signal-valued members can be changed at runtime and\r\n * the rendered field reacts immediately.\r\n *\r\n * ### Properties\r\n * | Property | Type | Description |\r\n * | --- | --- | --- |\r\n * | `id` | `number` | Unique field id. |\r\n * | `name` | `string` | Control name inside the form group. |\r\n * | `type` | `string` | Key into the `COMPONENTS` index (`text_input`, `dropdown_list`, …). |\r\n * | `base` | `string` | Underlying data type of the field. |\r\n * | `label()` | `string` | Visible label. |\r\n * | `hint()` | `string` | Helper text under the field. |\r\n * | `options()` | `Option[]` | Choices for select, radio, checkbox and toggle fields. |\r\n * | `api()` | `string` | Endpoint used to load options or lookups. |\r\n * | `mode()` | `\"edit\" \\| \"view\"` | Renders the control or the read-only viewer. |\r\n * | `visible()` | `boolean` | Whether the field is rendered at all. |\r\n * | `loading()` | `boolean` | Shows the field's own loading state. |\r\n * | `config` | `FieldConfig` | Per-type configuration — see {@link FieldConfig}. |\r\n * | `validation` | `any` | Synchronous validation rules. |\r\n * | `asyncValidation` | `FieldAsyncValidation` | Remote validation rules. |\r\n * | `events` | `FieldEvent[]` | Cross-field reactions (show, hide, set value, …). |\r\n * | `children` | `IssField[]` | Nested fields, used by table and group fields. |\r\n * | `value` / `defaultValue` | `string` | Initial and fallback raw values. |\r\n * | `jsonValue` | `any` | Initial resolved value for controls with a rich payload. |\r\n * | `ctrlValue()` | `string \\| null` | Live raw value of the control. |\r\n * | `ctrlJsonValue()` | `any` | Live resolved value (selected options, files, users, …). |\r\n * | `response()` / `apiResponse` | `any` | Latest payload returned for this field. |\r\n */\r\nexport class IssField {\r\n id: number;\r\n name: string;\r\n type: string;\r\n base: string;\r\n label: WritableSignal<string> = signal(\"\");\r\n hint: WritableSignal<string> = signal(\"\");\r\n options: WritableSignal<Option[]> = signal([]);\r\n api: WritableSignal<string> = signal(\"\");\r\n mode: WritableSignal<\"edit\" | \"view\"> = signal(\"edit\");\r\n visible: WritableSignal<boolean>;\r\n wasVisible: WritableSignal<boolean> = signal(true);\r\n events: FieldEvent[];\r\n validation: any;\r\n asyncValidation: FieldAsyncValidation;\r\n children: IssField[];\r\n apiResponse: BehaviorSubject<any> = new BehaviorSubject(null);\r\n response: WritableSignal<any> = signal(null);\r\n config: FieldConfig;\r\n value: string;\r\n jsonValue: any;\r\n defaultValue: string;\r\n ctrlValue: WritableSignal<string | null> = signal(null);\r\n ctrlJsonValue: WritableSignal<any> = signal(null);\r\n loading: WritableSignal<boolean> = signal(false);\r\n\r\n constructor(field: any, loader: Loader) {\r\n this.id = field.id;\r\n this.name = field.name;\r\n this.type = field.type;\r\n this.base = field.base;\r\n\r\n if (isSignal(field.label)) {\r\n this.label = field.label;\r\n } else {\r\n this.label = signal(field.label ?? field.title);\r\n }\r\n\r\n if (isSignal(field.hint)) {\r\n this.hint = field.hint;\r\n } else {\r\n this.hint = signal(field.hint);\r\n }\r\n\r\n if (isSignal(field.options)) {\r\n this.options = field.options ?? [];\r\n } else {\r\n this.options = signal(field.options ?? []);\r\n }\r\n\r\n if (isSignal(field.api)) {\r\n this.api = field.api;\r\n } else {\r\n this.api = signal(field.api);\r\n }\r\n\r\n field.mode = field.mode ?? \"edit\";\r\n if (isSignal(field.mode)) {\r\n this.mode = field.mode;\r\n } else {\r\n this.mode = signal(field.mode);\r\n }\r\n\r\n if (!field.events) {\r\n field.events = [];\r\n }\r\n\r\n // this.mode() and not field.mode: the caller may have passed a signal\r\n this.visible = signal(!field.events.some((obj: any) => obj.name === \"show\" && this.mode() === \"edit\"));\r\n this.events = field.events.map((action: any) => new FieldEvent(action, loader));\r\n this.validation = field.validation;\r\n this.asyncValidation = new FieldAsyncValidation(field.asyncValidation);\r\n this.children = field.children;\r\n this.config = new FieldConfig(field.config);\r\n this.value = field?.value;\r\n this.ctrlValue.set(field.value);\r\n this.ctrlJsonValue.set(field?.jsonValue);\r\n this.loading.set(field?.loading ?? false);\r\n this.defaultValue = field?.defaultValue;\r\n this.jsonValue = field?.jsonValue;\r\n this.apiResponse = new BehaviorSubject(null);\r\n }\r\n\r\n updateVisibility(value: boolean) {\r\n this.wasVisible.set(this.visible());\r\n this.visible.set(value);\r\n }\r\n}\r\n","import { DynamicImport } from \"../interfaces/import\";\r\n\r\nexport const VALIDATORS: DynamicImport<Function> = {\r\n required: () => import(\"../../validators/core.validator\").then((c) => c.IssValidators.required),\r\n max: () => import(\"../../validators/core.validator\").then((c) => c.IssValidators.max),\r\n min: () => import(\"../../validators/core.validator\").then((c) => c.IssValidators.min),\r\n requiredTrue: () => import(\"../../validators/core.validator\").then((c) => c.IssValidators.requiredTrue),\r\n email: () => import(\"../../validators/core.validator\").then((c) => c.IssValidators.email),\r\n minLength: () => import(\"../../validators/core.validator\").then((c) => c.IssValidators.minLength),\r\n maxLength: () => import(\"../../validators/core.validator\").then((c) => c.IssValidators.maxLength),\r\n pattern: () => import(\"../../validators/core.validator\").then((c) => c.IssValidators.pattern),\r\n regExp: () => import(\"../../validators/core.validator\").then((c) => c.IssValidators.pattern),\r\n nullValidator: () => import(\"../../validators/core.validator\").then((c) => c.IssValidators.null),\r\n beforeDate: () => import(\"../../validators/time.validator\").then((c) => c.TimeValidator.beforeDate),\r\n afterDate: () => import(\"../../validators/time.validator\").then((c) => c.TimeValidator.afterDate),\r\n within: () => import(\"../../validators/time.validator\").then((c) => c.TimeValidator.afterDate),\r\n maxFilesCount: () => import(\"../../validators/file.validator\").then((c) => c.FileValidators.maxCount),\r\n minFilesCount: () => import(\"../../validators/file.validator\").then((c) => c.FileValidators.minCount),\r\n fileSize: () => import(\"../../validators/file.validator\").then((c) => c.FileValidators.size),\r\n fileType: () => import(\"../../validators/file.validator\").then((c) => c.FileValidators.type),\r\n};\r\n","import { Injectable } from \"@angular/core\";\r\nimport { AbstractControl, AsyncValidatorFn, FormGroup, ValidatorFn, Validators } from \"@angular/forms\";\r\nimport { map, merge, Observable, of } from \"rxjs\";\r\nimport { FieldAsyncValidation } from \"../classes/field-async-validation\";\r\nimport { FieldEvent } from \"../classes/field-event\";\r\nimport { IssField } from \"../classes/iss-field\";\r\nimport { FieldChange } from \"../interfaces/event-strategy\";\r\n\r\ninterface OutletRegistration {\r\n fields: IssField[];\r\n expectedFieldNames: string[];\r\n}\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class FormEngine {\r\n // Fields are stored per host FormGroup, never on the service itself: a single root\r\n // FormEngine serves every form on the page, including the nested outlet that\r\n // iss-field-table renders against its own tableOutletForm.\r\n // The outer WeakMap lets a form's entry be collected with the form. The inner Map is\r\n // keyed by the outlet that registered them, so several outlets can share one host form\r\n // without overwriting each other, and re-registering the same outlet replaces its own\r\n // contribution instead of accumulating stale entries.\r\n readonly #registry: WeakMap<FormGroup, Map<object, OutletRegistration>> = new WeakMap<FormGroup, Map<object, OutletRegistration>>();\r\n\r\n registerFields(form: FormGroup, owner: object, fields: IssField[]): void {\r\n this.#registration(form, owner).fields = fields;\r\n }\r\n\r\n // The names an outlet expects to see as controls on the host form. An outlet is ready\r\n // once every one of them has been added, so this is registered up front in ngOnInit,\r\n // before the fields themselves resolve.\r\n registerExpectedFieldNames(form: FormGroup, owner: object, names: string[]): void {\r\n this.#registration(form, owner).expectedFieldNames = names;\r\n }\r\n\r\n unregisterOutlet(form: FormGroup, owner: object): void {\r\n const owners: Map<object, OutletRegistration> | undefined = this.#registry.get(form);\r\n if (!owners) {\r\n return;\r\n }\r\n owners.delete(owner);\r\n if (!owners.size) {\r\n this.#registry.delete(form);\r\n }\r\n }\r\n\r\n getFields(form: FormGroup): IssField[] {\r\n return this.#registrations(form).map((registration: OutletRegistration) => registration.fields).flat();\r\n }\r\n\r\n getExpectedFieldNames(form: FormGroup): string[] {\r\n const names: string[] = this.#registrations(form).map((registration: OutletRegistration) => registration.expectedFieldNames).flat();\r\n return Array.from(new Set(names));\r\n }\r\n\r\n // Searches nested children too, so a field inside a table can be found from the form\r\n // that hosts the table.\r\n getField(form: FormGroup, name: string, fields: IssField[] = this.getFields(form)): IssField | undefined {\r\n const match: IssField | undefined = fields.find((field: IssField) => field.name === name);\r\n if (match) {\r\n return match;\r\n }\r\n return fields\r\n .filter((field: IssField) => field.children?.length)\r\n .reduce((found: IssField | undefined, field: IssField) => found ?? this.getField(form, name, field.children), undefined);\r\n }\r\n\r\n getControlValue(form: FormGroup, name: string) {\r\n const ctrlValue = form.get(name)?.getRawValue();\r\n if (ctrlValue !== null && ctrlValue !== undefined && ctrlValue !== \"\") {\r\n return ctrlValue;\r\n }\r\n return this.getField(form, name)?.value;\r\n }\r\n\r\n createValidators(field: IssField): ValidatorFn[] {\r\n if (!this.fieldHasValidation(field)) {\r\n return [Validators.nullValidator];\r\n }\r\n return this.#validatorsToNgValidators(field);\r\n }\r\n\r\n createAsyncValidators(field: IssField): AsyncValidatorFn[] {\r\n if (!(field && field.asyncValidation)) {\r\n return [];\r\n }\r\n return this.#asyncValidatorsToNgValidators(field) as AsyncValidatorFn[];\r\n }\r\n\r\n getFieldValue(field: IssField) {\r\n let fieldValue = field.value;\r\n if (field.value === undefined && field.defaultValue) {\r\n fieldValue = field.defaultValue;\r\n }\r\n return fieldValue ?? null;\r\n }\r\n\r\n trackChangesEvents(field: IssField, form: FormGroup): Observable<FieldChange> {\r\n const changes$: Observable<FieldChange>[] = [];\r\n const masterNames: Set<string> = new Set();\r\n field.events.forEach((action: FieldEvent) => {\r\n this.processTrackChanges(action.trackedFieldName, masterNames, changes$, field, form);\r\n });\r\n return merge(...changes$);\r\n }\r\n\r\n trackChangesValidations(field: IssField, form: FormGroup): Observable<FieldChange> {\r\n const changes$: Observable<FieldChange>[] = [];\r\n const masterNames: Set<string> = new Set();\r\n const iterateOn = Object.entries(field.validation);\r\n iterateOn.forEach((validationObj: any) => {\r\n this.processTrackChanges(validationObj[1].value, masterNames, changes$, field, form);\r\n });\r\n return merge(...changes$);\r\n }\r\n\r\n processTrackChanges(masterName: any, masterNames: Set<string>, changes$: Observable<FieldChange>[], field: IssField, form: FormGroup) {\r\n if (typeof masterName !== \"string\") {\r\n return;\r\n }\r\n\r\n const masterCtrl: AbstractControl | null = form.get(masterName);\r\n const masterField: IssField | undefined = this.getField(form, masterName);\r\n\r\n if (!masterField) {\r\n return;\r\n }\r\n\r\n if (!masterCtrl) {\r\n return;\r\n }\r\n\r\n if (masterNames.has(masterName)) {\r\n return;\r\n }\r\n\r\n masterNames.add(masterName);\r\n // if the field tracks itself, will not subscribe to value changes, it avoids infinite loops\r\n if (field.name === masterName) {\r\n changes$.push(of({\r\n trackedField: masterField,\r\n trackedControl: masterCtrl,\r\n value: masterCtrl.value\r\n }));\r\n } else {\r\n changes$.push(this.#mapMasterFieldValueChangesToFieldChanges(masterField, masterCtrl));\r\n }\r\n }\r\n\r\n fieldHasValidation(field: IssField): boolean {\r\n return !!(field.validation && Object.values(field.validation).filter((v) => v).length);\r\n }\r\n\r\n fieldHasAsyncValidation(field: IssField): boolean {\r\n return !!(field.asyncValidation && Object.values(field.asyncValidation).filter((v) => v).length);\r\n }\r\n\r\n isFormValid(form: FormGroup, fields: IssField[]) {\r\n return fields.map((childField: IssField) => {\r\n const currentCtrl = form.get(childField.name);\r\n if (childField.validation?.required() && childField.visible() && childField.mode() === \"edit\" && currentCtrl?.status !== \"DISABLED\") {\r\n return currentCtrl?.valid;\r\n }\r\n return true;\r\n }).every((status) => status);\r\n }\r\n\r\n #registrations(form: FormGroup): OutletRegistration[] {\r\n const owners: Map<object, OutletRegistration> | undefined = this.#registry.get(form);\r\n if (!owners) {\r\n return [];\r\n }\r\n return Array.from(owners.values());\r\n }\r\n\r\n #registration(form: FormGroup, owner: object): OutletRegistration {\r\n let owners: Map<object, OutletRegistration> | undefined = this.#registry.get(form);\r\n if (!owners) {\r\n owners = new Map<object, OutletRegistration>();\r\n this.#registry.set(form, owners);\r\n }\r\n let registration: OutletRegistration | undefined = owners.get(owner);\r\n if (!registration) {\r\n registration = { fields: [], expectedFieldNames: [] };\r\n owners.set(owner, registration);\r\n }\r\n return registration;\r\n }\r\n\r\n #validatorsToNgValidators(field: IssField): ValidatorFn[] {\r\n return this.#mapNgValidators(field.validation).map((validatorValue: any) => validatorValue?.fn(field));\r\n }\r\n\r\n #mapNgValidators(validationObj: FieldAsyncValidation | any): ValidatorFn[] {\r\n return Object.entries((validationObj ? validationObj : {}))\r\n .filter((validationObj) => validationObj[1] !== undefined)\r\n .map((validationObj): ValidatorFn => <ValidatorFn>validationObj[1]);\r\n }\r\n\r\n #asyncValidatorsToNgValidators(field: IssField): AsyncValidatorFn[] {\r\n return this.#mapNgValidators(field.asyncValidation).map((validatorValue: any) => validatorValue?.fn(field));\r\n }\r\n\r\n #mapMasterFieldValueChangesToFieldChanges(masterField: IssField, masterCtrl: AbstractControl): Observable<FieldChange> {\r\n return masterCtrl.valueChanges.pipe(\r\n map((value: string): FieldChange => {\r\n return {\r\n trackedField: masterField,\r\n trackedControl: masterCtrl,\r\n value: value,\r\n };\r\n })\r\n );\r\n }\r\n}\r\n","import { Type } from \"@angular/core\";\r\nimport { DynamicImport } from \"../interfaces/import\";\r\n\r\n/**\r\n * Maps a field's `type` to the `iss-field-*` component that renders it.\r\n *\r\n * The outlet looks the field up here and lazy-loads the component, so a `type` that is not\r\n * a key of this object renders nothing. Hover a field class for the `config` keys it reads.\r\n *\r\n * | `type` | Component | Control | Renders |\r\n * | --- | --- | --- | --- |\r\n * | `text_input` | `InputField` | `iss-ctrl-input` | Single line text, number, email, password. |\r\n * | `textarea` | `TextareaField` | `iss-ctrl-textarea` | Multi line free text. |\r\n * | `dropdown_list` | `SelectField` | `iss-ctrl-select` | Searchable single/multi select. |\r\n * | `toggle_button` | `ToggleButtonField` | `iss-ctrl-toggle-button` | Options as a button group. |\r\n * | `checkbox` | `CheckboxField` | `iss-ctrl-checkbox` | Multi choice checkbox list. |\r\n * | `radio` | `RadioField` | `iss-ctrl-radio` | Single choice radio list. |\r\n * | `date` | `DatePickerField` | `iss-ctrl-date-picker` | A single date. |\r\n * | `time` | `TimePickerField` | `iss-ctrl-time-picker` | A time of day. |\r\n * | `datetime` | `DatetimePickerField` | `iss-ctrl-datetime-picker` | Date and time together. |\r\n * | `date_range` | `DateRangePickerField` | `iss-ctrl-date-range-picker` | A start/end date range. |\r\n * | `attachment` | `FilePickerField` | `iss-ctrl-file-picker` | File upload. |\r\n * | `userPicker` | `UserPickerField` | `iss-ctrl-select` | Employee lookup. |\r\n * | `vehicle_plate` | `PlateField` | `iss-ctrl-plate-number` | Saudi vehicle plate. |\r\n * | `enrichment` | `NoteField` | — | Read-only explanatory text. |\r\n * | `mobile` | `MobileField` | `iss-ctrl-mobile` | International phone number. |\r\n * | `table` | `TableField` | `iss-ctrl-table` | Repeatable rows built from `children`. |\r\n * | `chips` | `ChipsField` | `iss-ctrl-chips` | Free text as removable chips. |\r\n * | `switch` | `SlideToggleField` | `iss-ctrl-slide-toggle` | Boolean on/off switch. |\r\n */\r\nexport const COMPONENTS: DynamicImport<Type<any>> = {\r\n text_input: () => import(\"../../components/controls/input/input.field\").then((c) => c.InputField),\r\n textarea: () => import(\"../../components/controls/textarea/textarea.field\").then((c) => c.TextareaField),\r\n\r\n dropdown_list: () => import(\"../../components/controls/select/select.field\").then((c) => c.SelectField),\r\n toggle_button: () => import(\"../../components/controls/toggle-button/toggle-button.field\").then((c) => c.ToggleButtonField),\r\n checkbox: () => import(\"../../components/controls/checkbox/checkbox.field\").then((c) => c.CheckboxField),\r\n radio: () => import(\"../../components/controls/radio/radio.field\").then((c) => c.RadioField),\r\n\r\n date: () => import(\"../../components/controls/date-picker/date-picker.field\").then((c) => c.DatePickerField),\r\n time: () => import(\"../../components/controls/time-picker/time-picker.field\").then((c) => c.TimePickerField),\r\n datetime: () => import(\"../../components/controls/datetime-picker/datetime-picker.field\").then((c) => c.DatetimePickerField),\r\n date_range: () => import(\"../../components/controls/date-range-picker/date-range-picker.field\").then((c) => c.DateRangePickerField),\r\n\r\n attachment: () => import(\"../../components/controls/file-picker/file-picker.field\").then((c) => c.FilePickerField),\r\n\r\n userPicker: () => import(\"../../components/controls/user-picker/user-picker.field\").then((c) => c.UserPickerField),\r\n\r\n vehicle_plate: () => import(\"../../components/controls/plate/plate.field\").then((c) => c.PlateField),\r\n\r\n enrichment: () => import(\"../../components/controls/note/note.field\").then((c) => c.NoteField),\r\n\r\n mobile: () => import(\"../../components/controls/mobile/mobile.field\").then((c) => c.MobileField),\r\n\r\n table: () => import(\"../../components/controls/table/table.field\").then((c) => c.TableField),\r\n\r\n chips: () => import(\"../../components/controls/chips/chips.field\").then((c) => c.ChipsField),\r\n\r\n switch: () => import(\"../../components/controls/slide-toggle/slide-toggle.field\").then((c) => c.SlideToggleField),\r\n};\r\n","import { Type } from \"@angular/core\";\r\nimport { DynamicImport } from \"../interfaces/import\";\r\n\r\nexport const SERVICES: DynamicImport<Type<any>> = {\r\n setValue: () => import(\"../../events/set-value/set-value-event\").then((s) => s.SetValueEvent),\r\n show: () => import(\"../../events/show/show-event\").then((s) => s.ShowEvent),\r\n load: () => import(\"../../events/load/load-value-event\").then((s) => s.LoadValueEvent),\r\n loadOptions: () => import(\"../../events/load/load-options-event\").then((s) => s.LoadOptionsEvent),\r\n triggerBasedOnJsonValue: () => import(\"../../events/triggers/trigger-based-on-json-value\").then((s) => s.TriggerBasedOnJsonValue),\r\n replaceApiKeyDefaultImpl: () => import(\"../../events/load/replace-api-keys\").then((s) => s.ReplaceApiKeys),\r\n};\r\n","import { Type } from \"@angular/core\";\nimport { DynamicImport } from \"../interfaces/import\";\n\n// Read-only counterpart of COMPONENTS: the component used to render a field's value\n// without an editable control, keyed by the same field types.\nexport const VIEWERS: DynamicImport<Type<any>> = {\n date: () => import(\"../../components/controls/date-picker/date-picker.viewer\").then((c) => c.DatePickerViewer),\n datetime: () => import(\"../../components/controls/datetime-picker/datetime-picker.viewer\").then((c) => c.DatePickerTimeViewer),\n dateRange: () => import(\"../../components/controls/date-range-picker/date-range-picker.viewer\").then((c) => c.DateRangePickerViewer),\n date_range: () => import(\"../../components/controls/date-range-picker/date-range-picker.viewer\").then((c) => c.DateRangePickerViewer),\n select: () => import(\"../../components/controls/select/select.viewer\").then((c) => c.SelectViewer),\n input: () => import(\"../../components/controls/input/input.viewer\").then((c) => c.InputViewer),\n text: () => import(\"../../components/controls/input/input.viewer\").then((c) => c.InputViewer),\n checkbox: () => import(\"../../components/controls/checkbox/checkbox.viewer\").then((c) => c.CheckboxViewer),\n file: () => import(\"../../components/controls/file-picker/attachment.viewer\").then((c) => c.AttachmentViewer),\n file2: () => import(\"../../components/controls/file-picker/attachment.viewer\").then((c) => c.AttachmentViewer),\n radio: () => import(\"../../components/controls/radio/radio.viewer\").then((c) => c.RadioViewer),\n textarea: () => import(\"../../components/controls/textarea/textarea.viewer\").then((c) => c.TextareaViewer),\n chips: () => import(\"../../components/controls/chips/chips.viewer\").then((c) => c.ChipsViewer),\n plate: () => import(\"../../components/controls/plate/plate.viewer\").then((c) => c.PlateViewer),\n slideToggle: () => import(\"../../components/controls/slide-toggle/slide-toggle.viewer\").then((c) => c.SlideToggleViewer),\n toggle: () => import(\"../../components/controls/toggle-button/toggle-button.viewer\").then((c) => c.ToggleButtonViewer),\n time: () => import(\"../../components/controls/time-picker/time-picker.viewer\").then((c) => c.TimePickerViewer),\n mobile: () => import(\"../../components/controls/mobile/mobile.viewer\").then((c) => c.MobileViewer),\n};\n","import { inject, Injectable, Injector, Type } from \"@angular/core\";\r\nimport { from, Observable, of, tap } from \"rxjs\";\r\nimport { IssField } from \"../classes/iss-field\";\r\nimport { COMPONENTS } from \"../indexes/components.index\";\r\nimport { SERVICES } from \"../indexes/services.index\";\r\nimport { VIEWERS } from \"../indexes/viewers.index\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class Loader {\r\n #injector: Injector = inject(Injector);\r\n #loadedComponents: Map<string, Type<any>> = new Map();\r\n #loadedViewers: Map<string, Type<any>> = new Map();\r\n #loadedServices: Map<string, <T>() => Promise<T>> = new Map();\r\n\r\n loadComponent(field: IssField): Observable<Type<any> | null> {\r\n const loadedComponent: Type<any> | undefined = this.#loadedComponents.get(field.type);\r\n if (loadedComponent) {\r\n return of(loadedComponent);\r\n }\r\n\r\n const componentImportFn = COMPONENTS[field.type];\r\n if (!componentImportFn) {\r\n return of(null);\r\n }\r\n\r\n return this.#createObservableFromPromise(componentImportFn, field.type, this.#loadedComponents);\r\n }\r\n\r\n loadViewer(type: string): Observable<Type<any> | null> {\r\n const loadedViewer: Type<any> | undefined = this.#loadedViewers.get(type);\r\n if (loadedViewer) {\r\n return of(loadedViewer);\r\n }\r\n\r\n const viewerImportFn = VIEWERS[type];\r\n if (!viewerImportFn) {\r\n return of(null);\r\n }\r\n\r\n return this.#createObservableFromPromise(viewerImportFn, type, this.#loadedViewers);\r\n }\r\n\r\n loadService<T>(serviceName: string): undefined | (() => Promise<T>) {\r\n const loadedService: (<T>() => Promise<T>) | undefined = this.#loadedServices.get(serviceName);\r\n if (loadedService) {\r\n return loadedService;\r\n }\r\n if (!SERVICES[serviceName]) {\r\n // throw new Error(`Service ${serviceName} not found`);\r\n return undefined;\r\n }\r\n return () => SERVICES[serviceName]()\r\n .then((serviceClass: Type<any>) => this.#injector.get(serviceClass))\r\n .then((loadedService) => {\r\n this.#loadedServices.set(serviceName, () => loadedService);\r\n return loadedService;\r\n });\r\n }\r\n\r\n #createObservableFromPromise(componentImportFn: () => Promise<Type<any>>, type: string, cache: Map<string, Type<any>>): Observable<Type<any>> {\r\n return from(componentImportFn()).pipe(\r\n tap((component: Type<any>) => {\r\n cache.set(type, component);\r\n })\r\n );\r\n }\r\n}\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { IssField } from \"../classes/iss-field\";\r\n\r\nexport const FIELD_DATA: InjectionToken<IssField> = new InjectionToken(\"Form Field Data\");\r\n","import { inject, Injector, Pipe, PipeTransform } from \"@angular/core\";\r\nimport { IssField } from \"../../shared/classes/iss-field\";\r\nimport { FIELD_DATA } from \"../../shared/tokens/field.token\";\r\n\r\n@Pipe({name: \"FieldDataInjector\"})\r\nexport class FieldDataInjector implements PipeTransform {\r\n injector: Injector = inject(Injector);\r\n\r\n transform(field: IssField | null): Injector {\r\n return Injector.create({\r\n parent: this.injector,\r\n providers: [\r\n {\r\n provide: FIELD_DATA,\r\n useValue: field,\r\n },\r\n ],\r\n });\r\n }\r\n}\r\n","import { AsyncPipe, NgComponentOutlet } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, DestroyRef, effect, EffectRef, inject, input, InputSignal, OnDestroy, OnInit, output, OutputEmitterRef, signal, WritableSignal } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { ControlContainer, FormGroup } from \"@angular/forms\";\r\nimport { debounceTime, first, map } from \"rxjs\";\r\nimport { IssField } from \"../../shared/classes/iss-field\";\r\nimport { VALIDATORS } from \"../../shared/indexes/validators.index\";\r\nimport { FormEngine } from \"../../shared/services/form-engine\";\r\nimport { Loader } from \"../../shared/services/loader\";\r\nimport { ComponentOutlet } from \"./component-outlet\";\r\nimport { FieldDataInjector } from \"./field-data-injector\";\r\n\r\n@Component({\r\n selector: \"iss-form-outlet\",\r\n imports: [\r\n NgComponentOutlet,\r\n FieldDataInjector,\r\n AsyncPipe,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n @if (components() && components()?.length) {\r\n @for (component of components(); track $index) {\r\n <ng-container\r\n [ngComponentOutlet]=\"component.self$ | async\"\r\n [ngComponentOutletInjector]=\"component.data | FieldDataInjector\"\r\n [ngComponentOutletInputs]=\"{formReady: formReady(), issField: component.data | FieldDataInjector}\"\r\n />\r\n }\r\n }\r\n `\r\n})\r\nexport class Outlet implements OnInit, OnDestroy {\r\n ready: OutputEmitterRef<boolean> = output();\r\n formReady: WritableSignal<boolean> = signal(false);\r\n fields: InputSignal<IssField[]> = input.required<IssField[]>();\r\n components: WritableSignal<ComponentOutlet[] | null> = signal(null);\r\n #controlContainer: ControlContainer = inject(ControlContainer);\r\n #destroyRef: DestroyRef = inject(DestroyRef);\r\n #formEngine: FormEngine = inject(FormEngine);\r\n #loader: Loader = inject(Loader);\r\n #effectRef: EffectRef = effect((onCleanup) => {\r\n // Dynamic imports cannot be canceled, but an old result must never replace\r\n // the components produced for a newer fields input (or a destroyed outlet).\r\n let active: boolean = true;\r\n onCleanup(() => {\r\n active = false;\r\n });\r\n\r\n // Remove the previous outlet immediately. This destroys its field components\r\n // (which remove their controls in ngOnDestroy) and prevents A's metadata from\r\n // being returned while B is still loading.\r\n this.components.set(null);\r\n this.#formEngine.registerFields(this.hostFormGroup, this, []);\r\n\r\n void this.#componentsFactory(this.fields()).then((components: ComponentOutlet[]) => {\r\n if (!active) {\r\n return;\r\n }\r\n this.components.set(components);\r\n this.#formEngine.registerFields(this.hostFormGroup, this, components.map((component: ComponentOutlet) => component.data));\r\n });\r\n });\r\n\r\n get hostFormGroup(): FormGroup {\r\n return this.#controlContainer.control as FormGroup;\r\n }\r\n\r\n ngOnInit() {\r\n const expectedFieldNames: string[] = this.fields()\r\n .filter((f: IssField) => f.mode() === \"edit\" || (f.mode() === \"view\" && f.value))\r\n .map((f: IssField) => f.name);\r\n this.#formEngine.registerExpectedFieldNames(this.hostFormGroup, this, expectedFieldNames);\r\n\r\n this.#listenToHostFormGroupChanges().pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((isReady) => {\r\n if (isReady) {\r\n this.formReady.set(true);\r\n this.ready.emit(true);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#effectRef.destroy();\r\n this.#formEngine.unregisterOutlet(this.hostFormGroup, this);\r\n }\r\n\r\n async #componentsFactory(fields: IssField[]): Promise<ComponentOutlet[]> {\r\n const fieldsComponentPromise = fields.map(async (field: IssField): Promise<ComponentOutlet> => {\r\n return {\r\n self$: this.#loader.loadComponent(field),\r\n data: await this.#initField(field)\r\n };\r\n });\r\n return await Promise.all(fieldsComponentPromise);\r\n }\r\n\r\n /*todo needs refactoring to be in the issField class*/\r\n\r\n async #initField(field: any): Promise<IssField> {\r\n const f: IssField = new IssField(field, this.#loader);\r\n\r\n await Promise.all([\r\n this.#loadFieldEvents(f),\r\n this.#loadFieldValidation(f)\r\n ]);\r\n\r\n return f;\r\n }\r\n\r\n async #loadFieldEvents(f: IssField): Promise<void> {\r\n if (!f.events?.length) return;\r\n\r\n await Promise.all(\r\n f.events.map(async (action) => {\r\n const [fn, triggerFn, configFn] = await Promise.all([\r\n action.fnPromise,\r\n action.config.triggerFnPromise,\r\n action.config.fnPromise\r\n ]);\r\n\r\n action.fn = fn;\r\n if (triggerFn) {\r\n action.config.triggerFn = triggerFn;\r\n }\r\n action.config.fn = configFn;\r\n })\r\n );\r\n }\r\n\r\n async #loadFieldValidation(f: IssField): Promise<void> {\r\n if (!f.validation) return;\r\n\r\n const validationEntries = Object.entries(f.validation).filter(\r\n ([key, validation]) => {\r\n if (VALIDATORS[key] === undefined) {\r\n console.error(`${key} not found`);\r\n return false;\r\n }\r\n return validation !== undefined && !validation?.hasOwnProperty(\"fn\");\r\n }\r\n );\r\n\r\n await Promise.all(\r\n validationEntries.map(async ([key, validation]) => {\r\n f.validation[key] = {\r\n fn: await VALIDATORS[key](),\r\n value: validation\r\n };\r\n })\r\n );\r\n }\r\n\r\n #listenToHostFormGroupChanges() {\r\n return this.hostFormGroup.valueChanges.pipe(\r\n debounceTime(500),\r\n map(() => {\r\n const controlNames = Object.keys(this.hostFormGroup.getRawValue());\r\n const fieldNames: string[] = this.#formEngine.getExpectedFieldNames(this.hostFormGroup);\r\n const diff = fieldNames.filter((x: string) => !controlNames.includes(x));\r\n return diff.length === 0;\r\n }),\r\n first((v) => v)\r\n );\r\n }\r\n}\r\n","import { inject, StaticProvider } from \"@angular/core\";\r\nimport { ControlContainer } from \"@angular/forms\";\r\n\r\nexport const VIEW_PROVIDER: StaticProvider = {\r\n provide: ControlContainer,\r\n useFactory: () => inject(ControlContainer, {skipSelf: true}),\r\n};\r\n","import { ValidationMessage } from \"../interfaces/validation\";\r\n\r\nexport const VALIDATION_MESSAGES: ValidationMessage = {\r\n required: () => {\r\n return {\r\n en: \"Mandatory Field\",\r\n ar: \"حقل إجباري\",\r\n };\r\n },\r\n requiredTrue: () => {\r\n return {\r\n en: \"Please Choose\",\r\n ar: \"يُرجى الموافقة\",\r\n };\r\n },\r\n email: () => {\r\n return {\r\n en: \"Please enter a valid email address\",\r\n ar: \"يرجى كتابة عنوان بريد إلكتروني صحيح\",\r\n };\r\n },\r\n minlength: ({requiredLength}: { requiredLength: number }) => {\r\n return {\r\n en: `Please enter at least ${requiredLength} characters`,\r\n ar: `يُرجى إدخال ${requiredLength} على الأقل`,\r\n };\r\n },\r\n maxlength: ({requiredLength}: { requiredLength: number }) => {\r\n return {\r\n en: `Please enter at most ${requiredLength} characters`,\r\n ar: `يُرجى إدخال ${requiredLength} على الأكثر`,\r\n };\r\n },\r\n maxAllowedUsers: (max: number) => {\r\n return {\r\n en: `Please enter at most ${max} users`,\r\n ar: `يُرجى اختيار ${max} مستخدم على الأكثر `,\r\n };\r\n },\r\n minAllowedUsers: (min: number) => {\r\n return {\r\n en: `Please enter at least ${min} users`,\r\n ar: `يُرجى اختيار ${min} مستخدم على الأقل `,\r\n };\r\n },\r\n min: ({min}: { min: number }) => {\r\n return {\r\n en: `Please enter at least ${min}`,\r\n ar: `يُرجى إدخال ${min} على الأقل`,\r\n };\r\n },\r\n max: ({max}: { max: number }) => {\r\n return {\r\n en: `Please enter at most ${max}`,\r\n ar: `يُرجى إدخال ${max} على الأكثر`,\r\n };\r\n },\r\n pattern: () => {\r\n return {\r\n en: \"Please enter a valid value\",\r\n ar: \"يرجى إدخال قيم صحيحة\",\r\n };\r\n },\r\n wrongTimeSelected: (wrongTimeSelected: string) => {\r\n return {\r\n en: `Selected time should be after ${wrongTimeSelected} hours from now.`,\r\n ar: `الوقت المختار يجب أن يكون بعد ${wrongTimeSelected} من الآن. `,\r\n };\r\n },\r\n relativeTimeValidation_after: (relativeTimeValidation: string) => {\r\n return {\r\n en: `The selected end date should be greater than the ${relativeTimeValidation}.`,\r\n ar: ` تاريخ الانتهاء يجب ان يكون اكبر من ${relativeTimeValidation}.`,\r\n };\r\n },\r\n relativeTimeValidation_before: (relativeTimeValidation: string) => {\r\n return {\r\n en: `Selected time should be before ${relativeTimeValidation}.`,\r\n ar: `الوقت المختار يجب أن يكون قبل ${relativeTimeValidation}.`,\r\n };\r\n },\r\n\r\n relativeTimeValidation_before_noOfDays: (relativeTimeValidation: string) => {\r\n return {\r\n en: `Selected time should be before ${relativeTimeValidation} .`,\r\n ar: `الوقت المختار يجب أن يكون قبل ${relativeTimeValidation} .`,\r\n };\r\n },\r\n relativeTimeValidation_within: (relativeTimeValidation: string) => {\r\n return {\r\n en: `Selected time should be within ${relativeTimeValidation}.`,\r\n ar: ` يجب أن يكون الوقت المحدد ضمن ${relativeTimeValidation}.`,\r\n };\r\n },\r\n fileType: ({validFileExtensions, inValidFileName}: { validFileExtensions: string, inValidFileName: string }) => ({\r\n en: `${inValidFileName} should be ${validFileExtensions}`,\r\n ar: `يجب أن يكون ${inValidFileName} بصيغة ${validFileExtensions}`,\r\n }),\r\n fileSize: ({limitSize, inValidFileName}: { limitSize: string, inValidFileName: string }) => ({\r\n en: `${inValidFileName} size should not exceed ${limitSize}.`,\r\n ar: `يجب ألا يزيد حجم ${inValidFileName}} عن ${limitSize}`,\r\n }),\r\n minFileCount: ({minCount, fileCount}: { minCount: number, fileCount: number }) => {\r\n return {\r\n en: `At least ${minCount} file(s) required, but only ${fileCount} selected.`,\r\n ar: `تتطلب العملية على الأقل ${minCount} ملف(ات)، لكن تم اختيار ${fileCount} فقط.`,\r\n };\r\n },\r\n maxFileCount: ({maxCount, fileCount}: { maxCount: number, fileCount: number }) => {\r\n return {\r\n en: `You can upload a maximum of ${maxCount} file(s). You have selected ${fileCount} file(s).`,\r\n ar: `يمكنك تحميل حد أقصى من ${maxCount} ملف(ات). لقد قمت باختيار ${fileCount} ملف(ات).`\r\n };\r\n }\r\n};\r\n","import {InjectionToken} from \"@angular/core\";\r\n\r\nexport const UI_LANGUAGE: InjectionToken<string> = new InjectionToken(\"UI SELECTED LANGUAGE\");\r\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\r\nimport { I18n } from \"../interfaces/i18n\";\r\nimport { UI_LANGUAGE } from \"../tokens/language.token\";\r\n\r\n@Pipe({name: \"translate\"})\r\nexport class TranslatePipe implements PipeTransform {\r\n currentLanguage = inject(UI_LANGUAGE);\r\n\r\n transform(value: I18n | string, locale: string = \"\"): string {\r\n if (typeof value === \"string\") {\r\n return value; // Return the string as is, if it's a string\r\n }\r\n\r\n if (value && locale) {\r\n return value[locale as keyof I18n];\r\n }\r\n\r\n return value?.[this.currentLanguage as keyof I18n];\r\n }\r\n}\r\n","import { KeyValuePipe } from \"@angular/common\";\r\nimport { Component, input, InputSignal } from \"@angular/core\";\r\nimport { ValidationErrors } from \"@angular/forms\";\r\nimport { MatError } from \"@angular/material/form-field\";\r\nimport { VALIDATION_MESSAGES } from \"../../shared/constants/validation.const\";\r\nimport { TranslatePipe } from \"../../shared/pipes/translate.pipe\";\r\n\r\n@Component({\r\n selector: \"iss-validation-message-viewer\",\r\n imports: [\r\n KeyValuePipe,\r\n TranslatePipe,\r\n MatError\r\n ],\r\n template: `\r\n @if (errors() !== null && showMessage()) {\r\n @for (error of errors() ?? {} | keyvalue; track error) {\r\n <p>\r\n <mat-error>{{ getValidationMessage(error) | translate }}</mat-error>\r\n </p>\r\n }\r\n }\r\n `,\r\n})\r\nexport class ValidationMessageComponent {\r\n errors: InputSignal<ValidationErrors | null> = input.required();\r\n showMessage: InputSignal<boolean> = input.required();\r\n\r\n getValidationMessage(error: { key: string, value: any }): any {\r\n const errorMessageGenerator = VALIDATION_MESSAGES[error.key];\r\n if (!errorMessageGenerator) {\r\n console.warn(`THERE IS NO VALIDATION MESSAGE FOR KEY \"${error.key}\"`);\r\n return error.key;\r\n }\r\n return errorMessageGenerator(error.value);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { FieldEvent } from \"../../shared/classes/field-event\";\r\nimport { IssField } from \"../../shared/classes/iss-field\";\r\nimport { FieldChange } from \"../../shared/interfaces/event-strategy\";\r\nimport { ActionTriggerFn } from \"../../shared/interfaces/event-trigger-fn\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class EventTrigger implements ActionTriggerFn {\r\n isTriggered(field: IssField, change: FieldChange, action: FieldEvent, masterField?: IssField): boolean {\r\n if (field.name === action.trackedFieldName) {\r\n return true;\r\n }\r\n return action.value.split(\",\").some((actionValue: string) => {\r\n if (actionValue === \"*\" && change.value !== null && change.value !== undefined) {\r\n return true;\r\n }\r\n\r\n if (!change) {\r\n return false;\r\n }\r\n\r\n if (change.value === null || change.value === undefined) {\r\n return false;\r\n }\r\n\r\n const changeValueArray: string[] = change?.value.toString().split(\",\").map((val) => val.trim());\r\n return (changeValueArray?.includes(actionValue.trim()));\r\n });\r\n }\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { FieldEvent } from \"../../shared/classes/field-event\";\r\nimport { IssField } from \"../../shared/classes/iss-field\";\r\nimport { FieldChange } from \"../../shared/interfaces/event-strategy\";\r\nimport { ActionTriggerFn } from \"../../shared/interfaces/event-trigger-fn\";\r\nimport { EventTrigger } from \"./event-trigger\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class EventTriggerManager {\r\n actionTriggerService = inject(EventTrigger);\r\n\r\n async getActionsToBeTriggered(field: IssField, change: FieldChange): Promise<FieldEvent[]> {\r\n const actionsToBeTriggered: FieldEvent[] = [];\r\n for (const action of field.events) {\r\n /* todo remove await from array and use allSettle instead or any other solution */\r\n const isTruthy = await this.#filterCondition(field, action, change);\r\n if (isTruthy) {\r\n actionsToBeTriggered.push(action);\r\n }\r\n }\r\n return actionsToBeTriggered;\r\n }\r\n\r\n async getActionsToBeReverted(field: IssField, change: FieldChange): Promise<FieldEvent[]> {\r\n const actionsToBeReverted: FieldEvent[] = [];\r\n for (const action of field.events) {\r\n if (action.trackedFieldName !== change.trackedField.name) {\r\n /* todo remove await from array and use allSettle instead or any other solution */\r\n const isTruthy = await this.#filterCondition(field, action, change);\r\n\r\n if (!isTruthy && action.triggered) {\r\n actionsToBeReverted.push(action);\r\n }\r\n }\r\n }\r\n return actionsToBeReverted;\r\n }\r\n\r\n async #filterCondition(field: IssField, action: FieldEvent, change: FieldChange) {\r\n let triggerFn: ActionTriggerFn = action.config.triggerFn;\r\n if (!triggerFn && action.config.triggerFnPromise) {\r\n triggerFn = await action.config.triggerFnPromise;\r\n }\r\n\r\n if (triggerFn) {\r\n return triggerFn.isTriggered(field, change, action);\r\n }\r\n\r\n return this.actionTriggerService.isTriggered(field, change, action);\r\n }\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { AbstractControl, FormGroup } from \"@angular/forms\";\r\nimport { FieldEvent } from \"../shared/classes/field-event\";\r\nimport { IssField } from \"../shared/classes/iss-field\";\r\nimport { EventArgument, EventStrategy, FieldChange } from \"../shared/interfaces/event-strategy\";\r\nimport { EventTriggerManager } from \"./triggers/event-trigger-manager\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class EventHandler {\r\n #actionTriggerManager: EventTriggerManager = inject(EventTriggerManager);\r\n\r\n async fire(control: AbstractControl, form: FormGroup, field: IssField, change: FieldChange) {\r\n let actions: FieldEvent[] = await this.#actionTriggerManager.getActionsToBeTriggered(field, change);\r\n /* todo need to follow up on actions on this field (self) */\r\n for (let i = 0; i < actions.length; i++) {\r\n let evt: EventStrategy | undefined = actions[i].fn;\r\n if (!evt) {\r\n /* todo remove await from array and use allSettle instead or any other solution */\r\n evt = await actions[i].fnPromise;\r\n }\r\n const args: EventArgument = this.#fieldEventArgumentFactory(control, form, field, change, actions[i]);\r\n evt?.fire(args);\r\n }\r\n }\r\n\r\n async revert(control: AbstractControl, form: FormGroup, field: IssField, change: FieldChange) {\r\n const actions: FieldEvent[] = await this.#actionTriggerManager.getActionsToBeReverted(field, change);\r\n for (let i = 0; i < actions.length; i++) {\r\n let evt: EventStrategy | undefined = actions[i].fn;\r\n if (!evt) {\r\n evt = await actions[i].fnPromise;\r\n }\r\n const args: EventArgument = this.#fieldEventArgumentFactory(control, form, field, change, actions[i]);\r\n evt?.revert(args);\r\n }\r\n }\r\n\r\n #fieldEventArgumentFactory(control: AbstractControl, form: FormGroup, field: IssField, change: FieldChange, action: FieldEvent): EventArgument {\r\n return {\r\n action,\r\n change,\r\n control,\r\n field,\r\n form\r\n };\r\n }\r\n}\r\n","import { Component, DestroyRef, effect, EffectRef, inject, input, InputSignal, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { takeUntilDestroyed, toSignal } from \"@angular/core/rxjs-interop\";\r\nimport { ControlContainer, FormControl, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { EventHandler } from \"../../../events/event-handler\";\r\nimport { IssField } from \"../../../shared/classes/iss-field\";\r\nimport { FieldChange } from \"../../../shared/interfaces/event-strategy\";\r\nimport { FormEngine } from \"../../../shared/services/form-engine\";\r\nimport { FIELD_DATA } from \"../../../shared/tokens/field.token\";\r\n\r\n/**\r\n * Base class for every `iss-field-*` field.\r\n *\r\n * A field is the form-engine layer around a control: it reads its whole configuration from\r\n * the injected {@link IssField} (label, options, config, validation, events), registers its\r\n * `FormControl` on the parent `FormGroup` on init and removes it again on destroy, and\r\n * switches between the control (`mode() === \"edit\"`) and the viewer (`mode() === \"view\"`).\r\n *\r\n * ### Inputs\r\n * | Property | Type | Description |\r\n * | --- | --- | --- |\r\n * | `issField` | `IssField` | **Required.** The field definition; also provided through the `FIELD_DATA` token. |\r\n * | `formReady` | `boolean \\| undefined` | Set by the outlet once the whole form exists; gates event wiring. |\r\n *\r\n * ### Properties available on `field`\r\n * `name` · `type` · `base` · `label()` · `hint()` · `options()` · `api()` · `mode()` ·\r\n * `visible()` · `loading()` · `value` · `jsonValue` · `defaultValue` · `ctrlValue()` ·\r\n * `ctrlJsonValue()` · `events` · `validation` · `asyncValidation` · `children` ·\r\n * `response()` · `config` — see {@link IssField} and {@link FieldConfig}.\r\n *\r\n * Fields are not used directly in templates; the outlet resolves them from the field `type`\r\n * through the `COMPONENTS` index.\r\n */\r\n@Component({\r\n template: ``,\r\n imports: [ReactiveFormsModule]\r\n})\r\nexport class FieldBase implements OnInit, OnDestroy {\r\n /**\r\n * The field definition rendered by this component. Required.\r\n */\r\n issField: InputSignal<IssField> = input.required<IssField>();\r\n /**\r\n * Set by the outlet once every field is registered; field events start only after it turns true.\r\n */\r\n formReady = input<boolean>();\r\n /**\r\n * The {@link IssField} for this instance, injected through the `FIELD_DATA` token.\r\n */\r\n field: IssField = inject(FIELD_DATA);\r\n parentFormGroup: ControlContainer = inject(ControlContainer);\r\n formEngine: FormEngine = inject(FormEngine);\r\n eventHandler: EventHandler = inject(EventHandler);\r\n destroyRef: DestroyRef = inject(DestroyRef);\r\n /**\r\n * The `FormControl` this field registers on the parent form under `field.name`.\r\n */\r\n ctrl: FormControl = new FormControl(null);\r\n ctrlValueChange = toSignal(this.ctrl.valueChanges, { initialValue: this.ctrl.getRawValue() });\r\n #valueChangeEffectRef = effect(() => {\r\n this.field.ctrlValue.set(this.ctrlValueChange());\r\n });\r\n #eventEffectRef: EffectRef = effect(() => {\r\n if (this.formReady()) {\r\n this.#initiateEvents();\r\n }\r\n });\r\n\r\n get form() {\r\n return this.parentFormGroup.control as FormGroup;\r\n }\r\n\r\n ngOnInit() {\r\n this.#addControlToForm();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#valueChangeEffectRef.destroy();\r\n this.#eventEffectRef.destroy();\r\n this.#removeControlFromForm();\r\n }\r\n\r\n #addControlToForm(): void {\r\n this.ctrl.setValue(this.formEngine.getFieldValue(this.field));\r\n this.ctrl.setValidators(this.formEngine.createValidators(this.field));\r\n this.ctrl.setAsyncValidators(this.formEngine.createAsyncValidators(this.field));\r\n if (this.field.config.disabled() === true) {\r\n this.ctrl.disable({ emitEvent: false });\r\n }\r\n this.form.addControl(this.field.name, this.ctrl);\r\n\r\n if (this.ctrl.getRawValue()) {\r\n this.ctrl.markAsTouched();\r\n }\r\n }\r\n\r\n // a conditionally rendered field would otherwise leave its control behind on the host\r\n // form, keeping it in the form value and in the outlet's readiness diff forever\r\n #removeControlFromForm(): void {\r\n if (this.form?.get(this.field.name) === this.ctrl) {\r\n this.form.removeControl(this.field.name);\r\n }\r\n }\r\n\r\n #initiateEvents(): void {\r\n // todo don't start events in view mode, just set value\r\n if (this.field.events && this.field.events.length) {\r\n this.#startEvents();\r\n }\r\n\r\n if (this.field.validation) {\r\n this.#updateValidityOnMasterChanges();\r\n }\r\n }\r\n\r\n #startEvents(): void {\r\n this.formEngine.trackChangesEvents(this.field, this.form)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((change: FieldChange) => {\r\n this.eventHandler.revert(this.ctrl, this.form, this.field, change).then();\r\n this.eventHandler.fire(this.ctrl, this.form, this.field, change).then();\r\n });\r\n }\r\n\r\n #updateValidityOnMasterChanges() {\r\n this.formEngine.trackChangesValidations(this.field, this.form)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n this.ctrl.updateValueAndValidity({ emitEvent: false });\r\n });\r\n }\r\n}\r\n","import { Component, input, InputSignal } from \"@angular/core\";\r\n\r\n@Component({template: ``})\r\nexport class ViewerBase {\r\n field: InputSignal<any> = input.required();\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-input\",\r\n template: `\r\n {{ field().ctrlValue() }}\r\n `,\r\n})\r\nexport class InputViewer extends ViewerBase {}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { InputControl } from \"./input.control\";\r\nimport { InputViewer } from \"./input.viewer\";\r\n\r\n/**\r\n * `<iss-field-input>` — single line text, number, email or password entry.\r\n *\r\n * Rendered by the outlet for fields of type `text_input`. In `edit` mode it renders\r\n * {@link InputControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `type` | `string` | Native input type — `text`, `number`, `email`, `password`, … |\r\n * | `placeholder` | `string` | Placeholder shown while empty. |\r\n * | `min` | `number` | Minimum numeric value. |\r\n * | `max` | `number` | Maximum numeric value. |\r\n * | `minLength` | `number` | Minimum number of characters. |\r\n * | `maxLength` | `number` | Maximum number of characters. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"email\", \"type\": \"text_input\", \"label\": \"Email\", \"config\": { \"type\": \"email\", \"maxLength\": 120 } }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-input\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n InputControl,\r\n ValidationMessageComponent,\r\n InputViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-input\r\n [formControlName]=\"field.name\"\r\n [type]=\"field.config.type() ?? ''\"\r\n [placeholder]=\"field.config.placeholder() ?? ''\"\r\n [min]=\"field.config.min() ?? null\"\r\n [max]=\"field.config.max() ?? null\"\r\n [readonly]=\"field.config.readonly() ?? false\"\r\n [minLength]=\"field.config.minLength() ?? null\"\r\n [maxLength]=\"field.config.maxLength() ?? null\"\r\n >\r\n <label>{{ field.label() }}</label>\r\n </iss-ctrl-input>\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\r\n } @else {\r\n <iss-viewer-input [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class InputField extends FieldBase {}\r\n","import { Component } from \"@angular/core\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-textarea\",\r\n template: `\r\n {{ field().ctrlValue() }}\r\n `,\r\n})\r\nexport class TextareaViewer extends ViewerBase {\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { TextareaControl } from \"./textarea.control\";\r\nimport { TextareaViewer } from \"./textarea.viewer\";\r\n\r\n/**\r\n * `<iss-field-textarea>` — multi line free text.\r\n *\r\n * Rendered by the outlet for fields of type `textarea`. In `edit` mode it renders\r\n * {@link TextareaControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `minLength` | `number` | Minimum number of characters. |\r\n * | `maxLength` | `number` | Maximum number of characters. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"notes\", \"type\": \"textarea\", \"label\": \"Notes\", \"config\": { \"maxLength\": 500 } }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-textarea\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n TextareaControl,\r\n ValidationMessageComponent,\r\n TextareaViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-textarea [formControlName]=\"field.name\" [minLength]=\"field.config.minLength() ?? null\" [maxLength]=\"field.config.maxLength() ?? null\" [readonly]=\"field.config.readonly() ?? false\">\r\n <label>{{ field.label() }}</label>\r\n </iss-ctrl-textarea>\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\r\n } @else {\r\n <iss-viewer-textarea [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class TextareaField extends FieldBase {}\r\n","import { Component, computed } from \"@angular/core\";\r\nimport { MatChip, MatChipSet } from \"@angular/material/chips\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-chips\",\r\n imports: [\r\n MatChipSet,\r\n MatChip\r\n ],\r\n template: `\r\n <mat-chip-set>\r\n @for (keyword of keywords(); track keyword) {\r\n <mat-chip>{{ keyword }}</mat-chip>\r\n }\r\n </mat-chip-set>\r\n `\r\n})\r\nexport class ChipsViewer extends ViewerBase {\r\n keywords = computed(() => {\r\n return this.field().ctrlValue().split(\",\").map((c: string) => c.trim());\r\n });\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { ChipsControl } from \"./chips.control\";\r\nimport { ChipsViewer } from \"./chips.viewer\";\r\n\r\n/**\r\n * `<iss-field-chips>` — free text entered as removable chips.\r\n *\r\n * Rendered by the outlet for fields of type `chips`. In `edit` mode it renders\r\n * {@link ChipsControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"tags\", \"type\": \"chips\", \"label\": \"Tags\" }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-chips\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n ChipsControl,\r\n ValidationMessageComponent,\r\n ChipsViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-chips [formControlName]=\"field.name\" [readonly]=\"field.config.readonly() ?? false\"><label>{{ field.label() }}</label></iss-ctrl-chips>\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\r\n } @else {\r\n <iss-viewer-chips [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class ChipsField extends FieldBase {}\r\n","import { Component } from \"@angular/core\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-radio\",\r\n template: `\r\n <p>\r\n @for (item of field().ctrlJsonValue(); track item?.value) {\r\n <span>{{ item.label }}</span>\r\n }\r\n </p>\r\n `,\r\n})\r\nexport class RadioViewer extends ViewerBase {}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatLabel } from \"@angular/material/form-field\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { RadioControl } from \"./radio.control\";\r\nimport { RadioViewer } from \"./radio.viewer\";\r\n\r\n/**\r\n * `<iss-field-radio>` — one choice out of a fixed set of options.\r\n *\r\n * Rendered by the outlet for fields of type `radio`. In `edit` mode it renders\r\n * {@link RadioControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `hideLabel` | `boolean` | Hides the field label. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()` · `options()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"gender\", \"type\": \"radio\", \"label\": \"Gender\", \"options\": [{ \"value\": \"m\", \"label\": \"Male\" }] }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-radio\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n MatLabel,\r\n RadioControl,\r\n ValidationMessageComponent,\r\n RadioViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n <div style=\"display: flex; flex-direction: column\">\r\n @if (!field.config.hideLabel()) {\r\n <mat-label>{{ field.label() }}</mat-label>\r\n }\r\n\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-radio [formControlName]=\"field.name\" [options]=\"field.options()\" [readonly]=\"field.config.readonly() ?? false\" (onChange)=\"onChange($event)\"/>\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\r\n } @else {\r\n <iss-viewer-radio [field]=\"field\"/>\r\n }\r\n </div>\r\n }\r\n `\r\n})\r\nexport class RadioField extends FieldBase {\r\n onChange($event: any) {\r\n this.field.ctrlJsonValue.set($event);\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-select\",\r\n template: `\r\n <p>\r\n @for (item of field().ctrlJsonValue(); track item?.value; let last = $last) {\r\n <span>{{ item.label }} {{ last ? '' : ', ' }}</span>\r\n }\r\n </p>\r\n `,\r\n})\r\nexport class SelectViewer extends ViewerBase {}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { SelectControl } from \"./select.control\";\r\nimport { SelectViewer } from \"./select.viewer\";\r\n\r\n/**\r\n * `<iss-field-select>` — single or multiple selection from a dropdown.\r\n *\r\n * Rendered by the outlet for fields of type `dropdown_list`. In `edit` mode it renders\r\n * {@link SelectControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `multiple` | `boolean` | Allows selecting more than one option. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()` · `options()` · `ctrlJsonValue()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * The raw form value holds the selected option values; the resolved options are written\r\n * back to `field.ctrlJsonValue`.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"city\", \"type\": \"dropdown_list\", \"label\": \"City\", \"options\": [{ \"value\": \"1\", \"label\": \"Riyadh\" }] }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-select\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n SelectControl,\r\n ValidationMessageComponent,\r\n SelectViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-select [formControlName]=\"field.name\" [options]=\"field.options()\" [multiple]=\"field.config.multiple()\" [readonly]=\"field.config.readonly() ?? false\" (onChange)=\"onChange($event)\">\r\n <label>{{ field.label() }}</label>\r\n </iss-ctrl-select>\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\r\n } @else {\r\n <iss-viewer-select [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class SelectField extends FieldBase {\r\n onChange($event: string | FormData) {\r\n this.field.ctrlJsonValue.set($event);\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-mobile\",\r\n template: `\r\n <p>{{ field().value }}</p>\r\n `,\r\n})\r\nexport class MobileViewer extends ViewerBase {}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { MobileControl } from \"./mobile.control\";\r\nimport { MobileViewer } from \"./mobile.viewer\";\r\n\r\n/**\r\n * `<iss-field-mobile>` — an international phone number with a country selector.\r\n *\r\n * Rendered by the outlet for fields of the type `mobile`. In `edit` mode it renders\r\n * {@link MobileControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()`\r\n *\r\n * Every field also honors `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"mobile\", \"type\": \"mobile\", \"label\": \"Mobile\" }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-mobile\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n MobileControl,\r\n MobileViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-mobile [formControlName]=\"field.name\" [readonly]=\"field.config.readonly() ?? false\">\r\n <label>{{ field.label() }}</label>\r\n </iss-ctrl-mobile>\r\n } @else {\r\n <iss-viewer-mobile [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class MobileField extends FieldBase {}\r\n","import { Component } from \"@angular/core\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-checkbox\",\r\n standalone: true,\r\n template: `\r\n <p>\r\n @for (item of field().ctrlJsonValue(); track item?.value; let last = $last) {\r\n <span>{{ item.label }} {{ last ? '' : ', ' }}</span>\r\n }\r\n </p>\r\n `,\r\n})\r\nexport class CheckboxViewer extends ViewerBase {}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { CheckboxControl } from \"./checkbox.control\";\r\nimport { CheckboxViewer } from \"./checkbox.viewer\";\r\n\r\n/**\r\n * `<iss-field-checkbox>` — a list of checkboxes over a fixed set of options.\r\n *\r\n * Rendered by the outlet for fields of type `checkbox`. In `edit` mode it renders\r\n * {@link CheckboxControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `hideLabel` | `boolean` | Hides the field label. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()` · `options()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"days\", \"type\": \"checkbox\", \"label\": \"Days\", \"options\": [{ \"value\": \"sun\", \"label\": \"Sunday\" }] }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-checkbox\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n CheckboxControl,\r\n ValidationMessageComponent,\r\n CheckboxViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-checkbox [formControlName]=\"field.name\" [options]=\"field.options()\" [readonly]=\"field.config.readonly() ?? false\" (onChange)=\"updateField($event)\">\r\n @if (!field.config.hideLabel()) {\r\n <label>{{ field.label() }}</label>\r\n }\r\n </iss-ctrl-checkbox>\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\r\n } @else {\r\n <iss-viewer-checkbox [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class CheckboxField extends FieldBase {\r\n updateField($event: any) {\r\n this.field.ctrlJsonValue.set($event);\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-toggle-button\",\r\n template: `\r\n <p>\r\n @for (item of field().ctrlJsonValue(); track item?.value; let last = $last) {\r\n <span>{{ item.label }} {{ last ? '' : ', ' }}</span>\r\n }\r\n </p>\r\n `,\r\n})\r\nexport class ToggleButtonViewer extends ViewerBase {}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatLabel } from \"@angular/material/form-field\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { ToggleButtonControl } from \"./toggle-button.control\";\r\nimport { ToggleButtonViewer } from \"./toggle-button.viewer\";\r\n\r\n/**\r\n * `<iss-field-toggle-button>` — options rendered as a button group.\r\n *\r\n * Rendered by the outlet for fields of type `toggle_button`. In `edit` mode it renders\r\n * {@link ToggleButtonControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `multiple` | `boolean` | Allows more than one active button. |\r\n * | `hideLabel` | `boolean` | Hides the field label. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()` · `options()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"priority\", \"type\": \"toggle_button\", \"label\": \"Priority\", \"options\": [{ \"value\": \"high\", \"label\": \"High\" }] }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-toggle-button\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n MatLabel,\r\n ToggleButtonControl,\r\n ValidationMessageComponent,\r\n ToggleButtonViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (!field.config.hideLabel()) {\r\n <mat-label>{{ field.label() }}</mat-label>\r\n }\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-toggle-button\r\n [formControlName]=\"field.name\"\r\n [options]=\"field.options()\"\r\n [multiple]=\"field.config.multiple()\"\r\n [readonly]=\"field.config.readonly() ?? false\"\r\n (onChange)=\"onChange($event)\"\r\n />\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\r\n } @else {\r\n <iss-viewer-toggle-button [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class ToggleButtonField extends FieldBase {\r\n onChange($event: any) {\r\n this.field.ctrlJsonValue.set($event);\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-slide-toggle\",\r\n template: `\r\n @if (isChecked(field().ctrlValue())) {\r\n {{ field().label() + ' Yes' }}\r\n } @else {\r\n {{ field().label() + ' No' }}\r\n }\r\n `,\r\n})\r\nexport class SlideToggleViewer extends ViewerBase {\r\n // the control writes a boolean, while a value coming from the server is a string\r\n isChecked(value: unknown): boolean {\r\n return value === true || value === \"true\";\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatLabel } from \"@angular/material/form-field\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { SlideToggleControl } from \"./slide-toggle.control\";\r\nimport { SlideToggleViewer } from \"./slide-toggle.viewer\";\r\n\r\n/**\r\n * `<iss-field-slide-toggle>` — an on/off switch for a boolean value.\r\n *\r\n * Rendered by the outlet for fields of type `switch`. In `edit` mode it renders\r\n * {@link SlideToggleControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `hideLabel` | `boolean` | Hides the field label. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"active\", \"type\": \"switch\", \"label\": \"Active\" }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-slide-toggle\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [ReactiveFormsModule, MatLabel, SlideToggleControl, SlideToggleViewer, ValidationMessageComponent],\r\n template: `\r\n @if (field.visible()) {\r\n @if (!field.config.hideLabel()) {\r\n <mat-label>{{ field.label() }}</mat-label>\r\n }\r\n\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-slide-toggle [formControlName]=\"field.name\" [readonly]=\"field.config.readonly() ?? false\" (onChange)=\"onChange($event)\"/>\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\r\n } @else {\r\n <iss-viewer-slide-toggle [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class SlideToggleField extends FieldBase {\r\n onChange($event: any) {\r\n this.field.ctrlJsonValue.set($event);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, effect, signal } from \"@angular/core\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\nimport { PLATE_LETTERS } from \"./plate-letters.const\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-plate\",\r\n imports: [],\r\n template: `\r\n <div class=\"plate-container\">\r\n <div class=\"section numbers-section\">\r\n <div class=\"digit-row\">\r\n @for (numAr of numbersAr(); track numAr) {\r\n <span>{{ numAr }}</span>\r\n }\r\n </div>\r\n <div class=\"digit-row\">\r\n @for (numEn of numbersEn(); track numEn) {\r\n <span>{{ numEn }}</span>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"section emblem-section\">\r\n <svg class=\"emblem-svg\" viewBox=\"0 0 17 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M10.8072 16.8744C11.4633 16.178 11.3244 15.3914 10.7996 15.3825C10.9872 15.9606 10.5562 16.3344 10.3922 16.5266C9.97894 16.1712 9.55086 15.7761 9.10778 15.3694C11.2695 13.5812 13.6354 11.995 16.7263 11.9452C13.3983 10.7499 10.7417 12.7815 8.4925 14.8084C6.24308 12.7815 3.58672 10.7499 0.257812 11.9452C3.34944 11.995 5.71507 13.581 7.87722 15.3694C7.43329 15.7761 7.00564 16.1712 6.59172 16.5266C6.42902 16.3344 5.99777 15.9606 6.18435 15.3825C5.65992 15.3914 5.52089 16.178 6.17758 16.8744C5.91495 17.0931 5.48962 17.4631 5.15113 17.5518C4.89082 17.6199 4.68185 17.4846 4.63473 17.2026C4.53542 16.6069 3.61271 16.6959 3.72554 17.5372C3.82907 18.3044 4.76066 18.6391 5.55892 18.2837C5.87565 18.1424 6.3107 17.7413 6.66778 17.45C6.83111 17.641 7.26215 18.0145 7.07494 18.5935C7.59979 18.5838 7.7384 17.798 7.08234 17.1005C7.54845 16.7028 8.01625 16.2927 8.4925 15.887C8.96833 16.2925 9.43634 16.7028 9.90288 17.1005C9.24639 17.798 9.385 18.5838 9.91006 18.5935C9.72285 18.0145 10.1539 17.6414 10.3168 17.45C10.6745 17.7413 11.1091 18.1424 11.4263 18.2837C12.2246 18.6391 13.1555 18.3044 13.259 17.5372C13.3719 16.6959 12.4496 16.6069 12.3494 17.2026C12.3023 17.4846 12.094 17.6196 11.8332 17.5518C11.4948 17.4631 11.0696 17.0931 10.8072 16.8744ZM6.72504 5.72093C6.22365 7.04637 6.19597 8.53894 6.9169 10.1805C6.80195 8.47576 7.17594 7.06771 7.8713 6.0066L8.01815 7.46832H7.84679L8.01815 9.17958H7.84679L8.01815 10.8904H7.84679L8.01794 12.5991L7.53366 13.0819H8.4925H9.45156L8.96685 12.5991L9.13842 10.8904H8.96685L9.13842 9.17958H8.96685L9.13842 7.46832H8.96685L9.11391 6.0066C9.80906 7.06771 10.1833 8.47682 10.0683 10.1805C10.7886 8.53894 10.7616 7.047 10.2602 5.72093C11.1115 6.72478 11.7701 7.89851 12.0661 9.36572C12.3733 7.50466 11.848 5.98568 10.8852 4.8071C11.8174 5.47943 12.6184 6.33157 13.1785 7.48396C13.048 5.72072 12.1559 4.57742 10.927 3.75824C11.989 4.1054 12.8561 4.68645 13.6343 5.71798C13.1139 3.8884 11.9801 3.15564 10.575 2.74362C11.5332 2.67368 12.4386 2.78165 13.3347 3.33988C12.3621 2.02839 11.0565 1.81055 9.73257 1.95634C10.2893 1.67279 10.9158 1.53101 11.5888 1.63137C10.8302 1.07187 9.81836 1.01651 8.95227 1.48812L8.4925 0.328125L8.0321 1.48749C7.1658 1.01651 6.15476 1.07166 5.39623 1.63137C6.06877 1.53122 6.69483 1.67279 7.25179 1.95634C5.92826 1.81055 4.62311 2.0286 3.6499 3.33988C4.54662 2.78165 5.45137 2.67368 6.41001 2.74362C5.00534 3.15564 3.87112 3.8884 3.35113 5.71798C4.12868 4.68666 4.99625 4.1054 6.05842 3.75824C4.8287 4.57721 3.93704 5.72072 3.80625 7.48396C4.36618 6.33157 5.16782 5.47943 6.09962 4.8071C5.13676 5.98568 4.61149 7.50466 4.91871 9.36572C5.21494 7.89851 5.87354 6.72478 6.72504 5.72093Z\"\r\n fill=\"#1D252D\"\r\n />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"section letters-section\">\r\n <div class=\"arabic-row\" dir=\"rtl\">\r\n @for (lAr of lettersAr(); track lAr) {\r\n <span>{{ lAr }}</span>\r\n }\r\n </div>\r\n <div class=\"english-row\" dir=\"rtl\">\r\n @for (lEn of lettersEn(); track lEn) {\r\n <span>{{ lEn }}</span>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"ksa-strip\">\r\n <svg class=\"mini-emblem\" viewBox=\"0 0 17 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M10.8072 16.8744C11.4633 16.178 11.3244 15.3914 10.7996 15.3825C10.9872 15.9606 10.5562 16.3344 10.3922 16.5266C9.97894 16.1712 9.55086 15.7761 9.10778 15.3694C11.2695 13.5812 13.6354 11.995 16.7263 11.9452C13.3983 10.7499 10.7417 12.7815 8.4925 14.8084C6.24308 12.7815 3.58672 10.7499 0.257812 11.9452C3.34944 11.995 5.71507 13.581 7.87722 15.3694C7.43329 15.7761 7.00564 16.1712 6.59172 16.5266C6.42902 16.3344 5.99777 15.9606 6.18435 15.3825C5.65992 15.3914 5.52089 16.178 6.17758 16.8744C5.91495 17.0931 5.48962 17.4631 5.15113 17.5518C4.89082 17.6199 4.68185 17.4846 4.63473 17.2026C4.53542 16.6069 3.61271 16.6959 3.72554 17.5372C3.82907 18.3044 4.76066 18.6391 5.55892 18.2837C5.87565 18.1424 6.3107 17.7413 6.66778 17.45C6.83111 17.641 7.26215 18.0145 7.07494 18.5935C7.59979 18.5838 7.7384 17.798 7.08234 17.1005C7.54845 16.7028 8.01625 16.2927 8.4925 15.887C8.96833 16.2925 9.43634 16.7028 9.90288 17.1005C9.24639 17.798 9.385 18.5838 9.91006 18.5935C9.72285 18.0145 10.1539 17.6414 10.3168 17.45C10.6745 17.7413 11.1091 18.1424 11.4263 18.2837C12.2246 18.6391 13.1555 18.3044 13.259 17.5372C13.3719 16.6959 12.4496 16.6069 12.3494 17.2026C12.3023 17.4846 12.094 17.6196 11.8332 17.5518C11.4948 17.4631 11.0696 17.0931 10.8072 16.8744ZM6.72504 5.72093C6.22365 7.04637 6.19597 8.53894 6.9169 10.1805C6.80195 8.47576 7.17594 7.06771 7.8713 6.0066L8.01815 7.46832H7.84679L8.01815 9.17958H7.84679L8.01815 10.8904H7.84679L8.01794 12.5991L7.53366 13.0819H8.4925H9.45156L8.96685 12.5991L9.13842 10.8904H8.96685L9.13842 9.17958H8.96685L9.13842 7.46832H8.96685L9.11391 6.0066C9.80906 7.06771 10.1833 8.47682 10.0683 10.1805C10.7886 8.53894 10.7616 7.047 10.2602 5.72093C11.1115 6.72478 11.7701 7.89851 12.0661 9.36572C12.3733 7.50466 11.848 5.98568 10.8852 4.8071C11.8174 5.47943 12.6184 6.33157 13.1785 7.48396C13.048 5.72072 12.1559 4.57742 10.927 3.75824C11.989 4.1054 12.8561 4.68645 13.6343 5.71798C13.1139 3.8884 11.9801 3.15564 10.575 2.74362C11.5332 2.67368 12.4386 2.78165 13.3347 3.33988C12.3621 2.02839 11.0565 1.81055 9.73257 1.95634C10.2893 1.67279 10.9158 1.53101 11.5888 1.63137C10.8302 1.07187 9.81836 1.01651 8.95227 1.48812L8.4925 0.328125L8.0321 1.48749C7.1658 1.01651 6.15476 1.07166 5.39623 1.63137C6.06877 1.53122 6.69483 1.67279 7.25179 1.95634C5.92826 1.81055 4.62311 2.0286 3.6499 3.33988C4.54662 2.78165 5.45137 2.67368 6.41001 2.74362C5.00534 3.15564 3.87112 3.8884 3.35113 5.71798C4.12868 4.68666 4.99625 4.1054 6.05842 3.75824C4.8287 4.57721 3.93704 5.72072 3.80625 7.48396C4.36618 6.33157 5.16782 5.47943 6.09962 4.8071C5.13676 5.98568 4.61149 7.50466 4.91871 9.36572C5.21494 7.89851 5.87354 6.72478 6.72504 5.72093Z\"\r\n fill=\"#1D252D\"\r\n />\r\n </svg>\r\n <span class=\"ksa-text\">KSA</span>\r\n </div>\r\n </div>\r\n `,\r\n styles: `\r\n .plate-container {\r\n width: 600px;\r\n height: 130px;\r\n border: 4px solid #1D252D;\r\n border-radius: 10px;\r\n background: white;\r\n display: flex;\r\n box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);\r\n overflow: hidden;\r\n position: relative;\r\n }\r\n\r\n /* General Section Styling */\r\n .section {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n /* Left Section: Numbers/Asterisks */\r\n .numbers-section {\r\n flex: 2;\r\n padding: 0 10px;\r\n }\r\n\r\n .digit-row {\r\n display: flex;\r\n justify-content: space-between;\r\n width: 80%;\r\n font-size: 38px;\r\n line-height: 1;\r\n color: #1D252D;\r\n margin: 2px 0;\r\n }\r\n\r\n /* Middle Section: Emblem */\r\n .emblem-section {\r\n flex: 1.2;\r\n padding: 10px;\r\n }\r\n\r\n .emblem-svg {\r\n width: 100%;\r\n height: 100%;\r\n max-height: 90px;\r\n }\r\n\r\n /* Right Section: Letters */\r\n .letters-section {\r\n flex: 1.8;\r\n border-right: 2px solid #1D252D;\r\n padding: 0 10px;\r\n }\r\n\r\n .arabic-row {\r\n font-family: 'Noto Sans Arabic', sans-serif;\r\n font-size: 32px;\r\n display: flex;\r\n justify-content: space-around;\r\n width: 100%;\r\n margin-bottom: 5px;\r\n color: #1D252D;\r\n }\r\n\r\n .english-row {\r\n font-size: 38px;\r\n display: flex;\r\n justify-content: space-around;\r\n width: 100%;\r\n color: #1D252D;\r\n }\r\n\r\n /* Far Right: KSA Strip */\r\n .ksa-strip {\r\n width: 50px;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 10px 0;\r\n background-color: #fff; /* or specific reflective white */\r\n }\r\n\r\n .mini-emblem {\r\n width: 25px;\r\n height: auto;\r\n }\r\n\r\n .ksa-text {\r\n writing-mode: vertical-rl;\r\n text-orientation: upright;\r\n font-weight: 900;\r\n font-size: 16px;\r\n letter-spacing: 2px;\r\n color: #1D252D;\r\n margin-top: auto;\r\n margin-bottom: 5px;\r\n }\r\n\r\n .plate-input {\r\n background: transparent;\r\n border: none;\r\n text-align: center;\r\n font-family: inherit;\r\n font-size: inherit;\r\n font-weight: bold;\r\n color: #1D252D;\r\n width: 100%; /* Fill the flex/grid item */\r\n padding: 0;\r\n margin: 0;\r\n outline: none; /* Remove blue outline on focus */\r\n }\r\n\r\n /* Optional: Add a subtle underline or color change when user clicks the input */\r\n .plate-input:focus {\r\n border-bottom: 2px solid #1D252D;\r\n }\r\n\r\n /* Adjusting the container flex settings to ensure inputs fit */\r\n .digit-row, .arabic-row, .english-row {\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n }\r\n\r\n /* Specific sizing for numbers to ensure they match plate proportions */\r\n .number-input {\r\n /* Adjust width based on your container size, roughly 20-25% */\r\n flex: 1;\r\n }\r\n\r\n /* Specific sizing for letters */\r\n .letter-input {\r\n flex: 1;\r\n }\r\n\r\n /* Placeholder styling to look like a ghost plate */\r\n .plate-input::placeholder {\r\n color: #ccc;\r\n opacity: 1;\r\n }\r\n\r\n .input-wrapper {\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n flex: 1;\r\n }\r\n\r\n .error-tooltip {\r\n position: absolute;\r\n bottom: -15px;\r\n font-size: 10px;\r\n color: red;\r\n white-space: nowrap;\r\n }\r\n\r\n .plate-input.invalid {\r\n color: red;\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PlateViewer extends ViewerBase {\r\n numbersAr = signal<string[]>(Array(4).fill(\"\"));\r\n numbersEn = signal<string[]>(Array(4).fill(\"\"));\r\n lettersAr = signal<string[]>(Array(3).fill(\"\"));\r\n lettersEn = signal<string[]>(Array(3).fill(\"\"));\r\n effectRef = effect(() => {\r\n const val = this.field().value;\r\n if (val) {\r\n const parts = val.split(\"-\");\r\n const letters = parts[0]?.split(\"\") || [];\r\n const numbers = parts[1]?.split(\"\") || [];\r\n\r\n // Initialize letters\r\n const lAr: string[] = [];\r\n const lEn: string[] = [];\r\n for (let i = 0; i < 3; i++) {\r\n const char = letters[i] || \"\";\r\n if (char) {\r\n const plateLetter = PLATE_LETTERS.find(l => l.value === char || l.label.en === char || l.label.ar === char);\r\n if (plateLetter) {\r\n lAr.push(plateLetter.label.ar);\r\n lEn.push(plateLetter.label.en);\r\n } else {\r\n lAr.push(\"\");\r\n lEn.push(\"\");\r\n }\r\n } else {\r\n lAr.push(\"\");\r\n lEn.push(\"\");\r\n }\r\n }\r\n this.lettersAr.set(lAr);\r\n this.lettersEn.set(lEn);\r\n\r\n // Initialize numbers\r\n const nAr: string[] = [];\r\n const nEn: string[] = [];\r\n for (let i = 0; i < 4; i++) {\r\n const char = numbers[i] || \"\";\r\n if (char) {\r\n nAr.push(this.convertDigit(char, \"ar\"));\r\n nEn.push(this.convertDigit(char, \"en\"));\r\n } else {\r\n nAr.push(\"\");\r\n nEn.push(\"\");\r\n }\r\n }\r\n this.numbersAr.set(nAr);\r\n this.numbersEn.set(nEn);\r\n }\r\n });\r\n\r\n private convertDigit(digit: string, toLang: \"ar\" | \"en\"): string {\r\n const arDigits = [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"];\r\n const enDigits = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\r\n\r\n if (toLang === \"ar\") {\r\n const index = enDigits.indexOf(digit);\r\n return index !== -1 ? arDigits[index] : digit;\r\n } else {\r\n const index = arDigits.indexOf(digit);\r\n return index !== -1 ? enDigits[index] : digit;\r\n }\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatLabel } from \"@angular/material/form-field\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { PlateControl } from \"./plate.control\";\r\nimport { PlateViewer } from \"./plate.viewer\";\r\n\r\n/**\r\n * `<iss-field-plate-number>` — a Saudi vehicle plate in Arabic and English.\r\n *\r\n * Rendered by the outlet for fields of type `vehicle_plate`. In `edit` mode it renders\r\n * {@link PlateControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `hideLabel` | `boolean` | Hides the field label. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"plate\", \"type\": \"vehicle_plate\", \"label\": \"Plate number\" }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-plate-number\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n PlateControl,\r\n ValidationMessageComponent,\r\n MatLabel,\r\n PlateViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (!field.config.hideLabel()) {\r\n <mat-label>{{ field.label() }}</mat-label>\r\n }\r\n\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-plate-number [formControlName]=\"field.name\" [readonly]=\"field.config.readonly() ?? false\" (onChange)=\"updateField($event)\"/>\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\r\n } @else {\r\n <iss-viewer-plate [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class PlateField extends FieldBase {\r\n updateField($event: any) {\r\n this.field.ctrlJsonValue.set($event);\r\n }\r\n}\r\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, input, InputSignal, output, OutputEmitterRef } from \"@angular/core\";\r\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\r\nimport { MatTooltip } from \"@angular/material/tooltip\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\nimport { IssFile } from \"./file\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-attachment\",\r\n imports: [\r\n MatTooltip,\r\n MatProgressBar,\r\n ],\r\n template: `\r\n @if (attachments()?.length) {\r\n <section class=\"files-list\">\r\n @for (file of attachments(); track $index) {\r\n <div class=\"file-item-container\">\r\n @if (file) {\r\n <ds-attachments\r\n [matTooltip]=\"file.name\"\r\n [file]=\"file.file ?? file\"\r\n [showDownload]=\"field().config.showDownloadButton\"\r\n [attr.readonly]=\"!field().config.showDeleteButton\"\r\n (downloadEvent)=\"onDownload($event)\"\r\n (deleteEvent)=\"onDelete($index)\"\r\n >\r\n </ds-attachments>\r\n @if (uploading()) {\r\n <mat-progress-bar mode=\"indeterminate\" />\r\n }\r\n }\r\n </div>\r\n }\r\n </section>\r\n }\r\n `,\r\n styles: `\r\n .insideTableStyle {\r\n width: 272px;\r\n }\r\n\r\n .files-list {\r\n --file-item-width: 270px;\r\n display: grid;\r\n grid-template-columns: repeat(auto-fill, var(--file-item-width));\r\n grid-gap: 0.5rem;\r\n @media (max-width: 768px) {\r\n grid-template-columns: repeat(auto-fill, minmax(var(--file-item-width), 1fr));\r\n }\r\n\r\n\r\n }\r\n\r\n .mat-mdc-progress-bar {\r\n --mat-progress-bar-active-indicator-color: var(--purple);\r\n --mat-progress-bar-track-color: rgba(var(--rgb-purple), .25);\r\n }\r\n\r\n\r\n .file-item-container {\r\n .file-item {\r\n --file-bg: var(--off-white);\r\n --file-radius: var(--box-radius);\r\n --icon-color: var(--purple);\r\n --icon-size: 2rem;\r\n --file-border: transparent;\r\n\r\n display: flex;\r\n align-items: center;\r\n background-color: var(--file-bg);\r\n border: 1px solid var(--file-border);\r\n border-radius: var(--file-radius);\r\n padding: 0 1rem;\r\n height: 70px;\r\n gap: 0.75rem;\r\n\r\n &.error {\r\n --file-bg: rgba(var(--rgb-red), 10%);\r\n --file-border: var(--red);\r\n --icon-color: var(--red);\r\n }\r\n\r\n .icon {\r\n color: var(--icon-color);\r\n font-size: var(--icon-size);\r\n }\r\n\r\n .file-action {\r\n display: flex;\r\n align-items: center;\r\n gap: 0.5rem;\r\n }\r\n }\r\n }\r\n\r\n ds-attachments::part(base) {\r\n --file-width: 250px;\r\n }\r\n\r\n ::ng-deep {\r\n .file-item .name-size {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n flex-grow: 1;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n min-width: 120px;\r\n }\r\n }\r\n `,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class AttachmentViewer extends ViewerBase {\r\n uploading: InputSignal<boolean> = input(false);\r\n uploadingError: InputSignal<string> = input(\"\");\r\n deleteOut: OutputEmitterRef<File[]> = output();\r\n attachments = computed(() => {\r\n return this.field().ctrlJsonValue().map((attachment: IssFile): IssFile => {\r\n return {\r\n name: attachment.name,\r\n size: attachment.size,\r\n type: attachment.type,\r\n errorMsg: attachment.errorMsg,\r\n file: attachment.file\r\n };\r\n });\r\n });\r\n\r\n protected onDownload($event: any) {\r\n const fileUrl: string = this.#createObjectUrl($event.detail.value);\r\n const anchorElement: HTMLAnchorElement = this.#createAnchorElement(fileUrl, $event.detail.value.name);\r\n this.#useAnchorElementThenDispose(anchorElement, fileUrl);\r\n }\r\n\r\n protected onDelete(index: number) {\r\n const fileHtmlElement: HTMLInputElement | null = document.getElementById(\"file\") as HTMLInputElement;\r\n if (fileHtmlElement) {\r\n fileHtmlElement.value = \"\";\r\n }\r\n const updatedFiles = this.field().ctrlJsonValue().filter((_: any, i: number): boolean => i !== index);\r\n this.field().ctrlJsonValue = computed(() => updatedFiles);\r\n this.deleteOut.emit(this.field().ctrlJsonValue());\r\n }\r\n\r\n #createObjectUrl(file: File): string {\r\n const blob: Blob = new Blob([file], {type: \"application/octet-stream\"});\r\n return window.URL.createObjectURL(blob);\r\n }\r\n\r\n #createAnchorElement(fileUrl: string, fileName: string): HTMLAnchorElement {\r\n const a: HTMLAnchorElement = document.createElement(\"a\");\r\n a.setAttribute(\"style\", \"display: none\");\r\n a.href = fileUrl;\r\n a.download = fileName;\r\n return a;\r\n }\r\n\r\n #useAnchorElementThenDispose(a: HTMLAnchorElement, fileUrl: string) {\r\n a.click();\r\n window.URL.revokeObjectURL(fileUrl);\r\n a.remove();\r\n }\r\n}\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { IssAttachment } from \"../../components/controls/file-picker/attachment\";\r\n\r\nexport const ATTACHMENT_UPLOAD_URL: InjectionToken<string> = new InjectionToken(\"ATTACHMENT UPLOAD URL\");\r\nexport const ATTACHMENT_UPLOAD_RESPONSE_MAPPER: InjectionToken<(res: any) => IssAttachment[]> = new InjectionToken(\"Map backend response to required response interface.\");\r\nexport const ATTACHMENT_DOWNLOAD_URL: InjectionToken<string> = new InjectionToken(\"Attachment download URL\");\r\n","export const PLACEHOLDER_REGEX: RegExp = /\\{((\\w+).)*(\\w+)}/gi;\r\n","import { PLACEHOLDER_REGEX } from \"../constants/placeholder-regex.const\";\r\n\r\nexport function replacePlaceholders(str: string, values: any) {\r\n /*TODO check if placeholders passed in values object*/\r\n if (!str) {\r\n return \"\";\r\n }\r\n return str.replace(PLACEHOLDER_REGEX, (match: any) => {\r\n const key = match.replace(\"{\", \"\").replace(\"}\", \"\");\r\n return values[key] ?? match;\r\n });\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { inject, Injectable } from \"@angular/core\";\r\nimport { EMPTY, forkJoin, map, Observable } from \"rxjs\";\r\nimport { ATTACHMENT_DOWNLOAD_URL, ATTACHMENT_UPLOAD_RESPONSE_MAPPER, ATTACHMENT_UPLOAD_URL } from \"../../../shared/tokens/attachment.token\";\r\nimport { replacePlaceholders } from \"../../../shared/utilities/replace-placeholder.util\";\r\nimport { IssAttachment } from \"./attachment\";\r\nimport { IssFile } from \"./file\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class FileHandler {\r\n ATTACHMENT_UPLOAD_URL = inject(ATTACHMENT_UPLOAD_URL);\r\n ATTACHMENT_DOWNLOAD_URL: string = inject(ATTACHMENT_DOWNLOAD_URL);\r\n attachmentAdapter = inject(ATTACHMENT_UPLOAD_RESPONSE_MAPPER);\r\n #http: HttpClient = inject(HttpClient);\r\n readonly #units: string[] = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n\r\n upload(data: FormData) {\r\n const url = this.ATTACHMENT_UPLOAD_URL;\r\n // no Content-Type header: the browser adds it with the FormData boundary\r\n return this.#http.post(url, data).pipe(\r\n map((res: any): IssAttachment[] => this.attachmentAdapter(res)),\r\n );\r\n }\r\n\r\n formDataFactory(files: IssFile[], multiple: boolean): FormData | null {\r\n if (files.length === 0) {\r\n return null;\r\n }\r\n const fd: FormData = new FormData();\r\n let formDataKey = \"file\";\r\n if (multiple) {\r\n formDataKey = \"files\";\r\n }\r\n for (let i = 0; i < files.length; i++) {\r\n // @ts-ignore\r\n fd.append(formDataKey, files[i]);\r\n }\r\n return fd;\r\n }\r\n\r\n formDataHasValue(formData: FormData) {\r\n if (formData) {\r\n for (const key of formData.keys()) {\r\n if (formData.get(key)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n getFileFromFormData(formData: FormData, name: string): IssFile[] {\r\n if (!formData) {\r\n return [];\r\n }\r\n const fileFD: IssFile[] = formData.getAll(\"file\") as unknown as IssFile[];\r\n const filesFD: IssFile[] = formData.getAll(\"files\") as unknown as IssFile[];\r\n if (filesFD.length) {\r\n return filesFD.filter((f) => f.name === name);\r\n }\r\n if (fileFD.length) {\r\n return fileFD.filter((f) => f.name === name);\r\n }\r\n return [];\r\n }\r\n\r\n formatFileSize(x: string | number) {\r\n let l: number = 0;\r\n let n: number = parseInt(x.toString(), 10) || 0;\r\n\r\n while (n >= 1024 && ++l) {\r\n n /= 1024;\r\n }\r\n return Math.floor(n) + \" \" + this.#units[l];\r\n }\r\n\r\n fetchFileInfo(id: string): Observable<IssFile> {\r\n const url: string = replacePlaceholders(this.ATTACHMENT_DOWNLOAD_URL, { fileId: id });\r\n const httpRequestOptions: any = { observe: \"response\", responseType: \"blob\" };\r\n return this.#http.get(url, httpRequestOptions).pipe(map((res: any) => this.#processFileBinaryStream(res, id)));\r\n }\r\n\r\n fetchFiles(ids: string) {\r\n if (ids) {\r\n return forkJoin(ids.split(\",\").map((id: string) => {\r\n return this.fetchFileInfo(id);\r\n }));\r\n }\r\n return EMPTY;\r\n }\r\n\r\n #processFileBinaryStream(res: any, fileId: string): any {\r\n const fileNameHeader = res.headers.get(\"content-disposition\");\r\n const typeHeader = res.headers.get(\"content-type\");\r\n let fileName = \"\";\r\n if (fileNameHeader) {\r\n fileName = decodeURIComponent(fileNameHeader.split(\";\")[1].split(\"=\")[1].replaceAll(\"\\\"\", \"\"));\r\n }\r\n const file: File = new File([res.body], fileName, { type: typeHeader });\r\n return {\r\n id: fileId,\r\n name: file.name,\r\n type: file.type,\r\n size: this.formatFileSize(file.size),\r\n file: file,\r\n };\r\n }\r\n}\r\n","import { Component, computed, effect, inject, OnDestroy, Signal, signal, WritableSignal, } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { FormControl, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatLabel } from \"@angular/material/input\";\r\nimport { catchError, EMPTY } from \"rxjs\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { IssAttachment } from \"./attachment\";\r\nimport { AttachmentViewer } from \"./attachment.viewer\";\r\nimport { IssFile } from \"./file\";\r\nimport { FileHandler } from \"./file-handler\";\r\nimport { FilePickerControl } from \"./file-picker.control\";\r\n\r\n/**\r\n * `<iss-field-file-picker>` — attachment upload.\r\n *\r\n * Rendered by the outlet for fields of type `attachment`. In `edit` mode it renders\r\n * {@link FilePickerControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `multiple` | `boolean` | Allows attaching more than one file. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()` · `value` · `validation` · `ctrlJsonValue()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * The field uploads the picked files itself, stores the returned ids as the control value\r\n * and keeps the resolved attachments in `field.ctrlJsonValue`.\r\n *\r\n * Accepted extensions come from the `fileType` **validation** rule, not from `config`; the\r\n * `allowedFileSize`, `allowedFileTypes`, `minFilesCount`, `maxFilesCount`, `templateId` and\r\n * `templateUrl` config keys exist on {@link FieldConfig} but are not read here yet.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"attachments\", \"type\": \"attachment\", \"label\": \"Attachments\", \"config\": { \"multiple\": true }, \"validation\": { \"fileType\": [\"pdf\", \"png\"] } }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-file-picker\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n FilePickerControl,\r\n ValidationMessageComponent,\r\n AttachmentViewer,\r\n MatLabel\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n <mat-label>{{ field.label() }}</mat-label>\r\n @if (field.mode() === \"edit\") {\r\n <input type=\"hidden\" [formControlName]=\"field.name\">\r\n <!-- [showDeleteButton]=\"field.config.showDeleteButton\" [showDownloadButton]=\"field.config.showDownloadButton\"-->\r\n <iss-ctrl-file-picker\r\n [formControl]=\"picker\"\r\n [accept]=\"accept\"\r\n (onChange)=\"captureFile($event)\"\r\n [multiple]=\"field.config.multiple()\"\r\n [readonly]=\"field.config.readonly() ?? false\"\r\n [uploading]=\"uploading()\"\r\n [uploadedFiles]=\"attachments()\"\r\n [uploadingError]=\"uploadingError()\"\r\n />\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"ctrl.touched\"/>\r\n } @else {\r\n <iss-viewer-attachment [uploading]=\"uploading()\" [field]=\"viewField()\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class FilePickerField extends FieldBase implements OnDestroy {\r\n picker = new FormControl();\r\n fileHandlerService = inject(FileHandler);\r\n uploading: WritableSignal<boolean> = signal(false);\r\n viewField: Signal<any> = computed(() => this.#generateViewField(this.field.ctrlJsonValue()));\r\n attachments: WritableSignal<IssAttachment[]> = signal([]);\r\n uploadingError = signal<string | undefined>(undefined);\r\n accept: string = this.#acceptFactory();\r\n // the ids the picker already holds files for; without it the effect would re-download\r\n // the very files captureFile just uploaded, since it writes them back into ctrl\r\n #hydratedValue: string | null = null;\r\n #valueEffect = effect(() => {\r\n const value = this.ctrlValueChange();\r\n if (!value || !this.field.value || value === this.#hydratedValue) {\r\n return;\r\n }\r\n\r\n this.#hydratedValue = value;\r\n this.fileHandlerService.fetchFiles(value)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((res: any) => {\r\n const filesOnly = res.map((attachment: any) => attachment.file);\r\n const formDataValue: FormData | null = this.fileHandlerService.formDataFactory(filesOnly, !!this.field.config.multiple());\r\n this.attachments.set(res);\r\n this.picker.setValue(formDataValue);\r\n this.field.ctrlJsonValue.set(res);\r\n });\r\n });\r\n\r\n captureFile(formData: FormData | null) {\r\n if (!formData) {\r\n return;\r\n }\r\n\r\n this.uploading.set(true);\r\n const notUploadedFiles: FormData = this.#getNotUploadedFiles(formData);\r\n if (this.fileHandlerService.formDataHasValue(notUploadedFiles)) {\r\n this.fileHandlerService.upload(notUploadedFiles).pipe(\r\n catchError((err) => {\r\n this.uploading.set(false);\r\n this.uploadingError.set(err?.message ?? \"Uploading Failed!\");\r\n console.error(err);\r\n return EMPTY;\r\n }),\r\n ).subscribe((res: any) => {\r\n this.attachments.update((attachments: IssAttachment[]): IssAttachment[] => {\r\n if (!this.field.config.multiple()) {\r\n return res;\r\n }\r\n return [...attachments, ...res];\r\n });\r\n const stringifiedValue = this.stringifyIssAttachment(this.attachments());\r\n this.#hydratedValue = stringifiedValue;\r\n this.ctrl.setValue(stringifiedValue);\r\n this.field.ctrlJsonValue.set(this.attachments());\r\n this.uploading.set(false);\r\n });\r\n } else {\r\n this.uploading.set(false);\r\n }\r\n }\r\n\r\n stringifyIssAttachment(attachments: IssAttachment[]): string {\r\n return attachments.map((attachment: IssAttachment) => attachment.id).join(\",\");\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this.#valueEffect.destroy();\r\n }\r\n\r\n // the outlet rewrites every validation entry into {fn, value}, so the extensions live under value\r\n #acceptFactory(): string {\r\n const fileType: any = this.field.validation?.[\"fileType\"];\r\n const extensions: any = fileType && fileType.hasOwnProperty(\"fn\") ? fileType.value : fileType;\r\n if (!extensions) {\r\n return \"\";\r\n }\r\n const list: string[] = Array.isArray(extensions) ? extensions : String(extensions).split(\",\");\r\n return list\r\n .map((extension: string) => extension.trim())\r\n .filter((extension: string) => !!extension)\r\n .map((extension: string) => extension.startsWith(\".\") ? extension : `.${extension}`)\r\n .join(\",\");\r\n }\r\n\r\n #generateViewField(value: IssFile[]) {\r\n return {\r\n config: {\r\n showDownloadButton: true,\r\n showDeleteButton: false\r\n },\r\n ctrlJsonValue: signal(value ?? [])\r\n };\r\n }\r\n\r\n #getNotUploadedFiles(formData: FormData): FormData {\r\n const fd: FormData = new FormData();\r\n if (formData) {\r\n for (const pair of formData.entries()) {\r\n const file: IssFile = pair[1] as unknown as IssFile;\r\n if (!file.id) {\r\n fd.append(pair[0], pair[1]);\r\n }\r\n }\r\n }\r\n return fd;\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-time-picker\",\r\n template: `\r\n {{ field().ctrlValue() }}\r\n `,\r\n})\r\nexport class TimePickerViewer extends ViewerBase {}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { TimePickerControl } from \"./time-picker.control\";\r\nimport { TimePickerViewer } from \"./time-picker.viewer\";\r\n\r\n/**\r\n * `<iss-field-time-picker>` — a time of day, picked from a generated list.\r\n *\r\n * Rendered by the outlet for fields of type `time`. In `edit` mode it renders\r\n * {@link TimePickerControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"startsAt\", \"type\": \"time\", \"label\": \"Starts at\" }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-time-picker\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n TimePickerControl,\r\n TimePickerViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-time-picker [formControlName]=\"field.name\" [readonly]=\"field.config.readonly() ?? false\">\r\n <label>{{ field.label() }}</label>\r\n </iss-ctrl-time-picker>\r\n } @else {\r\n <iss-viewer-time-picker [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class TimePickerField extends FieldBase {}\r\n","import { DatePipe } from \"@angular/common\";\r\nimport { Component } from \"@angular/core\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-date-picker\",\r\n imports: [\r\n DatePipe\r\n ],\r\n template: `\r\n {{ field().ctrlValue() | date: 'dd/MM/yyyy' }}\r\n `\r\n})\r\nexport class DatePickerViewer extends ViewerBase {}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { DatePickerControl } from \"./date-picker.control\";\r\nimport { DatePickerViewer } from \"./date-picker.viewer\";\r\n\r\n/**\r\n * `<iss-field-date-picker>` — a single date, picked from a calendar.\r\n *\r\n * Rendered by the outlet for fields of type `date`. In `edit` mode it renders\r\n * {@link DatePickerControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `minDate` | `Date` | Earliest selectable date. |\r\n * | `maxDate` | `Date` | Latest selectable date. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"startsOn\", \"type\": \"date\", \"label\": \"Start date\", \"config\": { \"minDate\": \"2026-01-01\" } }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-date-picker\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n DatePickerControl,\r\n ValidationMessageComponent,\r\n DatePickerViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-date-picker [formControlName]=\"field.name\" [minDate]=\"field.config.minDate() ?? null\" [maxDate]=\"field.config.maxDate() ?? null\" [readonly]=\"field.config.readonly() ?? false\">\r\n <label>{{ field.label() }}</label>\r\n </iss-ctrl-date-picker>\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\r\n } @else {\r\n <iss-viewer-date-picker [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class DatePickerField extends FieldBase {}\r\n","import { DatePipe } from \"@angular/common\";\r\nimport { Component } from \"@angular/core\";\r\nimport { DATETIME_FORMAT } from \"../../../shared/constants/date-format.const\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-datetime-picker\",\r\n imports: [\r\n DatePipe\r\n ],\r\n template: `\r\n {{ field().ctrlValue() | date: DATETIME_FORMAT }}\r\n `\r\n})\r\nexport class DatePickerTimeViewer extends ViewerBase {\r\n protected readonly DATETIME_FORMAT = DATETIME_FORMAT;\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { ValidationMessageComponent } from \"../../shared/validation-message.component\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { DatetimePickerControl } from \"./datetime-picker.control\";\r\nimport { DatePickerTimeViewer } from \"./datetime-picker.viewer\";\r\n\r\n/**\r\n * `<iss-field-datetime-picker>` — a date and a time in one field.\r\n *\r\n * Rendered by the outlet for fields of type `datetime`. In `edit` mode it renders\r\n * {@link DatetimePickerControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `minDate` | `Date` | Earliest selectable date. |\r\n * | `maxDate` | `Date` | Latest selectable date. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"scheduledAt\", \"type\": \"datetime\", \"label\": \"Scheduled at\" }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-datetime-picker\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n DatetimePickerControl,\r\n ValidationMessageComponent,\r\n DatePickerTimeViewer,\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-datetime-picker [formControlName]=\"field.name\" [minDate]=\"field.config.minDate() ?? null\" [maxDate]=\"field.config.maxDate() ?? null\" [readonly]=\"field.config.readonly() ?? false\">\r\n <label>{{ field.label() }}</label>\r\n </iss-ctrl-datetime-picker>\r\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\r\n } @else {\r\n <iss-viewer-datetime-picker [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class DatetimePickerField extends FieldBase {}\r\n","import { DatePipe } from \"@angular/common\";\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { ViewerBase } from \"../base/viewer-base\";\r\n\r\n@Component({\r\n selector: \"iss-viewer-date-range-picker\",\r\n imports: [\r\n DatePipe\r\n ],\r\n template: `\r\n @for (date of dateRange; track date; let last = $last) {\r\n <span> {{ date | date: 'dd/MM/yyyy' }} {{ last ? '' : '- ' }} </span>\r\n }\r\n `\r\n})\r\nexport class DateRangePickerViewer extends ViewerBase implements OnInit {\r\n dateRange: string[] = [];\r\n\r\n ngOnInit() {\r\n this.dateRange = this.field().ctrlValue().split(\",\").map((val: any) => val.trim());\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { DateRangePickerControl } from \"./date-range-picker.control\";\r\nimport { DateRangePickerViewer } from \"./date-range-picker.viewer\";\r\n\r\n/**\r\n * `<iss-field-date-range-picker>` — a start and end date in one field.\r\n *\r\n * Rendered by the outlet for fields of type `date_range`. In `edit` mode it renders\r\n * {@link DateRangePickerControl} plus the validation message; in `view` mode the matching viewer.\r\n *\r\n * ### Supported `config` keys\r\n * | Key | Type | Description |\r\n * | --- | --- | --- |\r\n * | `minDate` | `Date` | Earliest selectable date. |\r\n * | `maxDate` | `Date` | Latest selectable date. |\r\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\r\n *\r\n * ### Other field members used\r\n * `label()`\r\n *\r\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\r\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\r\n *\r\n * A half-filled range is treated as no value at all.\r\n *\r\n * @example\r\n * ```json\r\n * { \"name\": \"period\", \"type\": \"date_range\", \"label\": \"Period\" }\r\n * ```\r\n */\r\n@Component({\r\n selector: \"iss-field-date-range-picker\",\r\n viewProviders: [VIEW_PROVIDER],\r\n imports: [\r\n ReactiveFormsModule,\r\n DateRangePickerControl,\r\n DateRangePickerViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-date-range-picker [formControlName]=\"field.name\" [minDate]=\"field.config.minDate() ?? null\" [maxDate]=\"field.config.maxDate() ?? null\" [readonly]=\"field.config.readonly() ?? false\">\r\n <label>{{ field.label() }}</label>\r\n </iss-ctrl-date-range-picker>\r\n } @else {\r\n <iss-viewer-date-range-picker [field]=\"field\"/>\r\n }\r\n }\r\n `\r\n})\r\nexport class DateRangePickerField extends FieldBase {}\r\n","import {InjectionToken} from \"@angular/core\";\r\n\r\nexport const HOST: InjectionToken<string> = new InjectionToken(\"Backend Host to call\");\r\n","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const USER_SEARCH_API: InjectionToken<string> = new InjectionToken(\"USER SEARCH URL\");\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({name: \"arabicNumber\"})\r\nexport class ArabicNumberPipe implements PipeTransform {\r\n transform(n: string): string {\r\n if (n === null || n === undefined) {\r\n return \"\";\r\n }\r\n if (Number.isNaN(+n)) {\r\n return n;\r\n }\r\n return new Intl.NumberFormat(\"ar-SA\", {}).format(+n);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { PlateLetter } from \"./plate-letter\";\r\nimport { PLATE_LETTERS } from \"./plate-letters.const\";\r\n\r\n@Pipe({name: \"plateLetter\"})\r\nexport class PlateLetterPipe implements PipeTransform {\r\n transform(value: string): unknown {\r\n const letter: PlateLetter | undefined = PLATE_LETTERS.find((l: PlateLetter) => l.value === value);\r\n if (letter) {\r\n return letter.label.ar;\r\n }\r\n return value;\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { inject, Injectable } from \"@angular/core\";\r\nimport { map, Observable, tap } from \"rxjs\";\r\nimport { PLACEHOLDER_REGEX } from \"../../../shared/constants/placeholder-regex.const\";\r\nimport { USER_SEARCH_API } from \"../../../shared/tokens/user-search-api.token\";\r\n\r\n@Injectable({providedIn: \"root\"})\r\nexport class Employee {\r\n loggedInUserProfile: any;\r\n USER_SEARCH_URL: string = inject(USER_SEARCH_API);\r\n userImageHost = \"https://igateapp.stc.com.sa\";\r\n #http: HttpClient = inject(HttpClient);\r\n\r\n getProfile(email: string): Observable<any> {\r\n const url = this.replacePlaceholders(this.USER_SEARCH_URL, {email: email});\r\n\r\n return this.#http.get(url).pipe(\r\n map((dto: any) => {\r\n dto.data.profileImageUrl = this.getProfileImageUrl(dto.data);\r\n return dto.data;\r\n }),\r\n tap((user: any) => {\r\n localStorage.setItem(\"user\", JSON.stringify(user));\r\n this.loggedInUserProfile = user;\r\n })\r\n );\r\n }\r\n\r\n search(username: string, endpoint?: string): Observable<any[]> {\r\n let url = this.replacePlaceholders(this.USER_SEARCH_URL, {username});\r\n if (endpoint) {\r\n if (!endpoint.includes(\"{username}\")) {\r\n throw \"endpoint should have this string {username} as a placeholder to be able to replace it\";\r\n }\r\n }\r\n\r\n if (endpoint) {\r\n url = this.replacePlaceholders(endpoint, {username});\r\n }\r\n\r\n return this.#http.get<any>(url).pipe(\r\n map((employees: any) => {\r\n employees.data = employees.data.map((emp: any) => {\r\n emp.image = this.getProfileImageUrl(emp);\r\n return emp;\r\n });\r\n return employees.data;\r\n })\r\n );\r\n }\r\n\r\n getProfileImageUrl(user: any): string {\r\n if (user.image && this.#checkIfImageHasValue(user.image)) {\r\n return this.userImageHost + user.image;\r\n }\r\n return \"\";\r\n }\r\n\r\n replacePlaceholders(str: string, values: any) {\r\n /*TODO check if placeholders passed in values object*/\r\n if (!str) {\r\n return \"\";\r\n }\r\n return str.replace(PLACEHOLDER_REGEX, (match: any) => {\r\n return values[match.replace(\"{\", \"\").replace(\"}\", \"\")] ?? match;\r\n });\r\n }\r\n\r\n #checkIfImageHasValue(imageUri: any) {\r\n const splitResult = imageUri.split(\"/\");\r\n return !!(splitResult[splitResult.length - 1] && splitResult[splitResult.length - 1] !== \".jpg\");\r\n }\r\n}\r\n","export function arrayFrom<T>(length: number, valueFunction: (index: number) => T): T[] {\r\n const valuesArray = Array(length);\r\n for (let i = 0; i < length; i++) {\r\n valuesArray[i] = valueFunction(i);\r\n }\r\n return valuesArray;\r\n}\r\n","export function formatFileSize(x: string | number) {\r\n const units: string[] = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n let l = 0;\r\n let n = parseInt(x.toString(), 10) || 0;\r\n while (n >= 1024 && ++l) {\r\n n /= 1024;\r\n }\r\n return `${Math.floor(n)}${units[l]}`;\r\n}\r\n","export function getPropertyByPath(obj: any, path: string | undefined) {\r\n if (obj && path) {\r\n let currentProp: any;\r\n const props = path.split(\".\");\r\n for (let i = 0; i < props.length; i++) {\r\n const propKey = props[i];\r\n if (!currentProp) {\r\n const target = obj[propKey];\r\n if (typeof target === \"function\") {\r\n currentProp = target();\r\n } else {\r\n currentProp = target;\r\n }\r\n } else {\r\n const target = currentProp[propKey];\r\n\r\n if (typeof target === \"function\") {\r\n currentProp = target();\r\n } else {\r\n currentProp = target;\r\n }\r\n }\r\n if (currentProp === undefined) {\r\n break;\r\n }\r\n }\r\n return currentProp;\r\n }\r\n return undefined;\r\n}\r\n","import {ValidatorFn, Validators} from \"@angular/forms\";\n\nexport abstract class IssValidators {\n static required(): ValidatorFn {\n return Validators.required;\n }\n\n static max(maxValue: number): ValidatorFn {\n return Validators.max(maxValue);\n }\n\n static min(minValue: number): ValidatorFn {\n return Validators.min(minValue);\n }\n\n static requiredTrue(): ValidatorFn {\n return Validators.requiredTrue;\n }\n\n static email(): ValidatorFn {\n return Validators.email;\n }\n\n static minLength(minLength: number): ValidatorFn {\n return Validators.minLength(minLength);\n }\n\n static maxLength(maxLength: number): ValidatorFn {\n return Validators.maxLength(maxLength);\n }\n\n static pattern(pattern: string | RegExp): ValidatorFn {\n return Validators.pattern(pattern);\n }\n\n static null(): ValidatorFn {\n return Validators.nullValidator;\n }\n}\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { formatFileSize } from \"../components/controls/file-picker/format-file-size.util\";\r\n\r\nexport abstract class FileValidators {\r\n static size(limitSize: number): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const formData: FormData = control.value;\r\n if (!formData || !(formData instanceof FormData)) {\r\n return null; // No validation errors if there's no form data or the value is not FormData\r\n }\r\n\r\n const filesValidity: any[] = [];\r\n const inValidFileName: string [] = [];\r\n formData.forEach((value: FormDataEntryValue) => {\r\n if (value instanceof File) {\r\n if (value.size > limitSize) {\r\n inValidFileName.push(value.name);\r\n filesValidity.push(false);\r\n } else {\r\n filesValidity.push(true);\r\n }\r\n }\r\n });\r\n\r\n return filesValidity.every((v: any) => v) ? null : {\r\n fileSize: {\r\n limitSize: formatFileSize(limitSize),\r\n inValidFileName: inValidFileName.join()\r\n }\r\n };\r\n };\r\n }\r\n\r\n static type(validFileExtensions: string[]): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const formData: FormData = control.value;\r\n if (!formData || !(formData instanceof FormData) || validFileExtensions.length === 0) {\r\n return null; // No validation errors if there's no form data or the value is not FormData\r\n }\r\n\r\n const filesValidity: boolean[] = [];\r\n const inValidFileName: string[] = [];\r\n\r\n formData.forEach((value: FormDataEntryValue) => {\r\n if (value instanceof File) {\r\n const uploadedFileExt = value.name.split(\".\").pop()?.toLowerCase();\r\n const isValidExtension = validFileExtensions.some((ext: string) => ext.toLowerCase() === uploadedFileExt);\r\n\r\n if (!isValidExtension) {\r\n inValidFileName.push(value.name);\r\n filesValidity.push(false);\r\n } else {\r\n filesValidity.push(true);\r\n }\r\n }\r\n });\r\n return filesValidity.every((v: boolean) => v) ? null : {\r\n fileType: {\r\n validFileExtensions: validFileExtensions.join(\", \"),\r\n inValidFileName: inValidFileName.join(\", \")\r\n }\r\n };\r\n };\r\n }\r\n\r\n static maxCount(maxCount: number): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const formData: FormData = control.value;\r\n if (!formData || !(formData instanceof FormData)) {\r\n return null; // No validation errors if there's no form data or the value is not FormData\r\n }\r\n\r\n let fileCount = 0;\r\n formData.forEach((value) => {\r\n if (value instanceof File) {\r\n fileCount++;\r\n }\r\n });\r\n\r\n return fileCount <= maxCount ? null : {maxFileCount: {maxCount, fileCount}};\r\n };\r\n }\r\n\r\n static minCount(minCount: number): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const formData: FormData = control.value;\r\n if (!formData || !(formData instanceof FormData)) {\r\n return null; // No validation errors if there's no form data or the value is not FormData\r\n }\r\n\r\n let fileCount = 0;\r\n formData.forEach((value) => {\r\n if (value instanceof File) {\r\n fileCount++;\r\n }\r\n });\r\n return fileCount >= minCount ? null : {minFileCount: {minCount, fileCount}};\r\n };\r\n }\r\n}\r\n","import { inject } from \"@angular/core\";\r\nimport { AbstractControl, ControlContainer, FormGroup, ValidationErrors, ValidatorFn } from \"@angular/forms\";\r\nimport { format } from \"date-fns\";\r\nimport { IssField } from \"../shared/classes/iss-field\";\r\nimport { DATETIME_FORMAT } from \"../shared/constants/date-format.const\";\r\n\r\nexport abstract class TimeValidator {\r\n static beforeDate(field: IssField): ValidatorFn {\r\n const controlContainer = inject(ControlContainer);\r\n const parentForm = controlContainer.control as FormGroup;\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const anotherControl = parentForm.get(field?.validation?.beforeDate?.value);\r\n if (anotherControl) {\r\n const anotherControlValue = anotherControl.getRawValue();\r\n const controlValue = control.getRawValue();\r\n if (new Date(anotherControlValue) < new Date(controlValue)) {\r\n return {\r\n relativeTimeValidation_before: format(anotherControlValue.replace(\"Z\", \"\"), DATETIME_FORMAT)\r\n };\r\n }\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n static afterDate(field: IssField): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n return null;\r\n };\r\n }\r\n}\r\n","// controls\r\nexport * from \"./components/controls/checkbox/checkbox.control\";\r\nexport * from \"./components/controls/chips/chips.control\";\r\nexport * from \"./components/controls/date-picker/date-picker.control\";\r\nexport * from \"./components/controls/date-range-picker/date-range-picker.control\";\r\nexport * from \"./components/controls/datetime-picker/datetime-picker.control\";\r\nexport * from \"./components/controls/file-picker/file-picker.control\";\r\nexport * from \"./components/controls/input/input.control\";\r\nexport * from \"./components/controls/mobile/mobile.control\";\r\nexport * from \"./components/controls/plate/plate.control\";\r\nexport * from \"./components/controls/radio/radio.control\";\r\nexport * from \"./components/controls/select/select.control\";\r\nexport * from \"./components/controls/slide-toggle/slide-toggle.control\";\r\nexport * from \"./components/controls/textarea/textarea.control\";\r\nexport * from \"./components/controls/time-picker/time-picker.control\";\r\nexport * from \"./components/controls/toggle-button/toggle-button.control\";\r\nexport * from \"./components/controls/base/control-base\";\r\n\r\n// outlet\r\nexport * from \"./components/outlet/outlet\";\r\n\r\n// Fields\r\nexport * from \"./components/controls/input/input.field\";\r\nexport * from \"./components/controls/textarea/textarea.field\";\r\nexport * from \"./components/controls/chips/chips.field\";\r\nexport * from \"./components/controls/radio/radio.field\";\r\nexport * from \"./components/controls/select/select.field\";\r\nexport * from \"./components/controls/mobile/mobile.field\";\r\nexport * from \"./components/controls/checkbox/checkbox.field\";\r\nexport * from \"./components/controls/toggle-button/toggle-button.field\";\r\nexport * from \"./components/controls/slide-toggle/slide-toggle.field\";\r\nexport * from \"./components/controls/plate/plate.field\";\r\nexport * from \"./components/controls/file-picker/file-picker.field\";\r\nexport * from \"./components/controls/time-picker/time-picker.field\";\r\nexport * from \"./components/controls/date-picker/date-picker.field\";\r\nexport * from \"./components/controls/datetime-picker/datetime-picker.field\";\r\nexport * from \"./components/controls/date-range-picker/date-range-picker.field\";\r\nexport * from \"./components/controls/base/field-base\";\r\n\r\n// viewers\r\nexport * from \"./components/controls/input/input.viewer\";\r\nexport * from \"./components/controls/textarea/textarea.viewer\";\r\nexport * from \"./components/controls/chips/chips.viewer\";\r\nexport * from \"./components/controls/radio/radio.viewer\";\r\nexport * from \"./components/controls/select/select.viewer\";\r\nexport * from \"./components/controls/mobile/mobile.viewer\";\r\nexport * from \"./components/controls/checkbox/checkbox.viewer\";\r\nexport * from \"./components/controls/toggle-button/toggle-button.viewer\";\r\nexport * from \"./components/controls/slide-toggle/slide-toggle.viewer\";\r\nexport * from \"./components/controls/plate/plate.viewer\";\r\nexport * from \"./components/controls/file-picker/attachment.viewer\";\r\nexport * from \"./components/controls/time-picker/time-picker.viewer\";\r\nexport * from \"./components/controls/date-picker/date-picker.viewer\";\r\nexport * from \"./components/controls/datetime-picker/datetime-picker.viewer\";\r\nexport * from \"./components/controls/date-range-picker/date-range-picker.viewer\";\r\n\r\n\r\n// classes\r\n// Todo: exporting classes after refactor.\r\n\r\n// constants\r\nexport * from \"./components/controls/mobile/countries.const\";\r\nexport * from \"./shared/constants/date-format.const\";\r\nexport * from \"./components/controls/plate/plate-letters.const\";\r\nexport * from \"./shared/constants/view-provider.const\";\r\nexport * from \"./shared/constants/placeholder-regex.const\";\r\nexport * from \"./shared/constants/validation.const\";\r\n\r\n// indexes\r\nexport * from \"./shared/indexes/components.index\";\r\nexport * from \"./shared/indexes/services.index\";\r\nexport * from \"./shared/indexes/validators.index\";\r\n\r\n// interfaces\r\nexport * from \"./shared/interfaces/event-trigger-fn\";\r\nexport * from \"./components/controls/file-picker/attachment\";\r\nexport * from \"./components/controls/mobile/country\";\r\nexport * from \"./components/controls/date-range-picker/date-range-emission\";\r\nexport * from \"./shared/interfaces/event-strategy\";\r\nexport * from \"./components/controls/file-picker/file\";\r\nexport * from \"./shared/interfaces/hint\";\r\nexport * from \"./shared/interfaces/i18n\";\r\nexport * from \"./shared/interfaces/import\";\r\nexport * from \"./components/controls/mobile/mobile\";\r\nexport * from \"./shared/interfaces/option\";\r\nexport * from \"./components/outlet/component-outlet\";\r\nexport * from \"./components/controls/plate/plate-letter\";\r\nexport * from \"./shared/interfaces/validation\";\r\n\r\n// tokens\r\nexport * from \"./shared/tokens/host.token\";\r\nexport * from \"./shared/tokens/field.token\";\r\nexport * from \"./shared/tokens/language.token\";\r\nexport * from \"./shared/tokens/attachment.token\";\r\nexport * from \"./shared/tokens/user-search-api.token\";\r\n\r\n// types\r\nexport * from \"./components/controls/mobile/iso2.type\";\r\nexport * from \"./shared/types/validation.type\";\r\n\r\n// components\r\nexport * from \"./components/shared/hints.component\";\r\nexport * from \"./components/shared/validation-message.component\";\r\n\r\n// directives\r\nexport * from \"./components/controls/file-picker/droppable\";\r\n\r\n// pipes\r\nexport * from \"./shared/pipes/arabic-number.pipe\";\r\nexport * from \"./components/outlet/field-data-injector\";\r\nexport * from \"./components/controls/plate/plate-letter.pipe\";\r\nexport * from \"./shared/pipes/select-status.pipe\";\r\nexport * from \"./shared/pipes/translate.pipe\";\r\n\r\n// services\r\nexport * from \"./components/controls/user-picker/employee\";\r\nexport * from \"./components/controls/file-picker/file-handler\";\r\nexport * from \"./shared/services/form-engine\";\r\nexport * from \"./shared/services/loader\";\r\nexport * from \"./components/controls/mobile/phone\";\r\n\r\n// utilities\r\nexport * from \"./shared/utilities/array-from.util\";\r\nexport * from \"./components/controls/file-picker/format-file-size.util\";\r\nexport * from \"./shared/utilities/get-property-by-path.util\";\r\nexport * from \"./shared/utilities/replace-placeholder.util\";\r\n\r\n// validators\r\nexport * from \"./validators/core.validator\";\r\nexport * from \"./validators/file.validator\";\r\nexport * from \"./validators/time.validator\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i4","i2","i3","MatLabel"],"mappings":"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EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,GAAG,EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,GAAG,EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,GAAG,EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,GAAG,EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,GAAG,EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,GAAG,EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,GAAG,EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,GAAG,EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,GAAG,EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,GAAG,EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,GAAG,EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAC,EAAE,KAAK,EAAE,GAAG,EAAC;AACvC,IAAA,EAAC,KAAK,EAAE,EAAC,EAAE,EAAE,GA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"}
|