@corp-products/ui-components 3.2.9 → 3.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/fesm2022/corp-products-ui-components.mjs +1999 -0
  2. package/fesm2022/corp-products-ui-components.mjs.map +1 -0
  3. package/index.d.ts +653 -0
  4. package/package.json +36 -22
  5. package/ng-package.json +0 -7
  6. package/src/enums/date-formatter.ts +0 -21
  7. package/src/helper/date-handler.ts +0 -142
  8. package/src/lib/app-accordion/app-accordion.component.html +0 -15
  9. package/src/lib/app-accordion/app-accordion.component.scss +0 -0
  10. package/src/lib/app-accordion/app-accordion.component.spec.ts +0 -21
  11. package/src/lib/app-accordion/app-accordion.component.ts +0 -21
  12. package/src/lib/app-accordion/index.ts +0 -2
  13. package/src/lib/app-breadcrumb/app-breadcrumb.component.html +0 -7
  14. package/src/lib/app-breadcrumb/app-breadcrumb.component.scss +0 -25
  15. package/src/lib/app-breadcrumb/app-breadcrumb.component.ts +0 -140
  16. package/src/lib/app-breadcrumb/app-breadcrumb.interface.ts +0 -15
  17. package/src/lib/app-button/app-button.component.html +0 -7
  18. package/src/lib/app-button/app-button.component.scss +0 -0
  19. package/src/lib/app-button/app-button.component.ts +0 -14
  20. package/src/lib/app-button/app-button.ts +0 -15
  21. package/src/lib/app-button/index.ts +0 -2
  22. package/src/lib/app-dropdown-menu/app-dropdown-menu.component.html +0 -22
  23. package/src/lib/app-dropdown-menu/app-dropdown-menu.component.scss +0 -39
  24. package/src/lib/app-dropdown-menu/app-dropdown-menu.component.spec.ts +0 -21
  25. package/src/lib/app-dropdown-menu/app-dropdown-menu.component.ts +0 -43
  26. package/src/lib/app-dropdown-menu/app-dropdown-menu.ts +0 -17
  27. package/src/lib/app-dropdown-menu/index.ts +0 -2
  28. package/src/lib/app-dropdown-menu/menu-popup.pipe.ts +0 -18
  29. package/src/lib/app-header/app-header.component.html +0 -26
  30. package/src/lib/app-header/app-header.component.scss +0 -0
  31. package/src/lib/app-header/app-header.component.ts +0 -43
  32. package/src/lib/app-side-menu/app-side-menu.component.html +0 -20
  33. package/src/lib/app-side-menu/app-side-menu.component.ts +0 -28
  34. package/src/lib/app-side-menu/routes-names.ts +0 -28
  35. package/src/lib/app-side-menu/side-menu-items.ts +0 -45
  36. package/src/lib/app-side-menu/side-menu.ts +0 -12
  37. package/src/lib/app-tabs/app-tab.interface.ts +0 -27
  38. package/src/lib/app-tabs/app-tabs.component.html +0 -37
  39. package/src/lib/app-tabs/app-tabs.component.scss +0 -103
  40. package/src/lib/app-tabs/app-tabs.component.spec.ts +0 -21
  41. package/src/lib/app-tabs/app-tabs.component.ts +0 -67
  42. package/src/lib/app-tabs/index.ts +0 -2
  43. package/src/lib/bottom-sheet/bottom-sheet.component.html +0 -18
  44. package/src/lib/bottom-sheet/bottom-sheet.component.scss +0 -31
  45. package/src/lib/bottom-sheet/bottom-sheet.component.ts +0 -26
  46. package/src/lib/confirmation-dialog/confirmation-dialog.component.html +0 -37
  47. package/src/lib/confirmation-dialog/confirmation-dialog.component.scss +0 -0
  48. package/src/lib/confirmation-dialog/confirmation-dialog.component.spec.ts +0 -22
  49. package/src/lib/confirmation-dialog/confirmation-dialog.component.ts +0 -64
  50. package/src/lib/confirmation-dialog/confirmation-dialog.interface.ts +0 -13
  51. package/src/lib/confirmation-dialog/confirmation-dialog.service.ts +0 -34
  52. package/src/lib/dual-calender/date-picker-switcher/date-picker-switcher.component.html +0 -27
  53. package/src/lib/dual-calender/date-picker-switcher/date-picker-switcher.component.scss +0 -22
  54. package/src/lib/dual-calender/date-picker-switcher/date-picker-switcher.component.ts +0 -64
  55. package/src/lib/dual-calender/dual-calendar.component.html +0 -31
  56. package/src/lib/dual-calender/dual-calendar.component.scss +0 -229
  57. package/src/lib/dual-calender/dual-calendar.component.ts +0 -107
  58. package/src/lib/dual-calender/gregorian-calendar/gregorian-calendar.component.html +0 -10
  59. package/src/lib/dual-calender/gregorian-calendar/gregorian-calendar.component.scss +0 -0
  60. package/src/lib/dual-calender/gregorian-calendar/gregorian-calendar.component.spec.ts +0 -21
  61. package/src/lib/dual-calender/gregorian-calendar/gregorian-calendar.component.ts +0 -59
  62. package/src/lib/dual-calender/hijri-calendar/hijri-calendar.component.html +0 -10
  63. package/src/lib/dual-calender/hijri-calendar/hijri-calendar.component.scss +0 -0
  64. package/src/lib/dual-calender/hijri-calendar/hijri-calendar.component.spec.ts +0 -21
  65. package/src/lib/dual-calender/hijri-calendar/hijri-calendar.component.ts +0 -59
  66. package/src/lib/dual-calender/services/gregorian-i18n.service.ts +0 -123
  67. package/src/lib/dual-calender/services/islamic-i18n.service.ts +0 -119
  68. package/src/lib/dual-calender/utils/date-i18n.utils.ts +0 -58
  69. package/src/lib/dynamic-form/dynamic-form.component.html +0 -86
  70. package/src/lib/dynamic-form/dynamic-form.component.scss +0 -0
  71. package/src/lib/dynamic-form/dynamic-form.component.spec.ts +0 -21
  72. package/src/lib/dynamic-form/dynamic-form.component.ts +0 -58
  73. package/src/lib/dynamic-form/dynamic-form.interface.ts +0 -94
  74. package/src/lib/dynamic-side-bar-v2/dynamic-sidebar.component.html +0 -32
  75. package/src/lib/dynamic-side-bar-v2/dynamic-sidebar.component.scss +0 -3
  76. package/src/lib/dynamic-side-bar-v2/dynamic-sidebar.component.ts +0 -82
  77. package/src/lib/dynamic-side-bar-v2/dynamic-sidebar.config.ts +0 -31
  78. package/src/lib/dynamic-side-bar-v2/dynamic-sidebar.service.ts +0 -41
  79. package/src/lib/form-components/@utils/form-utils.ts +0 -12
  80. package/src/lib/form-components/@utils/validations/error-keys.enum.ts +0 -24
  81. package/src/lib/form-components/@utils/validations/form-validation.service.ts +0 -68
  82. package/src/lib/form-components/@utils/validations/index.ts +0 -3
  83. package/src/lib/form-components/@utils/validations/validation-message.pipe.ts +0 -24
  84. package/src/lib/form-components/components/auto-complete/auto-complete.component.html +0 -35
  85. package/src/lib/form-components/components/auto-complete/auto-complete.component.scss +0 -7
  86. package/src/lib/form-components/components/auto-complete/auto-complete.component.spec.ts +0 -21
  87. package/src/lib/form-components/components/auto-complete/auto-complete.component.ts +0 -57
  88. package/src/lib/form-components/components/base-input.component.ts +0 -35
  89. package/src/lib/form-components/components/date-picker/date-picker.component.html +0 -41
  90. package/src/lib/form-components/components/date-picker/date-picker.component.scss +0 -16
  91. package/src/lib/form-components/components/date-picker/date-picker.component.spec.ts +0 -21
  92. package/src/lib/form-components/components/date-picker/date-picker.component.ts +0 -54
  93. package/src/lib/form-components/components/input/input.component.html +0 -63
  94. package/src/lib/form-components/components/input/input.component.scss +0 -41
  95. package/src/lib/form-components/components/input/input.component.spec.ts +0 -21
  96. package/src/lib/form-components/components/input/input.component.ts +0 -45
  97. package/src/lib/form-components/components/select/select.component.html +0 -111
  98. package/src/lib/form-components/components/select/select.component.scss +0 -43
  99. package/src/lib/form-components/components/select/select.component.spec.ts +0 -21
  100. package/src/lib/form-components/components/select/select.component.ts +0 -56
  101. package/src/lib/form-components/components/select-button/select-button.component.html +0 -21
  102. package/src/lib/form-components/components/select-button/select-button.component.scss +0 -0
  103. package/src/lib/form-components/components/select-button/select-button.component.spec.ts +0 -21
  104. package/src/lib/form-components/components/select-button/select-button.component.ts +0 -22
  105. package/src/lib/form-components/components/switcher/switch.component.html +0 -5
  106. package/src/lib/form-components/components/switcher/switch.component.scss +0 -0
  107. package/src/lib/form-components/components/switcher/switch.component.spec.ts +0 -21
  108. package/src/lib/form-components/components/switcher/switch.component.ts +0 -25
  109. package/src/lib/form-components/index.ts +0 -9
  110. package/src/lib/form-components/interfaces/index.ts +0 -1
  111. package/src/lib/form-components/interfaces/label-value.ts +0 -4
  112. package/src/lib/ico-moon-icon/ico-moon-icon.component.ts +0 -23
  113. package/src/lib/read-more/read-more.component.html +0 -17
  114. package/src/lib/read-more/read-more.component.scss +0 -0
  115. package/src/lib/read-more/read-more.component.spec.ts +0 -21
  116. package/src/lib/read-more/read-more.component.ts +0 -21
  117. package/src/lib/side-bar/side-bar.component.html +0 -24
  118. package/src/lib/side-bar/side-bar.component.scss +0 -22
  119. package/src/lib/side-bar/side-bar.component.spec.ts +0 -21
  120. package/src/lib/side-bar/side-bar.component.ts +0 -33
  121. package/src/lib/side-bar-dynamic/data-injector.pipe.ts +0 -15
  122. package/src/lib/side-bar-dynamic/dynamic-sidebar.service.ts +0 -116
  123. package/src/lib/side-bar-dynamic/side-bar-dynamic.component.html +0 -42
  124. package/src/lib/side-bar-dynamic/side-bar-dynamic.component.scss +0 -5
  125. package/src/lib/side-bar-dynamic/side-bar-dynamic.component.spec.ts +0 -21
  126. package/src/lib/side-bar-dynamic/side-bar-dynamic.component.ts +0 -37
  127. package/src/lib/side-bar-dynamic/side-bar-utils.ts +0 -30
  128. package/src/lib/side-bar-dynamic/sidebar-config.ts +0 -48
  129. package/src/lib/user-autocomplete-card/user-autocomplete-card.component.html +0 -20
  130. package/src/lib/user-autocomplete-card/user-autocomplete-card.component.scss +0 -0
  131. package/src/lib/user-autocomplete-card/user-autocomplete-card.component.spec.ts +0 -21
  132. package/src/lib/user-autocomplete-card/user-autocomplete-card.component.ts +0 -21
  133. package/src/lib/user-info/user-info.component.html +0 -10
  134. package/src/lib/user-info/user-info.component.ts +0 -11
  135. package/src/public-api.ts +0 -26
  136. package/tsconfig.lib.json +0 -18
  137. package/tsconfig.lib.prod.json +0 -11
  138. package/tsconfig.spec.json +0 -14
