iss-ctrl 0.0.19 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/fesm2022/{iss-ctrl-iss-ctrl-Cy9p_PEj.mjs → iss-ctrl-iss-ctrl-BKu6a5HF.mjs} +976 -766
  2. package/fesm2022/iss-ctrl-iss-ctrl-BKu6a5HF.mjs.map +1 -0
  3. package/fesm2022/{iss-ctrl-load-event-DbAc-Wqq.mjs → iss-ctrl-load-event-bOt6IlIo.mjs} +3 -3
  4. package/fesm2022/{iss-ctrl-load-event-DbAc-Wqq.mjs.map → iss-ctrl-load-event-bOt6IlIo.mjs.map} +1 -1
  5. package/fesm2022/{iss-ctrl-load-options-event-CmXkuQ5O.mjs → iss-ctrl-load-options-event-CxyAyNMe.mjs} +3 -3
  6. package/fesm2022/{iss-ctrl-load-options-event-CmXkuQ5O.mjs.map → iss-ctrl-load-options-event-CxyAyNMe.mjs.map} +1 -1
  7. package/fesm2022/{iss-ctrl-load-value-event-DmX9Pkzf.mjs → iss-ctrl-load-value-event-DJKJ5S3h.mjs} +3 -3
  8. package/fesm2022/{iss-ctrl-load-value-event-DmX9Pkzf.mjs.map → iss-ctrl-load-value-event-DJKJ5S3h.mjs.map} +1 -1
  9. package/fesm2022/{iss-ctrl-note.field-CbLlparb.mjs → iss-ctrl-note.field-B_Lbp28X.mjs} +2 -2
  10. package/fesm2022/{iss-ctrl-note.field-CbLlparb.mjs.map → iss-ctrl-note.field-B_Lbp28X.mjs.map} +1 -1
  11. package/fesm2022/{iss-ctrl-replace-api-keys-C_mYQdtP.mjs → iss-ctrl-replace-api-keys-C0XYQW4i.mjs} +2 -2
  12. package/fesm2022/{iss-ctrl-replace-api-keys-C_mYQdtP.mjs.map → iss-ctrl-replace-api-keys-C0XYQW4i.mjs.map} +1 -1
  13. package/fesm2022/{iss-ctrl-set-value-event-vKIrSRgu.mjs → iss-ctrl-set-value-event-CgXhi0Bv.mjs} +2 -2
  14. package/fesm2022/{iss-ctrl-set-value-event-vKIrSRgu.mjs.map → iss-ctrl-set-value-event-CgXhi0Bv.mjs.map} +1 -1
  15. package/fesm2022/{iss-ctrl-table.field-CvqXIE4q.mjs → iss-ctrl-table.field-B5FxF6hn.mjs} +4 -4
  16. package/fesm2022/{iss-ctrl-table.field-CvqXIE4q.mjs.map → iss-ctrl-table.field-B5FxF6hn.mjs.map} +1 -1
  17. package/fesm2022/{iss-ctrl-trigger-based-on-json-value-wyn6AXWA.mjs → iss-ctrl-trigger-based-on-json-value-2v1kLVHZ.mjs} +2 -2
  18. package/fesm2022/{iss-ctrl-trigger-based-on-json-value-wyn6AXWA.mjs.map → iss-ctrl-trigger-based-on-json-value-2v1kLVHZ.mjs.map} +1 -1
  19. package/fesm2022/{iss-ctrl-user-picker.field-BhjVNeqN.mjs → iss-ctrl-user-picker.field-BH63sZ-X.mjs} +13 -6
  20. package/fesm2022/iss-ctrl-user-picker.field-BH63sZ-X.mjs.map +1 -0
  21. package/fesm2022/iss-ctrl.mjs +1 -1
  22. package/package.json +1 -1
  23. package/types/iss-ctrl.d.ts +54 -12
  24. package/upgrade.scss +30 -18
  25. package/fesm2022/iss-ctrl-iss-ctrl-Cy9p_PEj.mjs.map +0 -1
  26. package/fesm2022/iss-ctrl-user-picker.field-BhjVNeqN.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iss-ctrl-iss-ctrl-BKu6a5HF.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/shared/tokens/language.token.ts","../../../projects/iss/src/shared/utilities/hijri.util.ts","../../../projects/iss/src/shared/services/iss-date-adapter.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.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/pipes/translate.pipe.ts","../../../projects/iss/src/components/shared/validation-message.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/shared/field-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 { Component, inject, Injector, input, InputSignal, output, OutputEmitterRef, signal, WritableSignal } from \"@angular/core\";\nimport { AbstractControl, ControlValueAccessor, FormControl, FormGroupDirective, NgControl, NgForm, ValidationErrors, Validator } from \"@angular/forms\";\nimport { ErrorStateMatcher } from \"@angular/material/core\";\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 * `upgrade.scss` reveals that space only while the projected `<label>` carries text, so an\n * omitted label — or one that interpolates to an empty string — collapses it. No label markup\n * is removed at runtime, so a label that arrives later simply shows up.\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({\n template: ``,\n host: { \"class\": \"iss-ctrl\", \"[class.iss-ctrl-empty]\": \"isEmpty()\" }\n})\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 /**\n * Error state for the inner `mat-form-field`, derived from the **host** control.\n *\n * Material reads `errorState` off the `NgControl` bound to its own `matInput` — here that is\n * {@link ControlBase.ctrl}, which carries no validators and is therefore always valid. Every\n * error a consumer cares about (the field config's validators plus the control's own\n * {@link ControlBase.validate}) lives on the host control instead, so without this matcher an\n * invalid `iss-ctrl-*` would keep rendering the valid outline. Bind it on the `matInput` as\n * `[errorStateMatcher]=\"errorStateMatcher\"`.\n */\n protected errorStateMatcher: ErrorStateMatcher = {\n isErrorState: (_control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean => {\n const host: NgControl | null = this.hostControl();\n if (!host) {\n return false;\n }\n return !!host.invalid && (!!host.touched || this.touched() || !!form?.submitted);\n }\n };\n #injector: Injector = inject(Injector);\n // Resolved lazily: injecting NgControl in the constructor would close the DI cycle through\n // NG_VALUE_ACCESSOR, which every control provides with `useExisting`.\n #hostControl: NgControl | null | undefined = undefined;\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 /**\n * The `NgControl` this component is bound to from the outside (`formControlName`,\n * `[formControl]` or `[ngModel]`), or `null` when it is used without one.\n */\n protected hostControl(): NgControl | null {\n if (this.#hostControl === undefined) {\n this.#hostControl = this.#injector.get(NgControl, null, { self: true });\n }\n return this.#hostControl;\n }\n\n /**\n * Whether the control currently holds no value.\n *\n * Reflected on the host as `iss-ctrl-empty`, which is what `upgrade.scss` uses to keep the\n * resting outline of an empty field: Material's own `mat-form-field-hide-placeholder` drops\n * off the moment the field is focused, so the border would change colour on focus alone.\n * Override it in a control whose value does not live on {@link ControlBase.ctrl}.\n */\n protected isEmpty(): boolean {\n const value: any = this.ctrl.getRawValue();\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n return value === null || value === undefined || value === \"\";\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\";\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatChipGrid, MatChipInput, MatChipInputEvent, MatChipRemove, MatChipRow } from \"@angular/material/chips\";\nimport { MatFormField } from \"@angular/material/form-field\";\nimport { MatInput, MatInputModule } from \"@angular/material/input\";\nimport { ControlBase } from \"../base/control-base\";\n\n/**\n * `<iss-ctrl-chips>` — free text entered as removable chips.\n *\n * Each `Enter` turns the typed text into a chip. The form value is the comma separated list\n * of chip labels.\n *\n * @example\n * ```html\n * <iss-ctrl-chips formControlName=\"tags\" placeholder=\"Add a tag\">\n * <label>Tags</label>\n * </iss-ctrl-chips>\n * ```\n *\n * ### Own inputs\n * None — the control is configured entirely through the inherited properties.\n *\n * ### Inherited from {@link ControlBase}\n * `formControlName` · `readonly` · `className` · `(onChange)` · `placeholder`\n *\n * Projects `<label>` into the floating label; omit it to render the control without one.\n */\n@Component({\n selector: \"iss-ctrl-chips\",\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [\n MatFormField,\n MatChipGrid,\n MatChipRow,\n ReactiveFormsModule,\n MatChipInput,\n MatInput,\n MatChipRemove,\n MatInputModule,\n ],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: ChipsControl, multi: true }\n ],\n template: `\n <mat-form-field floatLabel=\"auto\" class=\"\">\n <!-- Always rendered: upgrade.scss shows the floating label only while the projected <label> carries text, so an omitted or empty one collapses on its own. -->\n <mat-label class=\"fs-16 fc-dark-gray\">\n <ng-content select=\"label\"></ng-content>\n </mat-label>\n <input\n matInput\n [errorStateMatcher]=\"errorStateMatcher\"\n [placeholder]=\"placeholder()\"\n [matChipInputFor]=\"chipGrid\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n (matChipInputTokenEnd)=\"add($event)\"\n />\n </mat-form-field>\n <mat-chip-grid #chipGrid>\n @for (keyword of keywords(); track keyword) {\n <mat-chip-row (removed)=\"remove(keyword)\">\n {{ keyword }}\n <button matChipRemove [disabled]=\"disabled() || readonly()\">\n <ds-icon icon=\"trash\" class=\"fc-red\"></ds-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n `\n})\nexport class ChipsControl extends ControlBase {\n /**\n * The chips currently rendered. Internal state, not an input.\n */\n readonly keywords: WritableSignal<string[]> = signal([]);\n\n override writeValue(value: string | null) {\n if (typeof value === \"string\") {\n this.keywords.set(this.#parseValues(value));\n }\n if (value === undefined || value === null) {\n this.keywords.set([]);\n }\n }\n\n remove(keyword: string) {\n if (this.disabled() || this.readonly()) {\n return;\n }\n this.markAsTouched();\n this.keywords.update((keywords: string[]): string[] => {\n const index: number = keywords.indexOf(keyword);\n if (index < 0) {\n return keywords;\n }\n keywords.splice(index, 1);\n return [...keywords];\n });\n this.emitValue(this.#stringifyValues());\n }\n\n add(event: MatChipInputEvent): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n this.markAsTouched();\n const value: string = (event.value || \"\").trim();\n if (value) {\n this.keywords.update((keywords: string[]): string[] => [...keywords, value]);\n }\n event.chipInput!.clear();\n this.emitValue(this.#stringifyValues());\n }\n\n // the chips are the value here; `ctrl` stays untouched\n protected override isEmpty(): boolean {\n return this.keywords().length === 0;\n }\n\n #stringifyValues() {\n return this.keywords().map((s: string) => s.trim()).join();\n }\n\n #parseValues(values: string) {\n return values.split(\",\").map((c: string) => c.trim());\n }\n}\n","import { MatDateFormats } from \"@angular/material/core\";\n\nexport const DATE_FORMAT_ADAPTER: MatDateFormats = {\n parse: {\n dateInput: \"dd/MM/yyyy\",\n timeInput: \"hh:mm:ss aa\",\n },\n display: {\n dateInput: \"dd/MM/yyyy\",\n monthYearLabel: \"MMMM yyyy\",\n dateA11yLabel: \"dd/MM/yyyy\",\n monthYearA11yLabel: \"MMMM yyyy\",\n timeInput: \"hh:mm aa\",\n timeOptionLabel: \"hh:mm aa\",\n },\n};\n\nexport const DATETIME_FORMAT = \"dd/MM/yyyy hh:mm a\";\n","import {InjectionToken} from \"@angular/core\";\r\n\r\nexport const UI_LANGUAGE: InjectionToken<string> = new InjectionToken(\"UI SELECTED LANGUAGE\");\r\n","/**\n * Umm al-Qura Hijri calendar helpers.\n *\n * Every function here works on a plain `Date`: a `Date` is an instant, and the Hijri\n * calendar is only another way of naming that instant. Nothing stores Hijri numbers on the\n * date itself, so a value converted to Hijri for display or emission is still the same day.\n *\n * The conversion is done by `Intl` with the `islamic-umalqura` calendar, which is the\n * calendar used officially in Saudi Arabia.\n */\n\n/** Locale used by the calendar UI when the Hijri calendar is on. */\nexport const HIJRI_LOCALE = \"ar-SA-u-ca-islamic-umalqura\";\n\n/** Latin-digit locale used internally to read the Hijri parts of a date. */\nconst HIJRI_PARTS_LOCALE = \"en-US-u-ca-islamic-umalqura\";\n\nconst MS_PER_DAY = 86_400_000;\n\n/** 1 Muharram 1445 AH, the anchor the month estimate starts from. */\nconst ANCHOR_GREGORIAN = { year: 2023, month: 6, day: 19 };\nconst ANCHOR_HIJRI_YEAR = 1445;\n\n/** Mean length of a Hijri month, used only to get close before the exact walk. */\nconst MEAN_HIJRI_MONTH = 29.530588;\n\nexport const HIJRI_MONTH_NAMES: { ar: string[]; en: string[]; enShort: string[] } = {\n ar: [\"محرم\", \"صفر\", \"ربيع الأول\", \"ربيع الآخر\", \"جمادى الأولى\", \"جمادى الآخرة\", \"رجب\", \"شعبان\", \"رمضان\", \"شوال\", \"ذو القعدة\", \"ذو الحجة\"],\n en: [\"Muharram\", \"Safar\", \"Rabi' al-Awwal\", \"Rabi' al-Thani\", \"Jumada al-Ula\", \"Jumada al-Akhirah\", \"Rajab\", \"Sha'ban\", \"Ramadan\", \"Shawwal\", \"Dhu al-Qi'dah\", \"Dhu al-Hijjah\"],\n enShort: [\"Muh\", \"Saf\", \"Rab I\", \"Rab II\", \"Jum I\", \"Jum II\", \"Raj\", \"Sha\", \"Ram\", \"Shaw\", \"Dhul-Q\", \"Dhul-H\"],\n};\n\nexport interface HijriParts {\n /** Hijri year, for example `1447`. */\n year: number;\n /** Hijri month, **zero based** like `Date.getMonth()` — `0` is Muharram. */\n month: number;\n /** Hijri day of month, starting at `1`. */\n day: number;\n}\n\nconst partsFormatter: Intl.DateTimeFormat = new Intl.DateTimeFormat(HIJRI_PARTS_LOCALE, {\n day: \"numeric\",\n month: \"numeric\",\n year: \"numeric\",\n});\n\n/**\n * Reads the Hijri year, month and day a `Date` falls on.\n */\nexport function getHijriParts(date: Date): HijriParts {\n const parts: Intl.DateTimeFormatPart[] = partsFormatter.formatToParts(date);\n const read = (type: string): number => parseInt(parts.find((part) => part.type === type)?.value ?? \"0\", 10);\n return { year: read(\"year\"), month: read(\"month\") - 1, day: read(\"day\") };\n}\n\n/**\n * The Gregorian `Date` of the first day of the Hijri month `date` falls in, at midday.\n *\n * Midday, not midnight, so a daylight-saving shift can never push the result into the\n * previous day while the month is being walked.\n */\nexport function startOfHijriMonth(date: Date): Date {\n const start: Date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 12);\n start.setDate(start.getDate() - (getHijriParts(start).day - 1));\n return start;\n}\n\n/**\n * Number of days in the Hijri month `date` falls in — 29 or 30, decided by Umm al-Qura.\n */\nexport function getHijriDaysInMonth(date: Date): number {\n const start: Date = startOfHijriMonth(date);\n // +30 days from the first of a 29 or 30 day month always lands inside the next one\n const insideNextMonth: Date = new Date(start.getTime());\n insideNextMonth.setDate(insideNextMonth.getDate() + 30);\n return Math.round((startOfHijriMonth(insideNextMonth).getTime() - start.getTime()) / MS_PER_DAY);\n}\n\n/**\n * Builds the `Date` for a Hijri year/month/day. The month is zero based, and a day past the\n * end of the month is clamped to the last day of that month.\n */\nexport function createHijriDate(year: number, month: number, day: number): Date {\n const targetYear: number = year + Math.floor(month / 12);\n const targetMonth: number = ((month % 12) + 12) % 12;\n\n const monthsFromAnchor: number = (targetYear - ANCHOR_HIJRI_YEAR) * 12 + targetMonth;\n const cursor: Date = new Date(ANCHOR_GREGORIAN.year, ANCHOR_GREGORIAN.month, ANCHOR_GREGORIAN.day, 12);\n cursor.setDate(cursor.getDate() + Math.round(monthsFromAnchor * MEAN_HIJRI_MONTH));\n let start: Date = startOfHijriMonth(cursor);\n\n // the mean-month estimate drifts by a month or so over long spans; step whole months until it matches\n for (let attempt = 0; attempt < 8; attempt++) {\n const parts: HijriParts = getHijriParts(start);\n const monthsOff: number = (targetYear - parts.year) * 12 + (targetMonth - parts.month);\n if (monthsOff === 0) {\n break;\n }\n // 29 days plus a nudge in the direction of travel always lands inside the neighbouring month\n start.setDate(start.getDate() + monthsOff * 29 + Math.sign(monthsOff));\n start = startOfHijriMonth(start);\n }\n\n const clampedDay: number = Math.min(Math.max(day, 1), getHijriDaysInMonth(start));\n start.setDate(start.getDate() + clampedDay - 1);\n start.setHours(0, 0, 0, 0);\n return start;\n}\n\n/**\n * Formats a date as a Hijri `yyyy-MM-dd` string — the shape the form emits when\n * `emitHijri` is on.\n */\nexport function formatHijriDate(date: Date): string {\n const parts: HijriParts = getHijriParts(date);\n return `${pad(parts.year, 4)}-${pad(parts.month + 1, 2)}-${pad(parts.day, 2)}`;\n}\n\n/**\n * Reads a Hijri date back into a `Date`, accepting both the emitted `yyyy-MM-dd` shape and\n * the `dd/MM/yyyy` shape shown in the input. Returns `null` for anything else.\n */\nexport function parseHijriDate(value: string | null | undefined): Date | null {\n if (!value) {\n return null;\n }\n // strip the bidi marks Intl adds around Arabic-locale dates\n const clean: string = value.replace(/[‎‏]/g, \"\").trim();\n\n const iso: RegExpMatchArray | null = clean.match(/^(\\d{3,4})-(\\d{1,2})-(\\d{1,2})/);\n if (iso) {\n return createHijriDate(+iso[1], +iso[2] - 1, +iso[3]);\n }\n\n const slashed: RegExpMatchArray | null = clean.match(/^(\\d{1,2})[/-](\\d{1,2})[/-](\\d{3,4})$/);\n if (slashed) {\n return createHijriDate(+slashed[3], +slashed[2] - 1, +slashed[1]);\n }\n\n return null;\n}\n\nfunction pad(value: number, length: number): string {\n return String(value).padStart(length, \"0\");\n}\n\n/**\n * Renders a stored form value as a Hijri `dd/MM/yyyy` string for the read-only viewers, or\n * returns `null` when the field is not on the Hijri calendar and the value should be shown\n * as an ordinary Gregorian date.\n *\n * The two Hijri modes store different things, so they are read differently: with `emitHijri`\n * the value already carries Hijri numbers and only its notation changes, while with\n * `hijriCalendar` alone the value is Gregorian and has to be converted.\n */\nexport function toHijriDisplay(\n value: string | null | undefined,\n options: { hijriCalendar?: boolean; emitHijri?: boolean; withTime?: boolean }\n): string | null {\n if (!value || (!options.hijriCalendar && !options.emitHijri)) {\n return null;\n }\n\n let datePart: string;\n let hours: number;\n let minutes: number;\n\n if (options.emitHijri) {\n const matched: RegExpMatchArray | null = value.match(/^(\\d{3,4})-(\\d{1,2})-(\\d{1,2})(?:[T ](\\d{1,2}):(\\d{2}))?/);\n if (!matched) {\n return null;\n }\n datePart = `${pad(+matched[3], 2)}/${pad(+matched[2], 2)}/${pad(+matched[1], 4)}`;\n hours = +(matched[4] ?? 0);\n minutes = +(matched[5] ?? 0);\n } else {\n const date: Date = new Date(value);\n if (Number.isNaN(date.getTime())) {\n return null;\n }\n const parts: HijriParts = getHijriParts(date);\n datePart = `${pad(parts.day, 2)}/${pad(parts.month + 1, 2)}/${pad(parts.year, 4)}`;\n hours = date.getHours();\n minutes = date.getMinutes();\n }\n\n if (!options.withTime) {\n return datePart;\n }\n return `${datePart} ${pad(hours % 12 || 12, 2)}:${pad(minutes, 2)} ${hours < 12 ? \"AM\" : \"PM\"}`;\n}\n","import { inject, Injectable, Provider } from \"@angular/core\";\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, NativeDateAdapter } from \"@angular/material/core\";\nimport { DATE_FORMAT_ADAPTER } from \"../constants/date-format.const\";\nimport { UI_LANGUAGE } from \"../tokens/language.token\";\nimport { createHijriDate, getHijriDaysInMonth, getHijriParts, HIJRI_LOCALE, HIJRI_MONTH_NAMES, HijriParts, parseHijriDate } from \"../utilities/hijri.util\";\n\n/**\n * The single date adapter behind every `iss-ctrl-*` picker.\n *\n * It behaves as a plain Gregorian adapter — `dd/MM/yyyy` in and out — until its locale is\n * switched to {@link HIJRI_LOCALE}, at which point the whole calendar grid becomes Umm\n * al-Qura Hijri: the month lengths, the year and month labels and the day numbers all come\n * from the Hijri calendar.\n *\n * The value never changes shape. The adapter always works on a `Date`, so a Hijri calendar\n * still hands the control an ordinary `Date`, and it stays the control's decision whether to\n * emit that as a Gregorian or a Hijri string.\n *\n * Switch modes through {@link setHijri}, never by assigning `locale` — `setLocale` is what\n * tells an open calendar to re-render.\n */\n@Injectable()\nexport class IssDateAdapter extends NativeDateAdapter {\n /** The Gregorian locale to fall back to when the Hijri calendar is turned off. */\n gregorianLocale = \"en-GB\";\n #language: string | null = inject(UI_LANGUAGE, { optional: true });\n\n /** Whether the adapter is currently presenting the Hijri calendar. */\n get isHijri(): boolean {\n return typeof this.locale === \"string\" && this.locale.includes(\"islamic\");\n }\n\n /**\n * Turns the Hijri calendar on or off. Goes through `setLocale` so that a calendar that is\n * already open redraws itself.\n */\n setHijri(hijri: boolean): void {\n const locale: string = hijri ? HIJRI_LOCALE : this.gregorianLocale;\n if (this.locale !== locale) {\n this.setLocale(locale);\n }\n }\n\n override getYear(date: Date): number {\n return this.isHijri ? getHijriParts(date).year : date.getFullYear();\n }\n\n override getMonth(date: Date): number {\n return this.isHijri ? getHijriParts(date).month : date.getMonth();\n }\n\n override getDate(date: Date): number {\n return this.isHijri ? getHijriParts(date).day : date.getDate();\n }\n\n override getMonthNames(style: \"long\" | \"short\" | \"narrow\"): string[] {\n if (!this.isHijri) {\n return super.getMonthNames(style);\n }\n if (this.#language === \"en\") {\n return style === \"long\" ? HIJRI_MONTH_NAMES.en : HIJRI_MONTH_NAMES.enShort;\n }\n return HIJRI_MONTH_NAMES.ar;\n }\n\n override getDateNames(): string[] {\n // a Hijri month never runs past 30 days, but the calendar body indexes this array by\n // day number, so it must stay as long as the Gregorian one\n return this.isHijri ? Array.from({ length: 31 }, (_, index) => String(index + 1)) : super.getDateNames();\n }\n\n override getDayOfWeekNames(style: \"long\" | \"short\" | \"narrow\"): string[] {\n if (!this.isHijri) {\n return super.getDayOfWeekNames(style);\n }\n // the week is the same week in both calendars, so only the language of the names changes\n const names: Intl.DateTimeFormat = new Intl.DateTimeFormat(this.#language === \"en\" ? \"en-GB\" : \"ar\", { weekday: style, timeZone: \"utc\" });\n return Array.from({ length: 7 }, (_, index) => names.format(new Date(Date.UTC(2017, 0, index + 1))));\n }\n\n override getYearName(date: Date): string {\n return this.isHijri ? String(getHijriParts(date).year) : String(date.getFullYear());\n }\n\n override getFirstDayOfWeek(): number {\n return this.isHijri ? 0 : super.getFirstDayOfWeek();\n }\n\n override getNumDaysInMonth(date: Date): number {\n return this.isHijri ? getHijriDaysInMonth(date) : super.getNumDaysInMonth(date);\n }\n\n override createDate(year: number, month: number, date: number): Date {\n return this.isHijri ? createHijriDate(year, month, date) : super.createDate(year, month, date);\n }\n\n override addCalendarYears(date: Date, years: number): Date {\n return this.addCalendarMonths(date, years * 12);\n }\n\n override addCalendarMonths(date: Date, months: number): Date {\n if (!this.isHijri) {\n return super.addCalendarMonths(date, months);\n }\n const parts: HijriParts = getHijriParts(date);\n return this.#withTimeOf(createHijriDate(parts.year, parts.month + months, parts.day), date);\n }\n\n override addCalendarDays(date: Date, days: number): Date {\n if (!this.isHijri) {\n return super.addCalendarDays(date, days);\n }\n // a Hijri day is the same day, so this is plain Gregorian day arithmetic\n const shifted: Date = new Date(date.getTime());\n shifted.setDate(shifted.getDate() + days);\n return shifted;\n }\n\n override parse(value: any, parseFormat?: any): Date | null {\n if (typeof value !== \"string\") {\n return super.parse(value, parseFormat);\n }\n const clean: string = value.replace(/[‎‏]/g, \"\").trim();\n if (!clean) {\n return null;\n }\n\n if (this.isHijri) {\n return parseHijriDate(clean) ?? this.invalid();\n }\n\n const slashed: RegExpMatchArray | null = clean.match(/^(\\d{1,2})[/-](\\d{1,2})[/-](\\d{4})$/);\n if (slashed) {\n return new Date(+slashed[3], +slashed[2] - 1, +slashed[1]);\n }\n return super.parse(clean, parseFormat);\n }\n\n override format(date: Date, displayFormat: string): string {\n if (!this.isValid(date)) {\n throw Error(\"IssDateAdapter: Cannot format invalid date.\");\n }\n const year: number = this.getYear(date);\n const month: number = this.getMonth(date);\n const day: number = this.getDate(date);\n\n // NativeDateAdapter formats through Intl in UTC, which shifts the day for anyone west of\n // Greenwich; formatting the parts we already read keeps the rendered day the picked one.\n // One pass, so a substituted month name can never be re-read as a token.\n return (displayFormat ?? \"dd/MM/yyyy\").replace(/yyyy|MMMM|MMM|MM|dd/g, (token: string) => {\n switch (token) {\n case \"yyyy\":\n return String(year).padStart(4, \"0\");\n case \"MMMM\":\n return this.getMonthNames(\"long\")[month];\n case \"MMM\":\n return this.getMonthNames(\"short\")[month];\n case \"MM\":\n return String(month + 1).padStart(2, \"0\");\n default:\n return String(day).padStart(2, \"0\");\n }\n });\n }\n\n override deserialize(value: any): Date | null {\n // `yyyy-MM-dd` is a calendar day, not an instant: NativeDateAdapter reads it as UTC\n // midnight, which renders as the previous day in any negative-offset zone\n if (typeof value === \"string\") {\n const iso: RegExpMatchArray | null = value.match(/^(\\d{4})-(\\d{2})-(\\d{2})$/);\n if (iso) {\n return new Date(+iso[1], +iso[2] - 1, +iso[3]);\n }\n }\n return super.deserialize(value);\n }\n\n override toIso8601(date: Date): string {\n return [String(date.getFullYear()).padStart(4, \"0\"), String(date.getMonth() + 1).padStart(2, \"0\"), String(date.getDate()).padStart(2, \"0\")].join(\"-\");\n }\n\n #withTimeOf(date: Date, source: Date): Date {\n const result: Date = new Date(date.getTime());\n result.setHours(source.getHours(), source.getMinutes(), source.getSeconds(), source.getMilliseconds());\n return result;\n }\n}\n\n/**\n * Providers every date-based control needs: the {@link IssDateAdapter} itself, the Gregorian\n * locale it falls back to, and the `dd/MM/yyyy` formats both of its calendars are rendered in.\n *\n * Declared per component, so each picker owns its adapter instance and one field switching to\n * the Hijri calendar leaves every other field on the form alone.\n */\nexport function provideIssDateAdapter(): Provider[] {\n return [\n { provide: MAT_DATE_LOCALE, useValue: \"en-GB\" },\n { provide: DateAdapter, useClass: IssDateAdapter },\n { provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },\n ];\n}\n","import { DatePipe } from \"@angular/common\";\nimport { Component, effect, inject, input, InputSignal } from \"@angular/core\";\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validator } from \"@angular/forms\";\nimport { DateAdapter } from \"@angular/material/core\";\nimport { MatDatepickerInputEvent, MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { format } from \"date-fns\";\nimport { IssDateAdapter, provideIssDateAdapter } from \"../../../shared/services/iss-date-adapter\";\nimport { formatHijriDate, parseHijriDate } from \"../../../shared/utilities/hijri.util\";\nimport { ControlBase } from \"../base/control-base\";\n\n/**\n * `<iss-ctrl-date-picker>` — single date selection through a Material calendar.\n *\n * The input itself is read-only; clicking it opens the calendar. The emitted value is a\n * `yyyy-MM-dd` string, and a clear button appears once a date is picked.\n *\n * @example\n * ```html\n * <iss-ctrl-date-picker formControlName=\"startsOn\" [minDate]=\"today\" [disabledDays]=\"[5, 6]\">\n * <label>Start date</label>\n * </iss-ctrl-date-picker>\n * ```\n *\n * ### Own inputs\n * | Property | Type | Default | Description |\n * | --- | --- | --- | --- |\n * | `minDate` | `Date \\| null` | `null` | Earliest selectable date. |\n * | `maxDate` | `Date \\| null` | `null` | Latest selectable date. |\n * | `disabledDays` | `number[]` | `[]` | Week days to block, `0` = Sunday … `6` = Saturday. |\n * | `hijriCalendar` | `boolean` | `false` | Shows an Umm al-Qura Hijri calendar; the value stays Gregorian. |\n * | `emitHijri` | `boolean` | `false` | Emits the Hijri date instead of the Gregorian one. Implies `hijriCalendar`. |\n *\n * ### Hijri dates\n * `hijriCalendar` only changes what the user sees: the calendar is Hijri, the input reads\n * `dd/MM/yyyy` in Hijri, and a day shown as `16/03/1447` is still emitted as `2025-09-08`.\n * Turn on `emitHijri` as well when the form value itself has to be the Hijri date. `minDate` and\n * `maxDate` stay Gregorian in both cases — they are bounds on a day, not on a notation.\n *\n * ### Inherited from {@link ControlBase}\n * `formControlName` · `readonly` · `className` · `(onChange)`\n *\n * Projects `<label>` into the floating label; omit it to render the control without one.\n */\n@Component({\n selector: \"iss-ctrl-date-picker\",\n imports: [MatFormFieldModule, MatInputModule, MatDatepickerModule, MatIconModule, ReactiveFormsModule],\n providers: [\n DatePipe,\n provideIssDateAdapter(),\n { provide: NG_VALUE_ACCESSOR, useExisting: DatePickerControl, multi: true },\n { provide: NG_VALIDATORS, useExisting: DatePickerControl, multi: true },\n ],\n template: `\n <mat-form-field floatLabel=\"auto\" class=\"\">\n <!-- Always rendered: upgrade.scss shows the floating label only while the projected <label> carries text, so an omitted or empty one collapses on its own. -->\n <mat-label class=\"fs-16 fc-dark-gray\">\n <ng-content select=\"label\"></ng-content>\n </mat-label>\n <input\n class=\"cursor-pointer\"\n matInput\n [errorStateMatcher]=\"errorStateMatcher\"\n readonly\n [matDatepicker]=\"picker\"\n (click)=\"openPicker(picker)\"\n [formControl]=\"ctrl\"\n [readonly]=\"readonly()\"\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [matDatepickerFilter]=\"calendarDaysFilter\"\n (dateChange)=\"emit($event)\"\n />\n @if (ctrl.getRawValue()) {\n <mat-icon matSuffix style=\"cursor: pointer\" (click)=\"clear($event)\">close</mat-icon>\n }\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"readonly()\"></mat-datepicker-toggle>\n <mat-datepicker #picker [panelClass]=\"isHijri() ? 'iss-hijri-calendar' : ''\"></mat-datepicker>\n\n </mat-form-field>\n `,\n styles: `\n ::ng-deep {\n tr:has(> .mat-calendar-body-label[colspan=\"7\"]) {\n opacity: 0 !important;\n display: none;\n }\n\n .mat-datepicker-content .mat-calendar {\n height: unset !important;\n }\n }\n `\n})\nexport class DatePickerControl extends ControlBase implements Validator {\n /**\n * Week days that cannot be selected — `0` is Sunday through `6` for Saturday.\n */\n disabledDays: InputSignal<number[]> = input<number[]>([]);\n /**\n * Earliest selectable date.\n */\n minDate: InputSignal<Date | null> = input<Date | null>(null);\n /**\n * Latest selectable date.\n */\n maxDate: InputSignal<Date | null> = input<Date | null>(null);\n /**\n * Renders the calendar as an Umm al-Qura Hijri calendar, leaving the emitted value Gregorian.\n */\n hijriCalendar: InputSignal<boolean> = input(false);\n /**\n * Emits the picked date as a Hijri `yyyy-MM-dd` string. Implies {@link hijriCalendar}.\n */\n emitHijri: InputSignal<boolean> = input(false);\n #dateAdapter: IssDateAdapter = inject(DateAdapter) as IssDateAdapter;\n // the adapter is provided by this component, so switching it here leaves every other\n // picker on the form on its own calendar\n #hijriEffectRef = effect(() => this.#dateAdapter.setHijri(this.isHijri()));\n\n /**\n * Whether this picker is currently showing the Hijri calendar.\n */\n isHijri(): boolean {\n return this.hijriCalendar() || this.emitHijri();\n }\n\n override writeValue(value: string | Date | null): void {\n // a Hijri value read back from the form is `1447-03-15`, which is not the day\n // `new Date(\"1447-03-15\")` would give the calendar\n if (this.emitHijri() && typeof value === \"string\") {\n super.writeValue(parseHijriDate(value));\n return;\n }\n super.writeValue(value);\n }\n\n clear(event: MouseEvent) {\n if (this.readonly()) {\n return;\n }\n event.stopImmediatePropagation();\n this.ctrl.setValue(null);\n\n this.propagateValue(null);\n this.emitOnChangeEvent(null);\n }\n\n protected calendarDaysFilter = (d: Date | null): boolean => {\n const day: number = (d || new Date()).getDay();\n return !(this.disabledDays().includes(day));\n };\n\n protected emit($event: MatDatepickerInputEvent<any>) {\n if (this.readonly()) {\n return;\n }\n this.markAsTouched();\n const selectedDateString = this.emitHijri() ? formatHijriDate($event.value) : format($event.value, \"yyyy-MM-dd\");\n this.propagateValue(selectedDateString);\n this.emitOnChangeEvent(selectedDateString);\n }\n\n protected openPicker(picker: any): void {\n if (this.readonly()) {\n return;\n }\n picker.open();\n this.markAsTouched();\n }\n}\n","import { Component, effect, inject, input, InputSignal, OnDestroy, OnInit, output, OutputEmitterRef } from \"@angular/core\";\nimport { FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\nimport { DateAdapter } from \"@angular/material/core\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { format } from \"date-fns\";\nimport { Subscription } from \"rxjs\";\nimport { IssDateAdapter, provideIssDateAdapter } from \"../../../shared/services/iss-date-adapter\";\nimport { formatHijriDate, parseHijriDate } from \"../../../shared/utilities/hijri.util\";\nimport { ControlBase } from \"../base/control-base\";\nimport { DateRangeEmission } from \"./date-range-emission\";\n\n/**\n * `<iss-ctrl-date-range-picker>` — a start/end date range in one field.\n *\n * A half-filled range is not a value: clearing either endpoint clears the form value and\n * emits `null`. The form value is a `yyyy-MM-dd` string pair; `(onDateRangeObjectChange)`\n * emits the same range as a {@link DateRangeEmission} object.\n *\n * @example\n * ```html\n * <iss-ctrl-date-range-picker formControlName=\"period\" (onDateRangeObjectChange)=\"apply($event)\">\n * <label>Period</label>\n * </iss-ctrl-date-range-picker>\n * ```\n *\n * ### Own inputs\n * | Property | Type | Default | Description |\n * | --- | --- | --- | --- |\n * | `minDate` | `Date \\| null` | `null` | Earliest selectable date. |\n * | `maxDate` | `Date \\| null` | `null` | Latest selectable date. |\n * | `disabledDays` | `number[]` | `[]` | Week days to block, `0` = Sunday … `6` = Saturday. |\n * | `hijriCalendar` | `boolean` | `false` | Shows an Umm al-Qura Hijri calendar; the value stays Gregorian. |\n * | `emitHijri` | `boolean` | `false` | Emits both endpoints as Hijri dates. Implies `hijriCalendar`. |\n *\n * ### Hijri dates\n * `hijriCalendar` only changes what the user sees; the emitted range stays Gregorian until\n * `emitHijri` is on as well, at which point both endpoints carry Hijri dates. `duration` is\n * a count of days either way, and `minDate`/`maxDate` stay Gregorian.\n *\n * ### Inherited from {@link ControlBase}\n * `formControlName` · `readonly` · `className` · `(onChange)`\n *\n * ### Outputs\n * - `(onDateRangeObjectChange)` — `DateRangeEmission | null`, the range as an object.\n *\n * Projects `<label>` into the floating label; omit it to render the control without one.\n */\n@Component({\n selector: \"iss-ctrl-date-range-picker\",\n imports: [\n MatFormFieldModule,\n MatDatepickerModule,\n ReactiveFormsModule,\n MatIcon,\n ],\n providers: [\n provideIssDateAdapter(),\n { provide: NG_VALUE_ACCESSOR, useExisting: DateRangePickerControl, multi: true },\n ],\n template: `\n <mat-form-field floatLabel=\"auto\" class=\"\">\n\n <!-- Always rendered: upgrade.scss shows the floating label only while the projected <label> carries text, so an omitted or empty one collapses on its own. -->\n <mat-label class=\"fs-16 fc-dark-gray\">\n <ng-content select=\"label\"></ng-content>\n </mat-label>\n <mat-date-range-input\n [formGroup]=\"range\"\n [rangePicker]=\"picker\"\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [dateFilter]=\"calendarDaysFilter\"\n >\n <input\n matStartDate\n [errorStateMatcher]=\"errorStateMatcher\"\n formControlName=\"start\"\n [readonly]=\"readonly()\"\n placeholder=\"dd/mm/yyyy\"\n (click)=\"openPicker(picker)\"\n />\n <input\n matEndDate\n [errorStateMatcher]=\"errorStateMatcher\"\n formControlName=\"end\"\n [readonly]=\"readonly()\"\n placeholder=\"dd/mm/yyyy\"\n (click)=\"openPicker(picker)\"\n />\n </mat-date-range-input>\n @if (range.getRawValue().start || range.getRawValue().end) {\n <mat-icon matSuffix style=\"cursor: pointer\" (click)=\"clear($event)\">close</mat-icon>\n }\n <mat-datepicker-toggle matSuffix [for]=\"picker\" [disabled]=\"readonly()\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker [panelClass]=\"isHijri() ? 'iss-hijri-calendar' : ''\"></mat-date-range-picker>\n\n </mat-form-field>\n `\n})\nexport class DateRangePickerControl extends ControlBase implements OnInit, OnDestroy {\n /**\n * Week days that cannot be selected — `0` is Sunday through `6` for Saturday.\n */\n disabledDays: InputSignal<number[]> = input<number[]>([]);\n /**\n * Earliest selectable date.\n */\n minDate: InputSignal<Date | null> = input<Date | null>(null);\n /**\n * Latest selectable date.\n */\n maxDate: InputSignal<Date | null> = input<Date | null>(null);\n /**\n * Renders the calendar as an Umm al-Qura Hijri calendar, leaving the emitted range Gregorian.\n */\n hijriCalendar: InputSignal<boolean> = input(false);\n /**\n * Emits both endpoints as Hijri dates. Implies {@link hijriCalendar}.\n */\n emitHijri: InputSignal<boolean> = input(false);\n /**\n * Emits the selected range as an object, or `null` while the range is incomplete.\n */\n onDateRangeObjectChange: OutputEmitterRef<DateRangeEmission | null> = output();\n /**\n * The `start`/`end` form group backing the range input. Internal state.\n */\n readonly range: FormGroup = new FormGroup({\n start: new FormControl(null),\n end: new FormControl(null),\n });\n #sub: Subscription = new Subscription();\n #dateAdapter: IssDateAdapter = inject(DateAdapter) as IssDateAdapter;\n // the adapter is provided by this component, so switching it here leaves every other\n // picker on the form on its own calendar\n #hijriEffectRef = effect(() => this.#dateAdapter.setHijri(this.isHijri()));\n\n /**\n * Whether this picker is currently showing the Hijri calendar.\n */\n isHijri(): boolean {\n return this.hijriCalendar() || this.emitHijri();\n }\n\n ngOnInit(): void {\n this.#sub.add(\n this.range.valueChanges.subscribe((values) => {\n if (this.readonly()) {\n return;\n }\n if (!values.start || !values.end) {\n // an incomplete range is not a value, clearing one endpoint must clear the form value\n this.emitValue(null);\n this.onDateRangeObjectChange.emit(null);\n return;\n }\n this.emitValue(this.#getEmissionValue(values.start, values.end));\n this.onDateRangeObjectChange.emit(this.#getEmissionObject(values.start, values.end));\n })\n );\n }\n\n override setDisabledState(isDisabled: boolean): void {\n super.setDisabledState(isDisabled);\n // the template binds `range`, disabling ctrl alone leaves the inputs live\n if (isDisabled) {\n this.range.disable({ emitEvent: false });\n } else {\n this.range.enable({ emitEvent: false });\n }\n }\n\n clear(event: MouseEvent) {\n if (this.readonly()) {\n return;\n }\n event.stopImmediatePropagation();\n this.ctrl.setValue(null);\n this.range.setValue({\n start: null,\n end: null,\n });\n this.propagateValue(null);\n this.emitOnChangeEvent(null);\n }\n\n override writeValue(value: string | FormData | null) {\n if (typeof value !== \"string\" || !value) {\n this.ctrl.setValue(null, { emitEvent: false });\n this.range.reset({ start: null, end: null }, { emitEvent: false });\n return;\n }\n\n const valArr: string[] = value.split(\",\");\n const valObj = {\n // a Hijri endpoint read back from the form is `1447-03-15`, which is not the day\n // the adapter would deserialize it as\n start: this.#readEndpoint(valArr[0]),\n end: this.#readEndpoint(valArr[1]),\n };\n this.range.patchValue(valObj, { emitEvent: false });\n }\n\n ngOnDestroy(): void {\n this.#sub.unsubscribe();\n }\n\n // the endpoints live on `range`; `ctrl` only holds the emitted value of a complete range\n protected override isEmpty(): boolean {\n const { start, end } = this.range.getRawValue();\n return !start && !end;\n }\n\n protected openPicker(picker: any): void {\n if (this.readonly()) {\n return;\n }\n picker.open();\n this.markAsTouched();\n }\n\n protected calendarDaysFilter = (d: Date | null): boolean => {\n const day: number = (d || new Date()).getDay();\n return !(this.disabledDays().includes(day));\n };\n\n #getDuration(startDate: Date, endDate: Date) {\n const start: number = new Date(startDate).getTime();\n const end: number = new Date(endDate).getTime();\n return Math.ceil((end - start) / (1000 * 60 * 60 * 24) + 1);\n }\n\n #readEndpoint(value: string | undefined): Date | string | null {\n if (!value) {\n return null;\n }\n return this.emitHijri() ? parseHijriDate(value) : value;\n }\n\n #getFormatedDate(date: Date) {\n if (this.emitHijri()) {\n return `${formatHijriDate(date)}${format(date, \"'T'HH:mm:ss\")}`;\n }\n return format(date, \"yyyy-MM-dd'T'HH:mm:ss\");\n }\n\n #getFormatedEndDate(endDate: Date) {\n const inputDate: Date = new Date(new Date(endDate).setHours(23, 59, 59));\n return this.#getFormatedDate(inputDate);\n }\n\n #getEmissionValue(start: Date, end: Date): string {\n const formatedStart: string = this.#getFormatedDate(start);\n const formatedEnd: string = this.#getFormatedEndDate(end);\n return `${formatedStart},${formatedEnd}`;\n }\n\n #getEmissionObject(start: Date, end: Date): DateRangeEmission {\n return {\n duration: this.#getDuration(start, end),\n start: this.#getFormatedDate(start),\n end: this.#getFormatedEndDate(end)\n };\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, input, InputSignal } from \"@angular/core\";\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\nimport { provideNativeDateAdapter } from \"@angular/material/core\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatTimepickerModule } from \"@angular/material/timepicker\";\nimport { format } from \"date-fns\";\nimport { ControlBase } from \"../base/control-base\";\n\n/**\n * `<iss-ctrl-time-picker>` — time of day, picked from a list generated at a fixed interval.\n *\n * @example\n * ```html\n * <iss-ctrl-time-picker formControlName=\"startsAt\" interval=\"15min\" minTime=\"08:00\" maxTime=\"17:00\">\n * <label>Starts at</label>\n * </iss-ctrl-time-picker>\n * ```\n *\n * ### Own inputs\n * | Property | Type | Default | Description |\n * | --- | --- | --- | --- |\n * | `interval` | `string` | `\"30min\"` | Step between the offered times. |\n * | `minTime` | `string \\| null` | `null` | Earliest offered time, `HH:mm`. |\n * | `maxTime` | `string \\| null` | `null` | Latest offered time, `HH:mm`. |\n *\n * ### Inherited from {@link ControlBase}\n * `formControlName` · `readonly` · `className` · `(onChange)`\n *\n * Projects `<label>` into the floating label; omit it to render the control without one.\n */\n@Component({\n selector: \"iss-ctrl-time-picker\",\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [\n MatFormFieldModule, MatInputModule, MatTimepickerModule, ReactiveFormsModule, MatIcon,\n ],\n providers: [\n provideNativeDateAdapter(),\n { provide: NG_VALUE_ACCESSOR, useExisting: TimePickerControl, multi: true },\n { provide: NG_VALIDATORS, useExisting: TimePickerControl, multi: true },\n ],\n template: `\n <mat-form-field floatLabel=\"auto\" class=\"\">\n <!-- Always rendered: upgrade.scss shows the floating label only while the projected <label> carries text, so an omitted or empty one collapses on its own. -->\n <mat-label class=\"fs-16 fc-dark-gray\">\n <ng-content select=\"label\"></ng-content>\n </mat-label>\n <input\n matInput\n [errorStateMatcher]=\"errorStateMatcher\"\n [formControl]=\"ctrl\"\n [matTimepicker]=\"picker\"\n [matTimepickerMin]=\"minTime()\"\n [matTimepickerMax]=\"maxTime()\"\n [readonly]=\"readonly()\"\n readonly\n />\n @if (ctrl.getRawValue()) {\n <mat-icon matSuffix style=\"cursor: pointer\" (click)=\"clear($event)\">close</mat-icon>\n }\n <mat-timepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"readonly()\"/>\n <mat-timepicker (selected)=\"emit($event)\" [interval]=\"interval()\" #picker/>\n\n </mat-form-field>\n `,\n})\nexport class TimePickerControl extends ControlBase {\n /**\n * Step between the offered times, for example `\"15min\"` or `\"30min\"`.\n */\n interval: InputSignal<string> = input(\"30min\");\n /**\n * Earliest offered time of day, as `HH:mm`.\n */\n minTime: InputSignal<string | null> = input<string | null>(null);\n /**\n * Latest offered time of day, as `HH:mm`.\n */\n maxTime: InputSignal<string | null> = input<string | null>(null);\n\n emit(evt: any) {\n if (this.readonly()) {\n return;\n }\n this.propagateValue(this.#stringifyTime(evt.value));\n this.emitOnChangeEvent(this.#stringifyTime(evt.value));\n }\n\n clear(event: MouseEvent) {\n if (this.readonly()) {\n return;\n }\n event.stopImmediatePropagation();\n this.ctrl.setValue(null);\n\n this.propagateValue(null);\n this.emitOnChangeEvent(null);\n }\n\n override writeValue(value: any) {\n if (!value) {\n this.ctrl.setValue(null, { emitEvent: false });\n return;\n }\n\n const parts: string[] = String(value).split(\":\");\n const d = new Date();\n d.setHours(Number(parts[0]));\n d.setMinutes(Number(parts[1]));\n d.setSeconds(Number(parts[2] ?? \"00\"));\n this.ctrl.setValue(d, { emitEvent: false });\n }\n\n #stringifyTime(value: any) {\n let formatedTime;\n try {\n formatedTime = format(new Date(value), \"HH:mm:ss\");\n } catch (e) {\n formatedTime = value;\n }\n\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n return formatedTime;\n }\n\n return null;\n }\n}\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 * | `hijriCalendar` | `boolean` | `false` | Shows an Umm al-Qura Hijri calendar; the value stays Gregorian. |\r\n * | `emitHijri` | `boolean` | `false` | Emits the date half as a Hijri date. Implies `hijriCalendar`. |\r\n *\r\n * ### Hijri dates\r\n * Both flags are handed straight to the inner date picker; the time half is untouched, so a\r\n * Hijri value reads `1447-03-15T09:30:00`.\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\r\n (focusout)=\"markAsTouched()\"\r\n [disabledDays]=\"disabledDays()\"\r\n [maxDate]=\"maxDate()\"\r\n [minDate]=\"minDate()\"\r\n [readonly]=\"readonly()\"\r\n [hijriCalendar]=\"hijriCalendar()\"\r\n [emitHijri]=\"emitHijri()\"\r\n formControlName=\"date\"\r\n (onChange)=\"emit()\"\r\n >\r\n <!-- Re-projected with ngProjectAs so it still matches the date picker's own select=\"label\";\r\n wrapping it in a second <label> instead would nest one inside the other and defeat the label rule in upgrade.scss. -->\r\n <ng-content select=\"label\" ngProjectAs=\"label\"></ng-content>\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 * Renders the calendar as an Umm al-Qura Hijri calendar, leaving the emitted date Gregorian.\r\n */\r\n hijriCalendar: InputSignal<boolean> = input(false);\r\n /**\r\n * Emits the date half of the value as a Hijri date. Implies {@link hijriCalendar}.\r\n */\r\n emitHijri: InputSignal<boolean> = input(false);\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 Hints {\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 { Hints } from \"../../shared/hints\";\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 Hints,\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\";\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validator } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatInput, MatInputModule } from \"@angular/material/input\";\nimport { Hints } from \"../../shared/hints\";\nimport { ControlBase } from \"../base/control-base\";\n\n/**\n * `<iss-ctrl-input>` — single line text input, the base for every scalar text field.\n *\n * `type` is forwarded to the native input, so `number`, `email` and `password` variants all\n * come from this one control.\n *\n * @example\n * ```html\n * <iss-ctrl-input formControlName=\"amount\" type=\"number\" [min]=\"0\" suffixText=\"SAR\">\n * <label>Amount</label>\n * </iss-ctrl-input>\n * ```\n *\n * ### Own inputs\n * | Property | Type | Default | Description |\n * | --- | --- | --- | --- |\n * | `type` | `string` | `\"text\"` | Native input type: `text`, `number`, `email`, `password`, … |\n * | `prefixIcon` | `string` | `\"\"` | Icon rendered before the value. |\n * | `prefixText` | `string` | `\"\"` | Text rendered before the value. |\n * | `suffixIcon` | `string` | `\"\"` | Icon rendered after the value. |\n * | `suffixText` | `string` | `\"\"` | Text rendered after the value. |\n *\n * ### Inherited from {@link ControlBase}\n * `formControlName` · `readonly` · `className` · `(onChange)` · `placeholder` · `min` · `max` · `minLength` · `maxLength` · `hints`\n *\n * ### Outputs\n * - `(onPrefixClick)` — `string`, the prefix affix was clicked.\n * - `(onSuffixClick)` — `string`, the suffix affix was clicked.\n *\n * Projects `<label>` into the floating label; omit it to render the control without one.\n *\n * Also projects `[issPrefix]` and `[issSuffix]` for fully custom affixes.\n */\n@Component({\n selector: \"iss-ctrl-input\",\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n MatFormFieldModule,\n Hints,\n MatInput,\n MatInputModule,\n ],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: InputControl, multi: true },\n { provide: NG_VALIDATORS, useExisting: InputControl, multi: true }\n ],\n template: `\n <mat-form-field floatLabel=\"auto\" class=\"\">\n <!-- Always rendered: upgrade.scss shows the floating label only while the projected <label> carries text, so an omitted or empty one collapses on its own. -->\n <mat-label class=\"fs-16 fc-dark-gray\">\n <ng-content select=\"label\"></ng-content>\n </mat-label>\n <ng-content select=\"[issPrefix]\"></ng-content>\n <div (click)=\"emitPrefixClick()\" class=\"cursor-pointer\">\n @if (prefixText()) {\n <span matTextPrefix>{{ prefixText() }}</span>\n }\n @if (prefixIcon()) {\n <ds-icon matPrefix icon=\"{{prefixIcon()}}\"></ds-icon>\n }\n </div>\n <input\n matInput\n [errorStateMatcher]=\"errorStateMatcher\"\n (blur)=\"markAsTouched()\"\n (input)=\"emitValue()\"\n [formControl]=\"ctrl\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [attr.max]=\"max()\"\n [attr.min]=\"min()\"\n [placeholder]=\"placeholder()\"\n [readonly]=\"readonly()\"\n [type]=\"type()\"\n />\n <ng-content select=\"[issSuffix]\"></ng-content>\n <div (click)=\"emitSuffixClick()\" class=\"cursor-pointer\">\n @if (suffixText()) {\n <span matTextSuffix>{{ suffixText() }}</span>\n }\n @if (suffixIcon()) {\n <ds-icon matSuffix icon=\"{{suffixIcon()}}\"></ds-icon>\n }\n </div>\n <iss-ctrl-hints [hints]=\"hints()\" [touched]=\"touched()\"/>\n </mat-form-field>\n `\n})\nexport class InputControl extends ControlBase implements Validator, OnDestroy {\n /**\n * Native input type — `text`, `number`, `email`, `password`, and so on.\n */\n type: InputSignal<string> = input(\"text\");\n /**\n * Icon name rendered before the value.\n */\n prefixIcon: InputSignal<string> = input(\"\");\n /**\n * Static text rendered before the value.\n */\n prefixText: InputSignal<string> = input(\"\");\n /**\n * Icon name rendered after the value.\n */\n suffixIcon: InputSignal<string> = input(\"\");\n /**\n * Static text rendered after the value, a unit or currency for example.\n */\n suffixText: InputSignal<string> = input(\"\");\n /**\n * Emits when the prefix affix is clicked.\n */\n onPrefixClick: OutputEmitterRef<string> = output();\n /**\n * Emits when the suffix affix is clicked.\n */\n onSuffixClick: OutputEmitterRef<string> = output();\n #disabledEffect: EffectRef = effect(() => {\n if (this.disabled()) {\n this.ctrl.disable();\n } else {\n this.ctrl.enable();\n }\n });\n\n emitSuffixClick() {\n this.onSuffixClick.emit(this.ctrl.getRawValue());\n }\n\n emitPrefixClick() {\n this.onPrefixClick.emit(this.ctrl.getRawValue());\n }\n\n ngOnDestroy() {\n this.#disabledEffect.destroy();\n }\n}\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\";\nimport { NgClass, NgOptimizedImage } from \"@angular/common\";\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, EffectRef, inject, input, InputSignal, OnDestroy, Signal, signal, WritableSignal } from \"@angular/core\";\nimport { toSignal } from \"@angular/core/rxjs-interop\";\nimport { AbstractControl, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, ValidationErrors, Validator } from \"@angular/forms\";\nimport { MatFormField, MatPrefix } from \"@angular/material/form-field\";\nimport { MatInput, MatInputModule } from \"@angular/material/input\";\nimport { ControlBase } from \"../base/control-base\";\nimport { COUNTRIES, DEFAULT_COUNTRY } from \"./countries.const\";\nimport { Country } from \"./country\";\nimport { ISO2 } from \"./iso2.type\";\nimport { Mobile } from \"./mobile\";\nimport { Phone } from \"./phone\";\n\n/**\n * `<iss-ctrl-mobile>` — international phone number with a country selector.\n *\n * The number is validated against the selected country and stored in its international form.\n *\n * @example\n * ```html\n * <iss-ctrl-mobile formControlName=\"mobile\" [preferredCountries]=\"['SA', 'AE']\">\n * <label>Mobile</label>\n * </iss-ctrl-mobile>\n * ```\n *\n * ### Own inputs\n * | Property | Type | Default | Description |\n * | --- | --- | --- | --- |\n * | `preferredCountries` | `ISO2[]` | `[\"SA\"]` | Countries pinned to the top of the country list. |\n *\n * ### Inherited from {@link ControlBase}\n * `formControlName` · `readonly` · `className` · `(onChange)`\n *\n * Projects `<label>` into the floating label; omit it to render the control without one.\n */\n@Component({\n selector: \"iss-ctrl-mobile\",\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [\n ReactiveFormsModule,\n NgClass,\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n MatFormField,\n MatInput,\n MatPrefix,\n NgOptimizedImage,\n MatInputModule,\n ],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: MobileControl, multi: true },\n { provide: NG_VALIDATORS, useExisting: MobileControl, multi: true }\n ],\n template: `\n <mat-form-field floatLabel=\"auto\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n <!-- Always rendered: upgrade.scss shows the floating label only while the projected <label> carries text, so an omitted or empty one collapses on its own. -->\n <mat-label class=\"fs-16 fc-dark-gray\">\n <ng-content select=\"label\"></ng-content>\n </mat-label>\n <div class=\"d-inline-flex align-items-center gap-1 country-flag\" matPrefix (click)=\"toggleCountryCodeMenu()\">\n <img\n ngSrc=\"./flags/{{selectedCountry().code.toLowerCase()}}.svg\"\n width=\"20\"\n height=\"20\"\n [alt]=\"selectedCountry().code.toLowerCase()\"\n class=\"country-flag--image\"\n [priority]=\"true\"\n >\n <ds-icon icon=\"arrow-down\" class=\"fs-12 fc-dark-gray\"></ds-icon>\n </div>\n <input\n matInput\n type=\"tel\"\n autocomplete=\"off\"\n (blur)=\"markAsTouched()\"\n (keydown)=\"onInput($event)\"\n (input)=\"emit()\"\n [formControl]=\"ctrl\"\n [readonly]=\"readonly()\"\n [placeholder]=\"selectedCountry().placeholder\"\n [errorStateMatcher]=\"errorStateMatcher\"\n />\n </mat-form-field>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n (backdropClick)=\"closeCountryCodeMenu()\"\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n >\n <div class=\"country-dropdown bc-white box-shadow p-2\">\n <div class=\"search-container\">\n <mat-form-field>\n <input matInput id=\"country-search-box\" [formControl]=\"searchInput\" (click)=\"$event.stopPropagation()\"/>\n </mat-form-field>\n </div>\n <ul class=\"country-list\">\n @for (country of filteredCountries(); track $index) {\n <li\n #countryEl\n [ngClass]=\"country.order > 1 ? 'preferredCounty' : ''\"\n class=\"d-flex align-items-center gap-2 cursor-pointer p-2\"\n (click)=\"onSelectCountry(country)\"\n >\n @defer (on viewport(countryEl)) {\n <img ngSrc=\"./flags/{{country.code.toLowerCase()}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\">\n }\n <span class=\"fs-12 fc-dark-gray\">(+{{ country.dailCode }})</span>\n <span class=\"fs-12 fc-black\">{{ country.name }}</span>\n </li>\n }\n </ul>\n </div>\n </ng-template>\n `,\n styles: `\n .country-flag {\n border-inline-end: var(--input-border);\n padding-inline-end: .5rem;\n margin-inline-end: .5rem;\n cursor: pointer;\n }\n `\n})\nexport class MobileControl extends ControlBase implements OnDestroy, Validator {\n phoneService: Phone = inject(Phone);\n isOpen: WritableSignal<boolean> = signal(false);\n selectedCountry: WritableSignal<Country> = signal<Country>(DEFAULT_COUNTRY);\n /**\n * ISO-2 country codes pinned to the top of the country list; the first one is preselected.\n */\n preferredCountries: InputSignal<ISO2[]> = input<ISO2[]>([\"SA\"]);\n searchInput: FormControl = new FormControl(\"\");\n filteredCountries: Signal<Country[]> = computed(() => this.#searchInCountries());\n #searchQuery: Signal<string> = toSignal(this.searchInput.valueChanges);\n #disabledEffect: EffectRef = effect(() => {\n if (this.disabled()) {\n this.ctrl.disable();\n } else {\n this.ctrl.enable();\n }\n });\n\n override writeValue(value: string | null) {\n if (!value) {\n this.selectedCountry.set(DEFAULT_COUNTRY);\n this.ctrl.setValue(null, { emitEvent: false });\n return;\n }\n\n const mobileObject: Mobile | undefined = this.phoneService.getPhoneNumberObject(value);\n if (mobileObject) {\n this.selectedCountry.set(mobileObject);\n }\n this.ctrl.setValue(mobileObject?.nationalNumber ?? value, { emitEvent: false });\n }\n\n emit() {\n const nationalNumber: string | null = this.ctrl.getRawValue();\n if (!nationalNumber) {\n this.propagateValue(null);\n this.emitOnChangeEvent(this.selectedCountry());\n return;\n }\n\n const mobileInput = `+${this.selectedCountry().dailCode}${nationalNumber}`;\n const numberObject: Mobile | undefined = this.phoneService.getPhoneNumberObject(mobileInput);\n if (numberObject) {\n this.selectedCountry.set(numberObject);\n this.propagateValue(`+${numberObject.dailCode}${numberObject.nationalNumber}`);\n } else {\n this.propagateValue(mobileInput);\n }\n this.emitOnChangeEvent(this.selectedCountry());\n }\n\n override validate(control: AbstractControl): ValidationErrors | null {\n if (!control.getRawValue()) {\n return null;\n }\n\n const error: any = { invalidPhoneNumber: { accepted: this.selectedCountry().placeholder, input: control.getRawValue() } };\n const isValid: boolean = this.phoneService.validate(control.getRawValue());\n if (isValid) {\n return null;\n }\n\n return error;\n }\n\n ngOnDestroy() {\n this.#disabledEffect.destroy();\n }\n\n protected onInput(event: KeyboardEvent) {\n const allowedChars = /[0-9+\\-()]/;\n const allowedCtrlChars = /[axcv]/; // Allows copy-pasting\n const allowedOtherKeys = [\n \"ArrowLeft\",\n \"ArrowUp\",\n \"ArrowRight\",\n \"ArrowDown\",\n \"Home\",\n \"End\",\n \"Insert\",\n \"Delete\",\n \"Backspace\",\n ];\n if (!allowedChars.test(event.key) && !(event.ctrlKey && allowedCtrlChars.test(event.key)) && !allowedOtherKeys.includes(event.key)) {\n event.preventDefault();\n }\n }\n\n protected onSelectCountry(country: Country) {\n if (this.readonly()) {\n return;\n }\n this.selectedCountry.set(country);\n this.searchInput.setValue(\"\");\n this.closeCountryCodeMenu();\n\n const nationalNumber: string | null = this.ctrl.getRawValue();\n if (!nationalNumber) {\n this.propagateValue(null);\n this.emitOnChangeEvent(this.selectedCountry());\n return;\n }\n\n const mobileInput = `+${country.dailCode}${nationalNumber}`;\n this.propagateValue(mobileInput);\n this.emitOnChangeEvent(this.selectedCountry());\n }\n\n protected closeCountryCodeMenu() {\n this.isOpen.set(false);\n }\n\n protected toggleCountryCodeMenu() {\n if (this.readonly()) {\n return;\n }\n this.isOpen.update((isOpen: boolean) => !isOpen);\n }\n\n #sortCountries(): Country[] {\n // copies, never the shared COUNTRIES entries: order is per instance and must not leak globally\n return COUNTRIES.map((country: Country): Country => {\n const preferredIndex: number = this.preferredCountries().indexOf(country.code);\n if (preferredIndex === -1) {\n return { ...country };\n }\n return {\n ...country,\n order: country.priority + (-1 * (preferredIndex - this.preferredCountries().length)) * 100,\n };\n }).sort((a: Country, b: Country) => b.order - a.order);\n }\n\n #searchInCountries(): Country[] {\n const query: string = (this.#searchQuery() ?? \"\").toLowerCase();\n if (!query) {\n return this.#sortCountries();\n }\n return this.#sortCountries().filter((country: Country) => {\n return (\n country.code.toLowerCase().includes(query)\n || country.name.toLowerCase().includes(query)\n || country.dailCode.toLowerCase().includes(query)\n );\n });\n }\n}\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\";\nimport { NgClass, NgStyle, NgTemplateOutlet } from \"@angular/common\";\nimport { Component, computed, contentChild, CUSTOM_ELEMENTS_SCHEMA, effect, input, InputSignal, OnDestroy, output, OutputEmitterRef, signal, Signal, WritableSignal } from \"@angular/core\";\nimport { toSignal } from \"@angular/core/rxjs-interop\";\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatAutocompleteModule } from \"@angular/material/autocomplete\";\nimport { MatChipsModule } from \"@angular/material/chips\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { Option } from \"../../../shared/interfaces/option\";\nimport { SelectStatusPipe } from \"../../../shared/pipes/select-status.pipe\";\nimport { ControlBase } from \"../base/control-base\";\n\n/**\n * `<iss-ctrl-select>` — dropdown selection, single or multiple, with a search box.\n *\n * Typing in the search box emits `(onQueryChange)`, so options can be loaded remotely; set\n * `loading` while that request is in flight.\n *\n * @example\n * ```html\n * <iss-ctrl-select\n * formControlName=\"city\"\n * [options]=\"cities()\"\n * [multiple]=\"false\"\n * [loading]=\"loading()\"\n * (onQueryChange)=\"search($event)\"\n * >\n * <label>City</label>\n * </iss-ctrl-select>\n * ```\n *\n * ### Own inputs\n * | Property | Type | Default | Description |\n * | --- | --- | --- | --- |\n * | `options` | `Option[]` | **required** | The selectable choices. |\n * | `height` | `string` | `\"150px\"` | Max height of the open panel. |\n * | `loading` | `boolean` | `false` | Shows the loading state inside the panel. |\n *\n * ### Inherited from {@link ControlBase}\n * `formControlName` · `readonly` · `className` · `(onChange)` · `placeholder` · `multiple`\n *\n * ### Outputs\n * - `(onQueryChange)` — `string`, the current search text.\n *\n * Projects `<label>` into the floating label; omit it to render the control without one.\n */\n@Component({\n selector: \"iss-ctrl-select\",\n imports: [\n ReactiveFormsModule,\n MatAutocompleteModule,\n MatInputModule,\n MatChipsModule,\n MatIconModule,\n NgClass,\n SelectStatusPipe,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n NgStyle,\n NgTemplateOutlet,\n ],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: SelectControl, multi: true },\n ],\n template: `\n <mat-form-field floatLabel=\"auto\" class=\"\">\n <!-- Always rendered: upgrade.scss shows the floating label only while the projected <label> carries text, so an omitted or empty one collapses on its own. -->\n <mat-label class=\"fs-16 fc-dark-gray\">\n <ng-content select=\"label\"></ng-content>\n </mat-label>\n <input [formControl]=\"ctrl\" [matAutocomplete]=\"auto\" [matChipInputFor]=\"chipGrid\" [placeholder]=\"placeholder()\" [readonly]=\"readonly()\" [errorStateMatcher]=\"errorStateMatcher\" (blur)=\"markAsTouched()\" class=\"m-0\" matInput/>\n @if (!disabled()) {\n @if (selectedOptions().size) {\n <span matSuffix class=\"sfi sfi-close fs-18 fc-black cursor-pointer\" (click)=\"clearSelection()\"></span>\n } @else {\n <span matSuffix class=\"sfi sfi-arrow-down fs-18 fc-black cursor-pointer\"></span>\n }\n }\n\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"captureValue($event)\" [displayWith]=\"displayFn\" autoActiveFirstOption hideSingleSelectionIndicator>\n @if (loading()) {\n <mat-option disabled=\"true\">\n <ds-icon icon=\"spinner\" class=\"spin fc-coral fs-20\"></ds-icon>\n </mat-option>\n } @else {\n @if (filteredOptions().length) {\n @if (multiple()) {\n <mat-option (click)=\"toggleAllSelection()\" value=\"_SELECT_ALL_OPTIONS_\">\n {{ allSelected() ? \"deselect all\" : \"Select All\" }}\n </mat-option>\n }\n <cdk-virtual-scroll-viewport itemSize=\"5\" [ngStyle]=\"{'height': height()}\">\n <mat-option *cdkVirtualFor=\"let option of filteredOptions()\" [value]=\"option\" [ngClass]=\"{'mdc-list-item__selected': option | selectStatus: selectedOptions()}\">\n @if (optionTemplate()) {\n <ng-container *ngTemplateOutlet=\"optionTemplate(); context: { $implicit: option}\"/>\n } @else {\n {{ option.label }}\n }\n </mat-option>\n </cdk-virtual-scroll-viewport>\n } @else {\n <mat-option disabled=\"true\">No Result Found</mat-option>\n }\n }\n </mat-autocomplete>\n </mat-form-field>\n\n <mat-chip-grid #chipGrid>\n @if (multiple()) {\n @for (chip of selectedOptions(); track chip[0]) {\n <mat-chip-row (removed)=\"removeFromSelectedOptionsMap(chip[1])\">\n @if (cardViewerTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"cardViewerTemplate(); context: { $implicit: chip[1]}\"\n />\n } @else {\n {{ chip[1].label }}\n }\n <button matChipRemove [disabled]=\"readonly()\" [attr.aria-label]=\"'remove ' + chip[1].label\">\n <ds-icon icon=\"trash\" class=\"fc-red\"></ds-icon>\n </button>\n </mat-chip-row>\n }\n }\n </mat-chip-grid>\n `,\n styles: `\n ::ng-deep {\n .mat-mdc-option.mdc-list-item__selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text {\n --mat-option-selected-state-label-text-color: var(--green);\n color: var(--green);\n }\n }\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class SelectControl extends ControlBase implements OnDestroy {\n selectedOptions: WritableSignal<Map<string, Option>> = signal(new Map<string, Option>());\n /**\n * Selectable choices, each a `{ value, label }` pair. Required.\n */\n options: InputSignal<Option[]> = input.required();\n /**\n * Maximum height of the open options panel, as a CSS length.\n */\n height: InputSignal<string> = input(\"150px\");\n query: Signal<string> = toSignal(this.ctrl.valueChanges);\n readonly filteredOptions: Signal<Option[]> = computed(() => this.#filter(this.query()));\n /**\n * Shows the loading state inside the panel while options are being fetched.\n */\n loading: InputSignal<boolean> = input(false);\n /**\n * Emits the search text so the host can load matching options.\n */\n onQueryChange: OutputEmitterRef<string> = output();\n protected optionTemplate: any = contentChild(\"optionTemplate\");\n protected cardViewerTemplate: any = contentChild(\"cardViewerTemplate\");\n protected allSelected: WritableSignal<boolean> = signal(false);\n #queryEffectRef = effect(() => {\n if (typeof this.query() === \"string\") {\n this.onQueryChange.emit(this.query());\n }\n });\n #disabledEffectRef = effect(() => {\n if (this.disabled()) {\n this.ctrl.disable();\n } else {\n this.ctrl.enable();\n }\n });\n\n displayFn = (options: Option | Option[]): string => {\n if (Array.isArray(options) && !this.multiple()) {\n return options[0]?.label;\n }\n return \"\";\n };\n\n /*todo: add pagination for async options*/\n\n override writeValue(value: string | null) {\n this.#reset();\n if (value === null || value === undefined) {\n return;\n }\n const values: string[] = value.split(\",\").map(val => val.trim());\n let selectedOptions: Option[] = this.options().filter((option: Option) => values.includes(option.value));\n if (!this.multiple()) {\n // single selection mode, only the first matching option is honoured\n selectedOptions = selectedOptions.slice(0, 1);\n }\n const next: Map<string, Option> = new Map<string, Option>();\n for (let i = 0; i < selectedOptions.length; i++) {\n const val: Option = selectedOptions[i];\n next.set(val.value, val);\n }\n this.selectedOptions.set(next);\n this.ctrl.setValue(selectedOptions);\n }\n\n captureValue($event: any) {\n if (this.readonly()) {\n return;\n }\n if ($event?.option.value === \"_SELECT_ALL_OPTIONS_\") {\n return;\n }\n this.#addToSelectedOptionsMap($event?.option.value);\n this.#emit();\n }\n\n removeFromSelectedOptionsMap(option: Option) {\n if (this.readonly()) {\n return;\n }\n this.selectedOptions.update((selected: Map<string, Option>) => {\n const next: Map<string, Option> = new Map(selected);\n next.delete(option.value);\n return next;\n });\n this.allSelected.set(false);\n this.#emit();\n }\n\n clearSelection() {\n if (this.readonly()) {\n return;\n }\n this.#reset();\n this.allSelected.set(false);\n this.#emit();\n }\n\n toggleAllSelection() {\n if (this.readonly()) {\n return;\n }\n if (this.selectedOptions().size === this.options().length) {\n this.#reset();\n this.#emit();\n this.allSelected.set(false);\n return;\n }\n const next: Map<string, Option> = new Map<string, Option>();\n for (let i = 0; i < this.options().length; i++) {\n const option: Option = this.options()[i];\n next.set(option.value, option);\n }\n this.selectedOptions.set(next);\n this.ctrl.setValue(this.#convertSelectedMapToArray());\n this.allSelected.set(true);\n this.#emit();\n }\n\n ngOnDestroy(): void {\n this.#queryEffectRef.destroy();\n this.#disabledEffectRef.destroy();\n }\n\n // the selection is the value here; `ctrl` doubles as the autocomplete's search box, so while\n // the user is typing a query it holds that string rather than the chosen options.\n protected override isEmpty(): boolean {\n return this.selectedOptions().size === 0;\n }\n\n #addToSelectedOptionsMap(option: any) {\n if (option) {\n const selectedOption = option;\n this.selectedOptions.update((selected: Map<string, Option>) => {\n // single selection replaces the map instead of adding to it\n const next: Map<string, Option> = this.multiple() ? new Map(selected) : new Map<string, Option>();\n next.set(selectedOption.value, selectedOption);\n return next;\n });\n this.ctrl.setValue(this.#convertSelectedMapToArray());\n }\n }\n\n #stringifySelectedOptions(): string | null {\n const selectedOptionsArr: Option[] | null = this.#convertSelectedMapToArray();\n if (selectedOptionsArr) {\n return selectedOptionsArr.map((o) => o.value).join();\n }\n return null;\n }\n\n #filter(queryString: string | Option): Option[] {\n if (queryString === null || queryString === undefined || typeof queryString !== \"string\") {\n return this.options();\n }\n const query: string = queryString.toLowerCase();\n return this.options().filter((option: Option) => {\n return (option.value.toLowerCase().includes(query) || option.label.toLowerCase().includes(query));\n });\n }\n\n #emit() {\n this.propagateValue(this.#stringifySelectedOptions());\n this.emitOnChangeEvent(this.#convertSelectedMapToArray());\n }\n\n #reset() {\n this.selectedOptions.set(new Map<string, Option>());\n this.ctrl.setValue(null);\n }\n\n #convertSelectedMapToArray(): Option[] | null {\n const selectedOptionsArr: Option[] = Array.from(this.selectedOptions(), ([_, option]) => option);\n return selectedOptionsArr.length ? selectedOptionsArr : null;\n }\n}\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\";\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatFormField, MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { Hints } from \"../../shared/hints\";\nimport { ControlBase } from \"../base/control-base\";\n\n/**\n * `<iss-ctrl-textarea>` — multi line free text.\n *\n * @example\n * ```html\n * <iss-ctrl-textarea formControlName=\"notes\" [maxLength]=\"500\" placeholder=\"Add a note\">\n * <label>Notes</label>\n * </iss-ctrl-textarea>\n * ```\n *\n * ### Own inputs\n * None — the control is configured entirely through the inherited properties.\n *\n * ### Inherited from {@link ControlBase}\n * `formControlName` · `readonly` · `className` · `(onChange)` · `placeholder` · `minLength` · `maxLength` · `hints`\n *\n * Projects `<label>` into the floating label; omit it to render the control without one.\n */\n@Component({\n selector: \"iss-ctrl-textarea\",\n imports: [\n MatFormField,\n MatInput,\n Hints,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n ],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: TextareaControl, multi: true },\n { provide: NG_VALIDATORS, useExisting: TextareaControl, multi: true }\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: `\n <mat-form-field floatLabel=\"auto\" class=\"custom-textarea\">\n <!-- Always rendered: upgrade.scss shows the floating label only while the projected <label> carries text, so an omitted or empty one collapses on its own. -->\n <mat-label class=\"fs-16 fc-dark-gray\">\n <ng-content select=\"label\"></ng-content>\n </mat-label>\n <textarea\n matInput\n [errorStateMatcher]=\"errorStateMatcher\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"ctrl\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [readonly]=\"readonly()\"\n (input)=\"emitValue()\"\n (focusout)=\"markAsTouched()\"\n >\n </textarea>\n <iss-ctrl-hints [hints]=\"hints()\" [touched]=\"touched()\"/>\n </mat-form-field>\n `\n})\nexport class TextareaControl extends ControlBase implements OnDestroy {\n #disabledEffect: EffectRef = effect(() => {\n if (this.disabled()) {\n this.ctrl.disable();\n } else {\n this.ctrl.enable();\n }\n });\n\n ngOnDestroy() {\n this.#disabledEffect.destroy();\n }\n}\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` · `hijriCalendar` · `emitHijri`\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 * Renders the calendar as an Umm al-Qura Hijri calendar. The emitted value stays Gregorian\r\n * unless {@link FieldConfig.emitHijri} is also on. Source: `config.hijriCalendar`, also\r\n * accepted as `config.HijriCalendar`.\r\n */\r\n hijriCalendar: WritableSignal<boolean | undefined> = signal(undefined);\r\n /**\r\n * Emits the picked date as a Hijri date instead of a Gregorian one — the same day emitted\r\n * as `1447-03-16` rather than `2025-09-08`. Implies {@link FieldConfig.hijriCalendar}: a\r\n * Hijri value is always picked from a Hijri calendar.\r\n */\r\n emitHijri: 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.hijriCalendar.set(config?.hijriCalendar ?? config?.HijriCalendar);\r\n this.emitHijri.set(config?.emitHijri);\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, exactly as the JSON declared them. |\r\n * | `validationFns` | `Record<string, Function>` | Validator factory behind each active rule, resolved by the outlet. |\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 // The lazily imported factory behind each active rule in `validation`, keyed by rule name.\r\n // The factories are kept beside the rules instead of inside them so `validation` stays the\r\n // object the JSON declared: what a rule says is the API's, how it is applied is ours.\r\n validationFns: Record<string, Function> = {};\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\r\n/**\r\n * Whether a rule in a field's `validation` is switched on.\r\n *\r\n * The rule's value is the argument its validator is built with, so it is also what says\r\n * whether the rule applies at all: `{ \"required\": false }` is an optional field, not a\r\n * required one, and a rule the API left out or sent as null is off the same way. Values\r\n * that are falsy but meaningful — `0`, `\"\"` — are rules, so only the three off states are\r\n * rejected here.\r\n */\r\nexport function isActiveValidationRule(value: unknown): boolean {\r\n return value !== undefined && value !== null && value !== false;\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 { isActiveValidationRule } from \"../indexes/validators.index\";\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 // A rule that names another field — `beforeDate`, say — carries that name as its value, and\r\n // `processTrackChanges` ignores every value that is not a string.\r\n const iterateOn = Object.entries(field.validation ?? {});\r\n iterateOn.forEach((validationObj: any) => {\r\n this.processTrackChanges(validationObj[1], 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 // A field carries validation only where a rule is actually switched on: one sent as `false`\r\n // or `null` says the field is free of it, so it counts for nothing here.\r\n fieldHasValidation(field: IssField): boolean {\r\n return !!field.validation && Object.values(field.validation).some(isActiveValidationRule);\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 (isActiveValidationRule(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 // Builds each switched-on rule into its validator, out of the value the rule was given:\r\n // `{ \"minLength\": 3 }` is what makes the validator refuse two characters, and `{ \"required\":\r\n // false }` builds nothing at all. The field rides along as the second argument for the rules\r\n // that need their neighbours — `beforeDate` and friends — and is ignored by the rest.\r\n // A rule whose factory never resolved is skipped rather than called.\r\n #validatorsToNgValidators(field: IssField): ValidatorFn[] {\r\n return Object.entries(field.validation ?? {})\r\n .filter(([key, value]) => isActiveValidationRule(value) && typeof field.validationFns?.[key] === \"function\")\r\n .map(([key, value]): ValidatorFn => field.validationFns[key](value, 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 { isActiveValidationRule, 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 styles: `\r\n :host {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 2rem;\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 // Resolves the validator behind every rule the field switched on. `validation` itself is left\r\n // exactly as it arrived — the caller's own object, which it may still read and re-render — so\r\n // the factories land in `validationFns` and the rules keep the values they were given.\r\n // A rule that is off carries no validator: nothing is imported for it and nothing is built\r\n // from it, which is what makes `{ \"required\": false }` an optional field.\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 isActiveValidationRule(validation);\r\n }\r\n );\r\n\r\n await Promise.all(\r\n validationEntries.map(async ([key]) => {\r\n f.validationFns[key] = await VALIDATORS[key]();\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 { IssValidator } from \"../interfaces/validation\";\r\n\r\nexport const VALIDATION_MESSAGES: IssValidator = {\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 { 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 <div class=\"messages\">\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 </div>\r\n }\r\n `,\r\n styles: `\r\n /* The host keeps no height of its own, so showing or hiding a message never\r\n reflows the fields below it — the messages overlay the outlet gap instead. */\r\n :host {\r\n display: block;\r\n position: relative;\r\n }\r\n\r\n .messages {\r\n position: absolute;\r\n inset-inline: 0;\r\n top: 0;\r\n z-index: 1;\r\n }\r\n\r\n p {\r\n margin: 0;\r\n }\r\n `,\r\n})\r\nexport class ValidationMessage {\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\n\r\n/**\r\n * `<iss-field-viewer>` — read-only presentation of a single field as a\r\n * label / value row.\r\n *\r\n * Project the caption into the `label` slot and the rendered value into any\r\n * element carrying a `value` attribute:\r\n *\r\n * ```html\r\n * <iss-field-viewer>\r\n * <label>Request Type</label>\r\n * <span>value</span>\r\n * </iss-field-viewer>\r\n * ```\r\n *\r\n * The label sits in a fixed-width column, so every value in a stack of viewers\r\n * starts on the same vertical line. Override that column with the\r\n * `--field-viewer-label-width` custom property on any ancestor.\r\n * When no label is projected, the value spans the full width of the row.\r\n */\r\n@Component({\r\n selector: \"iss-field-viewer\",\r\n imports: [],\r\n template: `\r\n <div class=\"field-viewer w-100\">\r\n <span class=\"field-viewer__label\"><ng-content select=\"label\"></ng-content></span>\r\n <span class=\"field-viewer__value\"><ng-content></ng-content></span>\r\n </div>\r\n `,\r\n styles: `\r\n :host {\r\n --field-viewer-label-width: 14rem;\r\n --field-viewer-gap: 1.5rem;\r\n --field-viewer-padding: .75rem 1rem;\r\n --field-viewer-label-fc: var(--dark-gray);\r\n --field-viewer-value-fc: var(--black);\r\n\r\n display: block;\r\n width: 100%;\r\n }\r\n\r\n .field-viewer {\r\n display: grid;\r\n grid-template-columns: var(--field-viewer-label-width) minmax(0, 1fr);\r\n align-items: baseline;\r\n column-gap: var(--field-viewer-gap);\r\n padding: var(--field-viewer-padding);\r\n border-radius: var(--box-radius);\r\n font-size: .875rem;\r\n line-height: var(--default-line-height);\r\n }\r\n\r\n .field-viewer__label {\r\n color: var(--field-viewer-label-fc);\r\n font-weight: var(--font-regular);\r\n overflow-wrap: anywhere;\r\n }\r\n\r\n .field-viewer__value {\r\n min-width: 0;\r\n color: var(--field-viewer-value-fc);\r\n font-weight: var(--font-bold);\r\n overflow-wrap: anywhere;\r\n }\r\n\r\n /* The projected label keeps the slot's typography instead of its own defaults. */\r\n .field-viewer__label ::ng-deep label {\r\n display: block;\r\n margin: 0;\r\n color: inherit;\r\n font: inherit;\r\n }\r\n\r\n /* No label projected — the value takes the whole row. */\r\n .field-viewer:not(:has(.field-viewer__label > *)) {\r\n grid-template-columns: minmax(0, 1fr);\r\n }\r\n\r\n .field-viewer:not(:has(.field-viewer__label > *)) .field-viewer__label {\r\n display: none;\r\n }\r\n\r\n @media (max-width: 575.98px) {\r\n .field-viewer {\r\n grid-template-columns: minmax(0, 1fr);\r\n row-gap: .25rem;\r\n }\r\n }\r\n `,\r\n})\r\nexport class FieldViewer {\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 { ValidationMessage } from \"../../shared/validation-message\";\r\nimport { FieldBase } from \"../base/field-base\";\r\nimport { InputControl } from \"./input.control\";\r\nimport { InputViewer } from \"./input.viewer\";\r\nimport { FieldViewer } from \"../../shared/field-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 ValidationMessage,\r\n InputViewer,\r\n FieldViewer\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-field-viewer>\r\n <label>{{ field.label() }}</label>\r\n <iss-viewer-input [field]=\"field\"/>\r\n </iss-field-viewer>\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 { FieldViewer } from \"../../shared/field-viewer\";\r\nimport { ValidationMessage } from \"../../shared/validation-message\";\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 ValidationMessage,\r\n TextareaViewer,\r\n FieldViewer\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-field-viewer>\r\n <label>{{ field.label() }}</label>\r\n <iss-viewer-textarea [field]=\"field\"/>\r\n </iss-field-viewer>\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 { FieldViewer } from \"../../shared/field-viewer\";\r\nimport { ValidationMessage } from \"../../shared/validation-message\";\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 ValidationMessage,\r\n ChipsViewer,\r\n FieldViewer\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-field-viewer>\r\n <label>{{ field.label() }}</label>\r\n <iss-viewer-chips [field]=\"field\"/>\r\n </iss-field-viewer>\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 { FieldViewer } from \"../../shared/field-viewer\";\r\nimport { ValidationMessage } from \"../../shared/validation-message\";\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 ValidationMessage,\r\n RadioViewer,\r\n FieldViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n <div style=\"display: flex; flex-direction: column\">\r\n @if (field.mode() === \"edit\") {\r\n @if (!field.config.hideLabel()) {\r\n <mat-label>{{ field.label() }}</mat-label>\r\n }\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-field-viewer>\r\n @if (!field.config.hideLabel()) {\r\n <label>{{ field.label() }}</label>\r\n }\r\n <iss-viewer-radio [field]=\"field\"/>\r\n </iss-field-viewer>\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 { FieldViewer } from \"../../shared/field-viewer\";\r\nimport { ValidationMessage } from \"../../shared/validation-message\";\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 ValidationMessage,\r\n SelectViewer,\r\n FieldViewer\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-field-viewer>\r\n <label>{{ field.label() }}</label>\r\n <iss-viewer-select [field]=\"field\"/>\r\n </iss-field-viewer>\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 { FieldViewer } from \"../../shared/field-viewer\";\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 FieldViewer\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-field-viewer>\r\n <label>{{ field.label() }}</label>\r\n <iss-viewer-mobile [field]=\"field\"/>\r\n </iss-field-viewer>\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 { FieldViewer } from \"../../shared/field-viewer\";\r\nimport { ValidationMessage } from \"../../shared/validation-message\";\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 ValidationMessage,\r\n CheckboxViewer,\r\n FieldViewer\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-field-viewer>\r\n @if (!field.config.hideLabel()) {\r\n <label>{{ field.label() }}</label>\r\n }\r\n <iss-viewer-checkbox [field]=\"field\"/>\r\n </iss-field-viewer>\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 { FieldViewer } from \"../../shared/field-viewer\";\r\nimport { ValidationMessage } from \"../../shared/validation-message\";\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 ValidationMessage,\r\n ToggleButtonViewer,\r\n FieldViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n @if (!field.config.hideLabel()) {\r\n <mat-label>{{ field.label() }}</mat-label>\r\n }\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-field-viewer>\r\n @if (!field.config.hideLabel()) {\r\n <label>{{ field.label() }}</label>\r\n }\r\n <iss-viewer-toggle-button [field]=\"field\"/>\r\n </iss-field-viewer>\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 { FieldViewer } from \"../../shared/field-viewer\";\r\nimport { ValidationMessage } from \"../../shared/validation-message\";\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, ValidationMessage, FieldViewer],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n @if (!field.config.hideLabel()) {\r\n <mat-label>{{ field.label() }}</mat-label>\r\n }\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-field-viewer>\r\n @if (!field.config.hideLabel()) {\r\n <label>{{ field.label() }}</label>\r\n }\r\n <iss-viewer-slide-toggle [field]=\"field\"/>\r\n </iss-field-viewer>\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 { FieldViewer } from \"../../shared/field-viewer\";\r\nimport { ValidationMessage } from \"../../shared/validation-message\";\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 ValidationMessage,\r\n MatLabel,\r\n PlateViewer,\r\n FieldViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n @if (!field.config.hideLabel()) {\r\n <mat-label>{{ field.label() }}</mat-label>\r\n }\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-field-viewer>\r\n @if (!field.config.hideLabel()) {\r\n <label>{{ field.label() }}</label>\r\n }\r\n <iss-viewer-plate [field]=\"field\"/>\r\n </iss-field-viewer>\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 { FieldViewer } from \"../../shared/field-viewer\";\r\nimport { ValidationMessage } from \"../../shared/validation-message\";\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 ValidationMessage,\r\n AttachmentViewer,\r\n MatLabel,\r\n FieldViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <mat-label>{{ field.label() }}</mat-label>\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-field-viewer>\r\n <label>{{ field.label() }}</label>\r\n <iss-viewer-attachment [uploading]=\"uploading()\" [field]=\"viewField()\"/>\r\n </iss-field-viewer>\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 accepted extensions are the `fileType` rule's own value, the same one its validator is\r\n // built from — a list, or the comma-separated string an older definition wrote it as.\r\n #acceptFactory(): string {\r\n const extensions: any = this.field.validation?.[\"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 { FieldViewer } from \"../../shared/field-viewer\";\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 FieldViewer\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-field-viewer>\r\n <label>{{ field.label() }}</label>\r\n <iss-viewer-time-picker [field]=\"field\"/>\r\n </iss-field-viewer>\r\n }\r\n }\r\n `\r\n})\r\nexport class TimePickerField extends FieldBase {}\r\n","import { DatePipe } from \"@angular/common\";\nimport { Component, computed, Signal } from \"@angular/core\";\nimport { toHijriDisplay } from \"../../../shared/utilities/hijri.util\";\nimport { ViewerBase } from \"../base/viewer-base\";\n\n@Component({\n selector: \"iss-viewer-date-picker\",\n imports: [\n DatePipe\n ],\n template: `\n @if (hijriDate(); as hijri) {\n {{ hijri }}\n } @else {\n {{ field().ctrlValue() | date: 'dd/MM/yyyy' }}\n }\n `\n})\nexport class DatePickerViewer extends ViewerBase {\n // a field picked on the Hijri calendar reads back as a Hijri date, whichever calendar its\n // stored value is in\n protected hijriDate: Signal<string | null> = computed(() => toHijriDisplay(this.field().ctrlValue(), {\n hijriCalendar: this.field().config?.hijriCalendar(),\n emitHijri: this.field().config?.emitHijri(),\n }));\n}\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { FieldViewer } from \"../../shared/field-viewer\";\r\nimport { ValidationMessage } from \"../../shared/validation-message\";\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 * | `hijriCalendar` | `boolean` | Renders an Umm al-Qura Hijri calendar while the emitted value stays Gregorian. |\r\n * | `emitHijri` | `boolean` | Emits the Hijri date instead of the Gregorian one. Implies `hijriCalendar`. |\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 ValidationMessage,\r\n DatePickerViewer,\r\n FieldViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-date-picker\r\n [formControlName]=\"field.name\"\r\n [minDate]=\"field.config.minDate() ?? null\"\r\n [maxDate]=\"field.config.maxDate() ?? null\"\r\n [readonly]=\"field.config.readonly() ?? false\"\r\n [hijriCalendar]=\"field.config.hijriCalendar() ?? false\"\r\n [emitHijri]=\"field.config.emitHijri() ?? false\"\r\n >\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-field-viewer>\r\n <label>{{ field.label() }}</label>\r\n <iss-viewer-date-picker [field]=\"field\"/>\r\n </iss-field-viewer>\r\n }\r\n }\r\n `\r\n})\r\nexport class DatePickerField extends FieldBase {}\r\n","import { DatePipe } from \"@angular/common\";\nimport { Component, computed, Signal } from \"@angular/core\";\nimport { DATETIME_FORMAT } from \"../../../shared/constants/date-format.const\";\nimport { toHijriDisplay } from \"../../../shared/utilities/hijri.util\";\nimport { ViewerBase } from \"../base/viewer-base\";\n\n@Component({\n selector: \"iss-viewer-datetime-picker\",\n imports: [\n DatePipe\n ],\n template: `\n @if (hijriDatetime(); as hijri) {\n {{ hijri }}\n } @else {\n {{ field().ctrlValue() | date: DATETIME_FORMAT }}\n }\n `\n})\nexport class DatePickerTimeViewer extends ViewerBase {\n protected readonly DATETIME_FORMAT = DATETIME_FORMAT;\n // a field picked on the Hijri calendar reads back as a Hijri date, whichever calendar its\n // stored value is in\n protected hijriDatetime: Signal<string | null> = computed(() => toHijriDisplay(this.field().ctrlValue(), {\n hijriCalendar: this.field().config?.hijriCalendar(),\n emitHijri: this.field().config?.emitHijri(),\n withTime: true,\n }));\n}\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { FieldViewer } from \"../../shared/field-viewer\";\r\nimport { ValidationMessage } from \"../../shared/validation-message\";\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 * | `hijriCalendar` | `boolean` | Renders an Umm al-Qura Hijri calendar while the emitted value stays Gregorian. |\r\n * | `emitHijri` | `boolean` | Emits the Hijri date instead of the Gregorian one. Implies `hijriCalendar`. |\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 ValidationMessage,\r\n DatePickerTimeViewer,\r\n FieldViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-datetime-picker\r\n [formControlName]=\"field.name\"\r\n [minDate]=\"field.config.minDate() ?? null\"\r\n [maxDate]=\"field.config.maxDate() ?? null\"\r\n [readonly]=\"field.config.readonly() ?? false\"\r\n [hijriCalendar]=\"field.config.hijriCalendar() ?? false\"\r\n [emitHijri]=\"field.config.emitHijri() ?? false\"\r\n >\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-field-viewer>\r\n <label>{{ field.label() }}</label>\r\n <iss-viewer-datetime-picker [field]=\"field\"/>\r\n </iss-field-viewer>\r\n }\r\n }\r\n `\r\n})\r\nexport class DatetimePickerField extends FieldBase {}\r\n","import { DatePipe } from \"@angular/common\";\nimport { Component, OnInit } from \"@angular/core\";\nimport { toHijriDisplay } from \"../../../shared/utilities/hijri.util\";\nimport { ViewerBase } from \"../base/viewer-base\";\n\n@Component({\n selector: \"iss-viewer-date-range-picker\",\n imports: [\n DatePipe\n ],\n template: `\n @for (date of dateRange; track date; let last = $last) {\n <span> {{ hijriDates[$index] ?? (date | date: 'dd/MM/yyyy') }} {{ last ? '' : '- ' }} </span>\n }\n `\n})\nexport class DateRangePickerViewer extends ViewerBase implements OnInit {\n dateRange: string[] = [];\n // a range picked on the Hijri calendar reads back as Hijri dates, whichever calendar its\n // stored value is in\n hijriDates: (string | null)[] = [];\n\n ngOnInit() {\n this.dateRange = this.field().ctrlValue().split(\",\").map((val: any) => val.trim());\n this.hijriDates = this.dateRange.map((date: string) => toHijriDisplay(date, {\n hijriCalendar: this.field().config?.hijriCalendar(),\n emitHijri: this.field().config?.emitHijri(),\n }));\n }\n}\n","import { Component } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\r\nimport { FieldViewer } from \"../../shared/field-viewer\";\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 * | `hijriCalendar` | `boolean` | Renders an Umm al-Qura Hijri calendar while the emitted value stays Gregorian. |\r\n * | `emitHijri` | `boolean` | Emits the Hijri date instead of the Gregorian one. Implies `hijriCalendar`. |\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 FieldViewer\r\n ],\r\n template: `\r\n @if (field.visible()) {\r\n @if (field.mode() === \"edit\") {\r\n <iss-ctrl-date-range-picker\r\n [formControlName]=\"field.name\"\r\n [minDate]=\"field.config.minDate() ?? null\"\r\n [maxDate]=\"field.config.maxDate() ?? null\"\r\n [readonly]=\"field.config.readonly() ?? false\"\r\n [hijriCalendar]=\"field.config.hijriCalendar() ?? false\"\r\n [emitHijri]=\"field.config.emitHijri() ?? false\"\r\n >\r\n <label>{{ field.label() }}</label>\r\n </iss-ctrl-date-range-picker>\r\n } @else {\r\n <iss-field-viewer>\r\n <label>{{ field.label() }}</label>\r\n <iss-viewer-date-range-picker [field]=\"field\"/>\r\n </iss-field-viewer>\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 { DATETIME_FORMAT } from \"../shared/constants/date-format.const\";\r\n\r\nexport abstract class TimeValidator {\r\n // The rule's value is the name of the field this one must not run past, so it arrives here\r\n // rather than being read back off the field.\r\n static beforeDate(otherFieldName: string): 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(otherFieldName);\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(otherFieldName: string): 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\";\r\nexport * from \"./components/shared/validation-message\";\r\nexport * from \"./components/shared/field-viewer\";\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 \"./shared/services/iss-date-adapter\";\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/hijri.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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"}