spiderly 19.3.0 → 19.4.0-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/README.md +17 -17
  2. package/fesm2022/spiderly.mjs +122 -85
  3. package/fesm2022/spiderly.mjs.map +1 -1
  4. package/lib/components/layout/layout.component.d.ts +5 -1
  5. package/lib/components/spiderly-data-table/spiderly-data-table.component.d.ts +14 -1
  6. package/package.json +1 -1
  7. package/styles/components/info-card/info-card.component.scss +60 -60
  8. package/styles/components/layout/profile-avatar/profile-avatar.component.scss +8 -8
  9. package/styles/components/layout/topbar/topbar.component.scss +38 -38
  10. package/styles/components/spiderly-data-table/spiderly-data-table.component.scss +48 -48
  11. package/styles/components/spiderly-data-view/spiderly-data-view.component.scss +55 -55
  12. package/styles/components/spiderly-panels/panel-body/panel-body.component.scss +8 -8
  13. package/styles/components/spiderly-panels/panel-footer/panel-footer.component.scss +16 -16
  14. package/styles/components/spiderly-panels/spiderly-panel/spiderly-panel.component.scss +87 -87
  15. package/styles/controls/base-controls.scss +16 -16
  16. package/styles/controls/spiderly-checkbox/spiderly-checkbox.component.scss +22 -22
  17. package/styles/styles/layout/_content.scss +14 -14
  18. package/styles/styles/layout/_footer.scss +11 -11
  19. package/styles/styles/layout/_main.scss +34 -34
  20. package/styles/styles/layout/_menu.scss +137 -137
  21. package/styles/styles/layout/_mixins.scss +13 -13
  22. package/styles/styles/layout/_preloading.scss +47 -47
  23. package/styles/styles/layout/_responsive.scss +102 -102
  24. package/styles/styles/layout/_spiderly-controls.scss +14 -14
  25. package/styles/styles/layout/_topbar.scss +235 -235
  26. package/styles/styles/layout/_typography.scss +63 -63
  27. package/styles/styles/layout/_utils.scss +19 -19
  28. package/styles/styles/layout/_variables.scss +908 -908
  29. package/styles/styles/layout/layout.scss +11 -11
  30. package/styles/styles/shared.scss +483 -483
  31. package/styles/styles/styles.scss +2 -2