@@ -1,17 +0,0 @@
1
- import {Params} from "@angular/router";
2
- import {AppButtonIconPos} from "../app-button";
3
-
4
- export interface DropdownMenuItem {
5
- title: string;
6
- routerLink?: string;
7
- queryParams?: Params;
8
- callback?: () => void;
9
- icon?: string;
10
- show?: boolean;
11
- // TODO: add type
12
- permissionKey?: string;
13
- permissionAction?: string;
14
- iconPosition?: AppButtonIconPos;
15
- textColor?: DropdownTextColor;
16
- }
17
- export type DropdownTextColor = 'white' | 'purple' | 'green';
@@ -1,2 +0,0 @@
1
- export * from './app-dropdown-menu';
2
- export * from './app-dropdown-menu.component';
@@ -1,18 +0,0 @@
1
- import { Pipe, PipeTransform } from '@angular/core';
2
- import {DropdownTextColor} from "./app-dropdown-menu";
3
-
4
- @Pipe({
5
- name: 'popupTextColorClass',
6
- standalone: true,
7
- pure: true
8
- })
9
- export class MenuPopupTextColorPipe implements PipeTransform {
10
- transform(color?: DropdownTextColor): string {
11
- switch (color) {
12
- case 'white': return 'text-white';
13
- case 'purple': return 'text-purple-500';
14
- case 'green': return 'text-green-500';
15
- default: return 'text-white';
16
- }
17
- }
18
- }
@@ -1,26 +0,0 @@
1
- <div class="px-10 flex justify-between items-center bg-white shadow-md py-3 h-16">
2
- <div class="d-flex md:hidden w-fit">
3
- <!-- Burger Icon for Mobile -->
4
- <app-button icon="font-icon-burger-icon text-[25px]" size="large" variant="text"
5
- (clickEmitter)="toggleMenu.emit()"/>
6
- </div>
7
- <div class="d-flex items-center justify-content-between gap-1">
8
- <app-button
9
- *hasPermissions="[PermissionsActions.CREATE];key: UserPermissionsEnum.BOD"
10
- iconPos="right" icon="font-icon-plus" (clickEmitter)="createButtonClicked.emit()"
11
- [title]="'actions.create' | translate"/>
12
- </div>
13
-
14
- <div class="flex items-center gap-1">
15
- @if (userInfo) {
16
- <div class="flex flex-col items-end justify-center">
17
- <p class="text-sm">{{ userInfo.userName }}</p>
18
- <p class="text-gray-500 mb-0 text-[10px]">{{ userInfo.email }}</p>
19
- </div>
20
-
21
- <img src="assets/images/user-placeholder.jpg" class="w-9 h-9 object-cover rounded-full" alt=""/>
22
- }
23
- <p-menu #menu [model]="items" [popup]="true"></p-menu>
24
- <button (click)="menu.toggle($event)" class="mb-2"><i class="font-icon-Vector text-[6px]"></i></button>
25
- </div>
26
- </div>
File without changes
@@ -1,43 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
2
- import { RouterModule } from '@angular/router';
3
- import { TranslatePipe } from '@ngx-translate/core';
4
- import { MenuItem } from 'primeng/api';
5
- import { Menu } from 'primeng/menu';
6
- import { AppButtonComponent } from '../app-button';
7
-
8
- @Component({
9
- selector: 'app-header',
10
- templateUrl: './app-header.component.html',
11
- styleUrl: './app-header.component.scss',
12
- standalone: true,
13
- imports: [RouterModule, AppButtonComponent, Menu, TranslatePipe],
14
- encapsulation: ViewEncapsulation.None,
15
- })
16
- export class AppHeaderComponent {
17
- @Output() createButtonClicked = new EventEmitter();
18
- @Output() toggleMenu = new EventEmitter<boolean>();
19
- @Input() userInfo: any;
20
- items: MenuItem[] | undefined = [
21
- {
22
- items: [
23
- {
24
- label: 'خــــروج',
25
- command: () => this.logout(),
26
- },
27
- ],
28
- },
29
- ];
30
- // UserPermissionsEnum = UserPermissionsEnum;
31
- // PermissionsActions = PermissionsActions;
32
-
33
- logout(): void {
34
- // this.authService
35
- // .logoutFromSSO()
36
- // .pipe(
37
- // finalize(() => {
38
- // this.authService.clearAuth();
39
- // })
40
- // )
41
- // .subscribe();
42
- }
43
- }
@@ -1,20 +0,0 @@
1
- <nav
2
- [ngClass]="{ 'max-w-0 md:max-w-[500px]': !isOpen, 'max-w-[500px]': isOpen }"
3
- class="md:flex h-100 bg-primary flex text-white flex-col py-2 text-center gap-y-10 transition-all w-24 hover:md:w-48 duration-500">
4
- <a [routerLink]="'/'"><i class="font-icon-STC-Logo text-[20px] pt-4 block px-4"></i></a>
5
- <ul class="flex flex-col flex-grow">
6
- @for (item of filteredMenu; track $index) {
7
- <li>
8
- <a
9
- [routerLinkActive]="'bg-primary_dark border-secondary'"
10
- [routerLink]="item.link"
11
- class="flex flex-col py-3 px-4 border-r-2 border-primary transition-all hover:bg-primary_dark hover:border-secondary">
12
- <i [class]="item.icon + ' text-[17px] mb-1'"></i>
13
- <span class="text-[10px] truncate">{{ item.label }}</span>
14
- </a>
15
- </li>
16
- }
17
- </ul>
18
-
19
- <a href="#"><i class="font-icon-setting text-[20px] pb-4 block px-4"></i></a>
20
- </nav>
@@ -1,28 +0,0 @@
1
- import { Component, inject, Input, OnInit, ViewEncapsulation } from "@angular/core";
2
- import { RouterModule } from "@angular/router";
3
- import { SideMenuItem } from "./side-menu";
4
- import { BASE_SIDE_MENU_ITEMS } from "./side-menu-items";
5
- import { NgClass } from "@angular/common";
6
- @Component({
7
- selector: "app-side-menu",
8
- standalone: true,
9
- imports: [RouterModule, NgClass],
10
- templateUrl: "./app-side-menu.component.html",
11
- encapsulation: ViewEncapsulation.None
12
- })
13
- export class AppSideMenuComponent implements OnInit {
14
- @Input() isOpen!: boolean;
15
- menuItems: SideMenuItem[] = BASE_SIDE_MENU_ITEMS;
16
- //permissionsService = inject(PermissionsService);
17
- filteredMenu: SideMenuItem[];
18
-
19
- ngOnInit(): void {
20
- this.filteredMenu = this.menuItems.filter((item) => {
21
- if (!item.permissionKey) {
22
- return true;
23
- }
24
- // return this.permissionsService.checkKeyHasPermission(item.permissionKey as UserPermissionsEnum, PermissionsActions.VIEW);
25
- return;
26
- });
27
- }
28
- }
@@ -1,28 +0,0 @@
1
- import { RouteNameItem } from "./side-menu";
2
-
3
- export const ROUTES_NAME: RouteNameItem = {
4
- board: {
5
- name: '/board-page',
6
- },
7
- users: {
8
- name: '/users',
9
- },
10
- // reports: {
11
- // name: '/reports',
12
- // },
13
- meetings: {
14
- name: '/meeting-page',
15
- },
16
- // tasks: {
17
- // name: '/tasks',
18
- // },
19
- // imported: {
20
- // name: '/imported',
21
- // },
22
- // exported: {
23
- // name: '/exported',
24
- // },
25
- // board: {
26
- // name: '/board',
27
- // },
28
- };
@@ -1,45 +0,0 @@
1
- import { ROUTES_NAME } from './routes-names';
2
- import { SideMenuItem } from './side-menu';
3
-
4
- export const BASE_SIDE_MENU_ITEMS: SideMenuItem[] = [
5
- {
6
- label: 'الإجتماعات',
7
- icon: 'font-icon-menu-board',
8
- link: ROUTES_NAME['meetings'].name
9
- },
10
- {
11
- label: 'اللجان و المجالس',
12
- icon: 'font-icon-people',
13
- link: ROUTES_NAME['board'].name
14
- },
15
- // {
16
- // label: 'المستخدمين',
17
- // icon: 'font-icon-profile-2user',
18
- // link: ROUTES_NAME['users'].name,
19
- // },
20
- // {
21
- // label: 'الإجتماعات',
22
- // icon: 'font-icon-menu-board',
23
- // link: ROUTES_NAME['meetings'].name,
24
- // },
25
- // {
26
- // label: 'مهامي',
27
- // icon: 'font-icon-task-square',
28
- // link: ROUTES_NAME['tasks'].name,
29
- // },
30
- // {
31
- // label: 'الوارد',
32
- // icon: 'font-icon-directbox-receive',
33
- // link: ROUTES_NAME['imported'].name,
34
- // },
35
- // {
36
- // label: 'الصادر',
37
- // icon: 'font-icon-directbox-send',
38
- // link: ROUTES_NAME['exported'].name,
39
- // },
40
- // {
41
- // label: 'التقارير',
42
- // icon: 'font-icon-status-up',
43
- // link: ROUTES_NAME['reports'].name,
44
- // },
45
- ];
@@ -1,12 +0,0 @@
1
- export interface SideMenuItem {
2
- label: string;
3
- icon: string;
4
- link: string;
5
- permissionKey?: string;
6
- }
7
-
8
- export interface RouteNameItem {
9
- [key: string]: {
10
- name: string;
11
- };
12
- }
@@ -1,27 +0,0 @@
1
- import { TemplateRef } from "@angular/core";
2
-
3
- interface Tab {
4
- title: string;
5
- iconName?: string;
6
- iconPathCount?: number;
7
- disabled?: boolean;
8
- count?: number;
9
- permissionKey?: string;
10
- }
11
-
12
- export interface RoutedTab extends Tab {
13
- link: string;
14
- }
15
- export interface TemplateTab<T = unknown> extends Tab {
16
- contentTemplate: TemplateRef<unknown>;
17
- queryParamValue?: T;
18
- }
19
-
20
-
21
- export type AppTabs = ({
22
- isRouted: true;
23
- items: RoutedTab[];
24
- } | {
25
- isRouted: false;
26
- items: TemplateTab[];
27
- })
@@ -1,37 +0,0 @@
1
- @if (tabs && tabs.items.length) {
2
- <div [class]="tabsStyle + (responsive ? ' full-width' : '') + ' tabs-container'">
3
- <p-tabs [value]="selectedTabIndex() || activeTabIndex" scrollable>
4
- <p-tablist>
5
-
6
- @for (tab of tabs.items; let i = $index; track i) {
7
- <p-tab [value]="i" [routerLink]="tabs.isRouted ? $any(tab).link : null" [disabled]="tab.disabled"
8
- (click)="onTabChange(i)">
9
- @if (tab.iconName) {
10
- <app-ico-moon-card [iconClass]="'text-[17px]'" [iconName]="tab.iconName"
11
- [iconPathCount]="tab.iconPathCount || 0" />
12
- }
13
- <span>{{ tab.title | translate }}
14
- @if (tab.count || tab.count === 0) {
15
- <p-badge [value]="getTabCount(tab.count)" severity="secondary" />
16
- }
17
- </span>
18
- </p-tab>
19
- }
20
-
21
- </p-tablist>
22
-
23
- <p-tabpanels>
24
- @if (tabs.isRouted) {
25
- <router-outlet></router-outlet>
26
- } @else {
27
- @for (tab of tabs.items; let i = $index; track i) {
28
- <p-tabpanel [value]="i">
29
- <ng-container [ngTemplateOutlet]="tab.contentTemplate"></ng-container>
30
- </p-tabpanel>
31
- }
32
- }
33
-
34
- </p-tabpanels>
35
- </p-tabs>
36
- </div>
37
- }
@@ -1,103 +0,0 @@
1
- .tabs-container {
2
- &.full-width {
3
- .p-tabs .p-tablist-tab-list .p-tab {
4
- @apply flex-grow flex justify-center max-w-[50%];
5
- }
6
- }
7
-
8
- .p-tabs {
9
- .p-tablist-tab-list {
10
- @apply relative;
11
-
12
- &:after {
13
- @apply content-[''] w-full h-[3px] bg-purple-800/5 absolute bottom-0 right-0 z-[1];
14
- }
15
-
16
- .p-tab {
17
- @apply text-sm text-gray-400 font-normal text-[16px] border-b-[4px] border-transparent z-[2];
18
-
19
- &:not(.p-tab-active) {
20
- app-ico-moon-card {
21
- @apply grayscale;
22
- }
23
-
24
- }
25
- }
26
- }
27
-
28
- .p-tablist-active-bar {
29
- @apply hidden;
30
- }
31
-
32
- .p-tabpanels.p-component {
33
- @apply mt-5 rounded-lg;
34
- }
35
- }
36
-
37
- &.basic {
38
- .p-tabs {
39
- .p-tablist-tab-list {
40
- @apply bg-transparent;
41
-
42
- .p-tab {
43
- &.p-tab-active {
44
- @apply text-primary border-primary;
45
- }
46
- }
47
- }
48
- }
49
- }
50
-
51
- &.primary_light {
52
- .p-tabs {
53
- .p-tablist-tab-list {
54
- .p-tab {
55
- @apply rounded-t-lg text-[14px];
56
-
57
- &.p-tab-active {
58
- @apply bg-purple-800/5 font-semibold text-primary border-primary;
59
- }
60
- }
61
- }
62
- }
63
- }
64
-
65
- &.primary {
66
- .p-tabs {
67
- .p-tablist-tab-list {
68
- &:after {
69
- @apply bg-purple-800/5;
70
- }
71
-
72
- .p-tab {
73
- @apply rounded-t-lg text-[14px];
74
-
75
- &.p-tab-active {
76
- @apply bg-primary font-semibold text-white border-secondary;
77
- }
78
- }
79
- }
80
- }
81
- }
82
- }
83
-
84
- [dir='rtl'] {
85
- .p-tabs .p-tablist{
86
- .p-iconwrapper {
87
- @apply rotate-180deg;
88
- }
89
-
90
- .p-tablist-next-button {
91
- @apply right-auto left-0;
92
- }
93
-
94
- .p-tablist-prev-button {
95
- @apply right-0 left-auto;
96
- }
97
- }
98
- }
99
-
100
- // TODO : CHECK
101
- // .p-tabpanels.p-component {
102
- // @apply mt-5 rounded-[1.5rem];
103
- // }
@@ -1,21 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
- import { AppTabsComponent } from './app-tabs.component';
3
-
4
- describe('AppTabsComponent', () => {
5
- let component: AppTabsComponent;
6
- let fixture: ComponentFixture<AppTabsComponent>;
7
-
8
- beforeEach(async () => {
9
- await TestBed.configureTestingModule({
10
- imports: [AppTabsComponent],
11
- }).compileComponents();
12
-
13
- fixture = TestBed.createComponent(AppTabsComponent);
14
- component = fixture.componentInstance;
15
- fixture.detectChanges();
16
- });
17
-
18
- it('should create', () => {
19
- expect(component).toBeTruthy();
20
- });
21
- });
@@ -1,67 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, inject, Input, model, OnInit, ViewEncapsulation } from '@angular/core';
3
- import { TabsModule } from 'primeng/tabs';
4
- import { AppTabs } from './app-tab.interface';
5
- import { IcoMoonIconComponent } from '../ico-moon-icon/ico-moon-icon.component';
6
- import { TranslateModule } from '@ngx-translate/core';
7
- import { ActivatedRoute, NavigationEnd, Router, RouterLink, RouterOutlet } from '@angular/router';
8
- import { filter } from 'rxjs';
9
- import { BadgeModule } from 'primeng/badge';
10
-
11
- @Component({
12
- selector: 'app-tabs',
13
- standalone: true,
14
- encapsulation: ViewEncapsulation.None,
15
- imports: [
16
- CommonModule,
17
- TabsModule,
18
- RouterLink,
19
- RouterOutlet,
20
- IcoMoonIconComponent,
21
- TranslateModule,
22
- BadgeModule,
23
- ],
24
- templateUrl: './app-tabs.component.html',
25
- styleUrl: './app-tabs.component.scss',
26
- })
27
- export class AppTabsComponent implements OnInit {
28
- @Input() tabs: AppTabs;
29
- @Input() tabsStyle: 'basic' | 'primary_light' | 'primary' = 'basic';
30
- @Input() responsive = false;
31
- @Input() twoDigitCount: boolean;
32
- selectedTabIndex = model<number>(0);
33
- activeTabIndex = 0;
34
- private router = inject(Router);
35
- private route = inject(ActivatedRoute);
36
-
37
- ngOnInit(): void {
38
- this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {
39
- this.updateActiveTab();
40
- });
41
- // to be refactor
42
- this.updateActiveTab();
43
- }
44
-
45
- // Updates the active tab index based on the current route
46
- private updateActiveTab(): void {
47
- if (!this.tabs.isRouted) return;
48
- const currentUrl = this.router.url;
49
- const matchingTabIndex = this.tabs.items.findIndex((tab) => currentUrl.includes(tab.link));
50
- this.activeTabIndex = matchingTabIndex !== -1 ? matchingTabIndex : 0;
51
- }
52
-
53
- onTabChange(index: number): void {
54
- this.selectedTabIndex.set(index);
55
-
56
- if (!this.tabs.isRouted) return;
57
- const selectedTab = this.tabs.items[index];
58
- if (selectedTab && !selectedTab.disabled) {
59
- this.router.navigate([selectedTab.link], { relativeTo: this.route });
60
- }
61
- }
62
-
63
- getTabCount(count: number): string {
64
- if (!count) return '0';
65
- return this.twoDigitCount && count > 99 ? '99+' : count.toString();
66
- }
67
- }
@@ -1,2 +0,0 @@
1
- export * from './app-tab.interface';
2
- export * from './app-tabs.component';
@@ -1,18 +0,0 @@
1
- <p-drawer
2
- (onHide)="hideBottomSheet()"
3
- (onShow)="onShow.emit($event)"
4
- [(visible)]="show"
5
- [closable]="false"
6
- [ngClass]="{ show: show }"
7
- [position]="'bottom'"
8
- appendTo="body"
9
- >
10
- <ng-template pTemplate="header">
11
- <div class="band"></div>
12
- </ng-template>
13
- @if (contentTemplate) {
14
- <ng-template pTemplate="content">
15
- <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
16
- </ng-template>
17
- }
18
- </p-drawer>
@@ -1,31 +0,0 @@
1
- .sidebar {
2
- &.show {
3
- @apply min-w-[550px];
4
- }
5
- }
6
-
7
- .band{
8
- background-color: #DFE0E6;
9
- width: 40px;
10
- height: 4px;
11
- border-radius: 24px;
12
- display: block;
13
- }
14
- .p-drawer-header , .p-drawer-footer{
15
- background-color: var(--gray-100);
16
- }
17
-
18
- .p-drawer-header{
19
- --p-drawer-header-padding: 0.75rem var(--p-overlay-modal-padding);
20
- font-weight: 500;
21
- justify-content: center;
22
- color: #090D0F;
23
- font-size: 20px;
24
- flex-direction: column;
25
-
26
- }
27
-
28
- .p-drawer-content{
29
- padding: 0px !important;
30
- margin: 0px !important;
31
- }
@@ -1,26 +0,0 @@
1
- import { NgClass, NgTemplateOutlet } from "@angular/common";
2
- import { Component, EventEmitter, Input, Output, TemplateRef, ViewEncapsulation } from "@angular/core";
3
- import { PrimeTemplate } from "primeng/api";
4
- import { Drawer } from "primeng/drawer";
5
- import { TooltipModule } from "primeng/tooltip";
6
-
7
- @Component({
8
- selector: "app-bottom-sheet",
9
- standalone: true,
10
- imports: [PrimeTemplate, Drawer, NgClass, NgTemplateOutlet, TooltipModule],
11
- templateUrl: "./bottom-sheet.component.html",
12
- styleUrl: "./bottom-sheet.component.scss",
13
- encapsulation: ViewEncapsulation.None
14
- })
15
- export class BottomSheetComponent {
16
- @Input() show = false;
17
- @Input() contentTemplate!: TemplateRef<unknown>;
18
-
19
- @Output() onHide = new EventEmitter<boolean>();
20
- @Output() onShow = new EventEmitter<boolean>();
21
-
22
- hideBottomSheet() {
23
- this.show = false;
24
- this.onHide.emit(false);
25
- }
26
- }
@@ -1,37 +0,0 @@
1
- @if (dynamicDialogConfig.data) {
2
- <div class="confirmation-dialog">
3
- <div class="dialog-wrapper">
4
- @if (dynamicDialogConfig.data) {
5
- <div class="confirmation-dialog__content my-4">
6
- @if (dynamicDialogConfig.data.dialogIcon) {
7
- <em [class]="dynamicDialogConfig.data.dialogIcon"></em>
8
- }
9
- <p class="confirmation-dialog__message text-xl mb-2">
10
- {{ dynamicDialogConfig.data.message }}
11
- </p>
12
- @if (dynamicDialogConfig.data.hint) {
13
- <p class="confirmation-dialog__hint font-normal text-base">
14
- {{ dynamicDialogConfig.data.hint }}
15
- </p>
16
- }
17
- @if (dynamicDialogConfig.data.inputForm) {
18
- <app-dynamic-form [dynamicFormData]="dialogFormData"></app-dynamic-form>
19
- }
20
- </div>
21
- }
22
- <div class="confirmation-dialog__actions flex gap-2 mt-4">
23
- <app-button [title]="dynamicDialogConfig.data?.confirmLabel || ('actions.confirm' | translate)"
24
- [disabled]="!!(dialogFormData && dialogFormData.formGroup?.invalid)" [severity]="'primary'"
25
- [id]="dynamicDialogConfig.data.confirmBtnId" [icon]="dynamicDialogConfig.data.confirmBtnIcon || ''"
26
- [label]="dynamicDialogConfig.data.confirmBtnLabel"
27
- [iconPos]="dynamicDialogConfig.data.confirmBtnPosition || 'left'" [styleClass]="'confirmation-btn'"
28
- (click)="submit()" />
29
- <app-button [title]="dynamicDialogConfig.data?.closeLabel || ('actions.cancel' | translate)"
30
- [severity]="'primary'" variant="outlined" [label]="dynamicDialogConfig.data.cancelBtnLabel"
31
- [id]="dynamicDialogConfig.data.cancelBtnId" [styleClass]="'cancel-btn confirmation-btn cancel-btn'"
32
- (click)="close()" />
33
- </div>
34
- </div>
35
-
36
- </div>
37
- }
@@ -1,22 +0,0 @@
1
- import { ComponentFixture, TestBed } from "@angular/core/testing";
2
-
3
- import { ConfirmationDialogComponent } from "./confirmation-dialog.component";
4
-
5
- describe("SharedConfirmDialogComponent", () => {
6
- let component: ConfirmationDialogComponent;
7
- let fixture: ComponentFixture<ConfirmationDialogComponent>;
8
-
9
- beforeEach(async () => {
10
- await TestBed.configureTestingModule({
11
- imports: [ConfirmationDialogComponent]
12
- }).compileComponents();
13
-
14
- fixture = TestBed.createComponent(ConfirmationDialogComponent);
15
- component = fixture.componentInstance;
16
- fixture.detectChanges();
17
- });
18
-
19
- it("should create", () => {
20
- expect(component).toBeTruthy();
21
- });
22
- });