@@ -19,6 +19,10 @@ export declare class SpiderlyLayoutComponent implements OnDestroy {
19
19
  * for root top menu items. Defaults to `false`.
20
20
  */
21
21
  showHoverBgOnRootTopMenuItems: boolean;
22
+ /**
23
+ * default max-width for the main content area.
24
+ */
25
+ maxWidth: string;
22
26
  overlayMenuOpenSubscription: Subscription;
23
27
  menuOutsideClickListener: any;
24
28
  profileMenuOutsideClickListener: any;
@@ -45,5 +49,5 @@ export declare class SpiderlyLayoutComponent implements OnDestroy {
45
49
  ngOnDestroy(): void;
46
50
  onAfterNgDestroy: () => void;
47
51
  static ɵfac: i0.ɵɵFactoryDeclaration<SpiderlyLayoutComponent, never>;
48
- static ɵcmp: i0.ɵɵComponentDeclaration<SpiderlyLayoutComponent, "spiderly-layout", never, { "menu": { "alias": "menu"; "required": false; }; "isSideMenuLayout": { "alias": "isSideMenuLayout"; "required": false; }; "showHoverBgOnRootTopMenuItems": { "alias": "showHoverBgOnRootTopMenuItems"; "required": false; }; }, {}, never, ["[ACTIONS]"], true, never>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpiderlyLayoutComponent, "spiderly-layout", never, { "menu": { "alias": "menu"; "required": false; }; "isSideMenuLayout": { "alias": "isSideMenuLayout"; "required": false; }; "showHoverBgOnRootTopMenuItems": { "alias": "showHoverBgOnRootTopMenuItems"; "required": false; }; "maxWidth": { "alias": "maxWidth"; "required": false; }; }, {}, never, ["[ACTIONS]"], true, never>;
49
53
  }
@@ -65,6 +65,18 @@ export declare class SpiderlyDataTableComponent implements OnInit {
65
65
  additionalIndexes: any;
66
66
  onRowSelect: EventEmitter<RowClickEvent>;
67
67
  onRowUnselect: EventEmitter<RowClickEvent>;
68
+ /**
69
+ * if true, clicking a row will navigate to the details page.
70
+ * Set to false to disable row navigation.
71
+ * Default is false.
72
+ */
73
+ navigateOnRowClick: boolean;
74
+ /**
75
+ * Path to navigate to when clicking a row.
76
+ * If not provided, it will use the current route with the row ID.
77
+ * Example: 'details' will navigate to '/details/{rowId}'.
78
+ */
79
+ rowNavigationPath: string;
68
80
  constructor(router: Router, dialogService: DialogService, route: ActivatedRoute, messageService: SpiderlyMessageService, translocoService: TranslocoService, locale: string);
69
81
  ngOnInit(): void;
70
82
  lazyLoad(event: TableLazyLoadEvent): void;
@@ -77,6 +89,7 @@ export declare class SpiderlyDataTableComponent implements OnInit {
77
89
  getColMatchMode(filterType: string): any;
78
90
  isDropOrMulti(filterType: string): boolean;
79
91
  navigateToDetails(rowId: number): void;
92
+ onRowClick(row: any): void;
80
93
  deleteObject(rowId: number): void;
81
94
  reload(): void;
82
95
  showActions(): boolean;
@@ -97,7 +110,7 @@ export declare class SpiderlyDataTableComponent implements OnInit {
97
110
  rowUnselect(id: number): void;
98
111
  getFormArrayControlByIndex(formControlName: string, index: number): SpiderlyFormControl;
99
112
  static ɵfac: i0.ɵɵFactoryDeclaration<SpiderlyDataTableComponent, never>;
100
- static ɵcmp: i0.ɵɵComponentDeclaration<SpiderlyDataTableComponent, "spiderly-data-table", never, { "tableTitle": { "alias": "tableTitle"; "required": false; }; "tableIcon": { "alias": "tableIcon"; "required": false; }; "items": { "alias": "items"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "showPaginator": { "alias": "showPaginator"; "required": false; }; "showCardWrapper": { "alias": "showCardWrapper"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "idField": { "alias": "idField"; "required": false; }; "getPaginatedListObservableMethod": { "alias": "getPaginatedListObservableMethod"; "required": false; }; "exportListToExcelObservableMethod": { "alias": "exportListToExcelObservableMethod"; "required": false; }; "deleteItemFromTableObservableMethod": { "alias": "deleteItemFromTableObservableMethod"; "required": false; }; "newlySelectedItems": { "alias": "newlySelectedItems"; "required": false; }; "unselectedItems": { "alias": "unselectedItems"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "selectedLazyLoadObservableMethod": { "alias": "selectedLazyLoadObservableMethod"; "required": false; }; "additionalFilterIdLong": { "alias": "additionalFilterIdLong"; "required": false; }; "showAddButton": { "alias": "showAddButton"; "required": false; }; "showExportToExcelButton": { "alias": "showExportToExcelButton"; "required": false; }; "showReloadTableButton": { "alias": "showReloadTableButton"; "required": false; }; "getFormArrayItems": { "alias": "getFormArrayItems"; "required": false; }; "hasLazyLoad": { "alias": "hasLazyLoad"; "required": false; }; "getAlreadySelectedItemIds": { "alias": "getAlreadySelectedItemIds"; "required": false; }; "getAlreadySelectedItems": { "alias": "getAlreadySelectedItems"; "required": false; }; "getFormControl": { "alias": "getFormControl"; "required": false; }; "additionalIndexes": { "alias": "additionalIndexes"; "required": false; }; }, { "onTotalRecordsChange": "onTotalRecordsChange"; "onLazyLoad": "onLazyLoad"; "onIsAllSelectedChange": "onIsAllSelectedChange"; "onRowSelect": "onRowSelect"; "onRowUnselect": "onRowUnselect"; }, never, never, true, never>;
113
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpiderlyDataTableComponent, "spiderly-data-table", never, { "tableTitle": { "alias": "tableTitle"; "required": false; }; "tableIcon": { "alias": "tableIcon"; "required": false; }; "items": { "alias": "items"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "showPaginator": { "alias": "showPaginator"; "required": false; }; "showCardWrapper": { "alias": "showCardWrapper"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "idField": { "alias": "idField"; "required": false; }; "getPaginatedListObservableMethod": { "alias": "getPaginatedListObservableMethod"; "required": false; }; "exportListToExcelObservableMethod": { "alias": "exportListToExcelObservableMethod"; "required": false; }; "deleteItemFromTableObservableMethod": { "alias": "deleteItemFromTableObservableMethod"; "required": false; }; "newlySelectedItems": { "alias": "newlySelectedItems"; "required": false; }; "unselectedItems": { "alias": "unselectedItems"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "selectedLazyLoadObservableMethod": { "alias": "selectedLazyLoadObservableMethod"; "required": false; }; "additionalFilterIdLong": { "alias": "additionalFilterIdLong"; "required": false; }; "showAddButton": { "alias": "showAddButton"; "required": false; }; "showExportToExcelButton": { "alias": "showExportToExcelButton"; "required": false; }; "showReloadTableButton": { "alias": "showReloadTableButton"; "required": false; }; "getFormArrayItems": { "alias": "getFormArrayItems"; "required": false; }; "hasLazyLoad": { "alias": "hasLazyLoad"; "required": false; }; "getAlreadySelectedItemIds": { "alias": "getAlreadySelectedItemIds"; "required": false; }; "getAlreadySelectedItems": { "alias": "getAlreadySelectedItems"; "required": false; }; "getFormControl": { "alias": "getFormControl"; "required": false; }; "additionalIndexes": { "alias": "additionalIndexes"; "required": false; }; "navigateOnRowClick": { "alias": "navigateOnRowClick"; "required": false; }; "rowNavigationPath": { "alias": "rowNavigationPath"; "required": false; }; }, { "onTotalRecordsChange": "onTotalRecordsChange"; "onLazyLoad": "onLazyLoad"; "onIsAllSelectedChange": "onIsAllSelectedChange"; "onRowSelect": "onRowSelect"; "onRowUnselect": "onRowUnselect"; }, never, never, true, never>;
101
114
  }
102
115
  export declare class Action {
103
116
  name?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spiderly",
3
- "version": "19.3.0",
3
+ "version": "19.4.0-preview.0",
4
4
  "author": "Filip Trivan",
5
5
  "license": "MIT",
6
6
  "description": "Spiderly Angular Library to use in combination with Spiderly.",
@@ -1,61 +1,61 @@
1
- .info-card {
2
- background-color: var(--p-primary-100);
3
- position: relative;
4
- overflow: hidden;
5
-
6
- &__content {
7
- display: flex;
8
- align-items: center;
9
- gap: 21px;
10
- position: relative;
11
- z-index: 2;
12
- }
13
-
14
- &__icon {
15
- font-size: 21px;
16
- color: var(--p-primary-color);
17
- }
18
-
19
- &__header {
20
- display: flex;
21
- gap: 8px;
22
- color: var(--p-primary-color);
23
- font-weight: 600;
24
- text-align: left;
25
- font-size: 17.5px;
26
- }
27
-
28
- &__body {
29
- text-align: left;
30
- margin-top: 8px;
31
- }
32
-
33
- &__background-icon {
34
- text-align: center;
35
- transform: rotate(30deg);
36
- color: var(--p-primary-400);
37
- opacity: 0.2;
38
- position: absolute;
39
- overflow: hidden;
40
- right: -30px;
41
- top: -25px;
42
- z-index: 1;
43
-
44
- i {
45
- font-size: 270px;
46
- }
47
- }
48
- }
49
-
50
- ::ng-deep{
51
- html.dark .info-card {
52
- background-color: var(--p-primary-950);
53
-
54
- &__header {
55
- color: var(--p-primary-400);
56
- }
57
- &__icon {
58
- color: var(--p-primary-400);
59
- }
60
- }
1
+ .info-card {
2
+ background-color: var(--p-primary-100);
3
+ position: relative;
4
+ overflow: hidden;
5
+
6
+ &__content {
7
+ display: flex;
8
+ align-items: center;
9
+ gap: 21px;
10
+ position: relative;
11
+ z-index: 2;
12
+ }
13
+
14
+ &__icon {
15
+ font-size: 21px;
16
+ color: var(--p-primary-color);
17
+ }
18
+
19
+ &__header {
20
+ display: flex;
21
+ gap: 8px;
22
+ color: var(--p-primary-color);
23
+ font-weight: 600;
24
+ text-align: left;
25
+ font-size: 17.5px;
26
+ }
27
+
28
+ &__body {
29
+ text-align: left;
30
+ margin-top: 8px;
31
+ }
32
+
33
+ &__background-icon {
34
+ text-align: center;
35
+ transform: rotate(30deg);
36
+ color: var(--p-primary-400);
37
+ opacity: 0.2;
38
+ position: absolute;
39
+ overflow: hidden;
40
+ right: -30px;
41
+ top: -25px;
42
+ z-index: 1;
43
+
44
+ i {
45
+ font-size: 270px;
46
+ }
47
+ }
48
+ }
49
+
50
+ ::ng-deep{
51
+ html.dark .info-card {
52
+ background-color: var(--p-primary-950);
53
+
54
+ &__header {
55
+ color: var(--p-primary-400);
56
+ }
57
+ &__icon {
58
+ color: var(--p-primary-400);
59
+ }
60
+ }
61
61
  }
@@ -1,9 +1,9 @@
1
- .side-menu-profile-dialog {
2
- right: 26px;
3
- top: 60px;
4
- }
5
-
6
- .top-menu-profile-dialog {
7
- right: 0px;
8
- top: 40px;
1
+ .side-menu-profile-dialog {
2
+ right: 26px;
3
+ top: 60px;
4
+ }
5
+
6
+ .top-menu-profile-dialog {
7
+ right: 0px;
8
+ top: 40px;
9
9
  }
@@ -1,39 +1,39 @@
1
- .topbar-wrapper {
2
- background-color: var(--p-content-background);
3
- width: 100%;
4
- border-bottom: 1px solid var(--p-content-border-color);
5
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
6
- position: sticky;
7
- top: 0;
8
- left: 0;
9
- z-index: 1000;
10
- }
11
-
12
- .topbar {
13
- max-width: 1100px;
14
- margin: auto;
15
- }
16
-
17
- ::ng-deep{
18
- .show-hover-bg-on-root-items {
19
- .p-menubar-root-list > .p-menubar-item > .p-menubar-item-content {
20
- background-color: transparent !important;
21
- }
22
- }
23
- .p-menubar-item-link {
24
- background-color: transparent !important;
25
- padding: 10px !important;
26
- font-size: 15px !important;
27
- .pi {
28
- font-size: 15px;
29
- }
30
- }
31
- .p-menubar-button {
32
- width: 35px !important;
33
- height: 35px !important;
34
- .p-icon {
35
- width: 16px;
36
- height: 16px;
37
- }
38
- }
1
+ .topbar-wrapper {
2
+ background-color: var(--p-content-background);
3
+ width: 100%;
4
+ border-bottom: 1px solid var(--p-content-border-color);
5
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
6
+ position: sticky;
7
+ top: 0;
8
+ left: 0;
9
+ z-index: 1000;
10
+ }
11
+
12
+ .topbar {
13
+ max-width: 1100px;
14
+ margin: auto;
15
+ }
16
+
17
+ ::ng-deep{
18
+ .show-hover-bg-on-root-items {
19
+ .p-menubar-root-list > .p-menubar-item > .p-menubar-item-content {
20
+ background-color: transparent !important;
21
+ }
22
+ }
23
+ .p-menubar-item-link {
24
+ background-color: transparent !important;
25
+ padding: 10px !important;
26
+ font-size: 15px !important;
27
+ .pi {
28
+ font-size: 15px;
29
+ }
30
+ }
31
+ .p-menubar-button {
32
+ width: 35px !important;
33
+ height: 35px !important;
34
+ .p-icon {
35
+ width: 16px;
36
+ height: 16px;
37
+ }
38
+ }
39
39
  }
@@ -1,49 +1,49 @@
1
- .table-header {
2
- display: flex;
3
- justify-content: space-between;
4
- align-items: center;
5
- }
6
-
7
- @media (max-width: 640px) {
8
- .table-header {
9
- display: flex;
10
- flex-direction: column;
11
- align-items: start;
12
- gap: 14px;
13
- }
14
- }
15
-
16
- .spiderly-table {
17
- .p-paginator {
18
- padding: 1rem;
19
- }
20
- .p-paginator-left-content {
21
- @media (min-width: 1400px) {
22
- position: absolute;
23
- padding: 14px;
24
- left: 0;
25
- }
26
- }
27
- .p-paginator-right-content {
28
- @media (min-width: 1400px) {
29
- position: absolute;
30
- padding: 14px;
31
- right: 0;
32
- }
33
- }
34
- }
35
-
36
- :host {
37
- ::ng-deep {
38
- .p-datatable-thead{
39
- position: unset !important;
40
- }
41
- .p-datatable-header{
42
- border-radius: 6px 6px 0 0;
43
- }
44
- .p-datatable {
45
- border-radius: var(--p-content-border-radius);
46
- border: 1px solid var(--p-datatable-border-color);
47
- }
48
- }
1
+ .table-header {
2
+ display: flex;
3
+ justify-content: space-between;
4
+ align-items: center;
5
+ }
6
+
7
+ @media (max-width: 640px) {
8
+ .table-header {
9
+ display: flex;
10
+ flex-direction: column;
11
+ align-items: start;
12
+ gap: 14px;
13
+ }
14
+ }
15
+
16
+ .spiderly-table {
17
+ .p-paginator {
18
+ padding: 1rem;
19
+ }
20
+ .p-paginator-left-content {
21
+ @media (min-width: 1400px) {
22
+ position: absolute;
23
+ padding: 14px;
24
+ left: 0;
25
+ }
26
+ }
27
+ .p-paginator-right-content {
28
+ @media (min-width: 1400px) {
29
+ position: absolute;
30
+ padding: 14px;
31
+ right: 0;
32
+ }
33
+ }
34
+ }
35
+
36
+ :host {
37
+ ::ng-deep {
38
+ .p-datatable-thead{
39
+ position: unset !important;
40
+ }
41
+ .p-datatable-header{
42
+ border-radius: 6px 6px 0 0;
43
+ }
44
+ .p-datatable {
45
+ border-radius: var(--p-content-border-radius);
46
+ border: 1px solid var(--p-datatable-border-color);
47
+ }
48
+ }
49
49
  }
@@ -1,56 +1,56 @@
1
-
2
- ::ng-deep{
3
- .p-datatable-tbody {
4
- display: flex;
5
- flex-direction: column;
6
- gap: 18px;
7
- }
8
-
9
- .p-datatable-header {
10
- margin-bottom: 36px;
11
- border: 0 !important;
12
- padding: 0 !important;
13
- background-color: transparent !important;
14
- }
15
-
16
- .p-paginator {
17
- padding: 18px 9px 0px 9px !important;
18
- }
19
-
20
- .p-fluid {
21
- width: 100% !important;
22
- }
23
-
24
- .p-inputtext {
25
- width: 100% !important;
26
- }
27
-
28
- .p-inputnumber {
29
- width: 100% !important;
30
- }
31
-
32
- .p-datepicker {
33
- width: 100% !important;
34
- }
35
- }
36
-
37
-
38
- .data-view-grid {
39
- display: grid;
40
- gap: 18px;
41
- grid-template-columns: 1fr 1fr 1fr;
42
- margin-bottom: 18px;
43
- }
44
-
45
- @media (max-width: 1080px) {
46
- .data-view-grid {
47
- gap: 12px;
48
- grid-template-columns: 1fr 1fr;
49
- }
50
- }
51
-
52
- @media (max-width: 500px) {
53
- .data-view-grid {
54
- grid-template-columns: 1fr;
55
- }
1
+
2
+ ::ng-deep{
3
+ .p-datatable-tbody {
4
+ display: flex;
5
+ flex-direction: column;
6
+ gap: 18px;
7
+ }
8
+
9
+ .p-datatable-header {
10
+ margin-bottom: 36px;
11
+ border: 0 !important;
12
+ padding: 0 !important;
13
+ background-color: transparent !important;
14
+ }
15
+
16
+ .p-paginator {
17
+ padding: 18px 9px 0px 9px !important;
18
+ }
19
+
20
+ .p-fluid {
21
+ width: 100% !important;
22
+ }
23
+
24
+ .p-inputtext {
25
+ width: 100% !important;
26
+ }
27
+
28
+ .p-inputnumber {
29
+ width: 100% !important;
30
+ }
31
+
32
+ .p-datepicker {
33
+ width: 100% !important;
34
+ }
35
+ }
36
+
37
+
38
+ .data-view-grid {
39
+ display: grid;
40
+ gap: 18px;
41
+ grid-template-columns: 1fr 1fr 1fr;
42
+ margin-bottom: 18px;
43
+ }
44
+
45
+ @media (max-width: 1080px) {
46
+ .data-view-grid {
47
+ gap: 12px;
48
+ grid-template-columns: 1fr 1fr;
49
+ }
50
+ }
51
+
52
+ @media (max-width: 500px) {
53
+ .data-view-grid {
54
+ grid-template-columns: 1fr;
55
+ }
56
56
  }
@@ -1,9 +1,9 @@
1
- .non-grid-panel-bottom-padding{
2
- padding-bottom: 14px;
3
- }
4
-
5
- @media (max-width: 600px) {
6
- .non-grid-panel-bottom-padding{
7
- padding-bottom: 0px;
8
- }
1
+ .non-grid-panel-bottom-padding{
2
+ padding-bottom: 14px;
3
+ }
4
+
5
+ @media (max-width: 600px) {
6
+ .non-grid-panel-bottom-padding{
7
+ padding-bottom: 0px;
8
+ }
9
9
  }
@@ -1,17 +1,17 @@
1
- .spiderly-panel-footer{
2
- display: flex;
3
- align-items: center;
4
- justify-content: space-between;
5
- gap: 10px;
6
- border-top: 1px solid var(--p-content-border-color);
7
- border-bottom-right-radius: var(--p-content-border-radius);
8
- border-bottom-left-radius: var(--p-content-border-radius);
9
- padding: 18px;
10
- }
11
-
12
- .buttons-wrapper{
13
- gap: 0.5rem;
14
- display: flex;
15
- align-items: center;
16
- flex-wrap: wrap;
1
+ .spiderly-panel-footer{
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: space-between;
5
+ gap: 10px;
6
+ border-top: 1px solid var(--p-content-border-color);
7
+ border-bottom-right-radius: var(--p-content-border-radius);
8
+ border-bottom-left-radius: var(--p-content-border-radius);
9
+ padding: 18px;
10
+ }
11
+
12
+ .buttons-wrapper{
13
+ gap: 0.5rem;
14
+ display: flex;
15
+ align-items: center;
16
+ flex-wrap: wrap;
17
17
  }