@ostack.tech/ui-kform 0.1.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 (144) hide show
  1. package/README.md +3 -0
  2. package/dist/ostack-ui-kform.cjs +7534 -0
  3. package/dist/ostack-ui-kform.cjs.map +1 -0
  4. package/dist/ostack-ui-kform.css +858 -0
  5. package/dist/ostack-ui-kform.css.map +1 -0
  6. package/dist/ostack-ui-kform.js +7518 -0
  7. package/dist/ostack-ui-kform.js.map +1 -0
  8. package/dist/types/components/Annexes/Annex.d.ts +46 -0
  9. package/dist/types/components/Annexes/AnnexTab.d.ts +5 -0
  10. package/dist/types/components/Annexes/Annexes.d.ts +95 -0
  11. package/dist/types/components/Annexes/AnnexesContext.d.ts +87 -0
  12. package/dist/types/components/Annexes/AnnexesManager.d.ts +47 -0
  13. package/dist/types/components/Annexes/AnnexesMenu.d.ts +10 -0
  14. package/dist/types/components/Annexes/AnnexesTabList.d.ts +8 -0
  15. package/dist/types/components/Annexes/index.d.ts +3 -0
  16. package/dist/types/components/CheckboxControl/CheckboxControl.d.ts +48 -0
  17. package/dist/types/components/CheckboxControl/index.d.ts +1 -0
  18. package/dist/types/components/CheckboxGroupControl/CheckboxGroupControl.d.ts +63 -0
  19. package/dist/types/components/CheckboxGroupControl/index.d.ts +1 -0
  20. package/dist/types/components/ControlField/ControlField.d.ts +50 -0
  21. package/dist/types/components/ControlField/ControlFieldContext.d.ts +33 -0
  22. package/dist/types/components/ControlField/index.d.ts +2 -0
  23. package/dist/types/components/DateControl/DateControl.d.ts +45 -0
  24. package/dist/types/components/DateControl/index.d.ts +1 -0
  25. package/dist/types/components/DateRangeControl/DateRangeControl.d.ts +79 -0
  26. package/dist/types/components/DateRangeControl/index.d.ts +1 -0
  27. package/dist/types/components/FileControl/FileControl.d.ts +68 -0
  28. package/dist/types/components/FileControl/index.d.ts +1 -0
  29. package/dist/types/components/FormApp/FormApp.d.ts +210 -0
  30. package/dist/types/components/FormApp/FormAppContext.d.ts +181 -0
  31. package/dist/types/components/FormApp/FormAppIssueMessages.d.ts +45 -0
  32. package/dist/types/components/FormApp/FormAppStatus.d.ts +23 -0
  33. package/dist/types/components/FormApp/index.d.ts +4 -0
  34. package/dist/types/components/FormPages/FormPage.d.ts +86 -0
  35. package/dist/types/components/FormPages/FormPageHeader.d.ts +7 -0
  36. package/dist/types/components/FormPages/FormPageSidebarItem.d.ts +6 -0
  37. package/dist/types/components/FormPages/FormPages.d.ts +40 -0
  38. package/dist/types/components/FormPages/FormPagesContext.d.ts +67 -0
  39. package/dist/types/components/FormPages/FormPagesNavigation.d.ts +12 -0
  40. package/dist/types/components/FormPages/FormPagesSelect.d.ts +7 -0
  41. package/dist/types/components/FormPages/FormPagesSelectOption.d.ts +6 -0
  42. package/dist/types/components/FormPages/FormPagesSidebar.d.ts +6 -0
  43. package/dist/types/components/FormPages/index.d.ts +3 -0
  44. package/dist/types/components/FormStepper/FormStep.d.ts +8 -0
  45. package/dist/types/components/FormStepper/FormStepContent.d.ts +20 -0
  46. package/dist/types/components/FormStepper/FormStepList.d.ts +7 -0
  47. package/dist/types/components/FormStepper/FormStepper.d.ts +71 -0
  48. package/dist/types/components/FormStepper/FormStepperContext.d.ts +65 -0
  49. package/dist/types/components/FormStepper/index.d.ts +3 -0
  50. package/dist/types/components/IssueAlert/IssueAlert.d.ts +13 -0
  51. package/dist/types/components/IssueAlert/index.d.ts +1 -0
  52. package/dist/types/components/IssueMessage/IssueMessage.d.ts +14 -0
  53. package/dist/types/components/IssueMessage/index.d.ts +1 -0
  54. package/dist/types/components/IssueMessages/IssueMessages.d.ts +70 -0
  55. package/dist/types/components/IssueMessages/index.d.ts +1 -0
  56. package/dist/types/components/IssuesPanel/IssuesPanel.d.ts +106 -0
  57. package/dist/types/components/IssuesPanel/IssuesPanelControls.d.ts +19 -0
  58. package/dist/types/components/IssuesPanel/IssuesPanelMessagesCard.d.ts +13 -0
  59. package/dist/types/components/IssuesPanel/IssuesPanelSummaryCard.d.ts +9 -0
  60. package/dist/types/components/IssuesPanel/index.d.ts +1 -0
  61. package/dist/types/components/IssuesPopover/IssuesPopover.d.ts +15 -0
  62. package/dist/types/components/IssuesPopover/index.d.ts +1 -0
  63. package/dist/types/components/LoadAction/LoadAction.d.ts +22 -0
  64. package/dist/types/components/LoadAction/index.d.ts +1 -0
  65. package/dist/types/components/NumericControl/NumericControl.d.ts +45 -0
  66. package/dist/types/components/NumericControl/index.d.ts +1 -0
  67. package/dist/types/components/PathLink/PathLink.d.ts +16 -0
  68. package/dist/types/components/PathLink/index.d.ts +1 -0
  69. package/dist/types/components/RadioGroupControl/RadioGroupControl.d.ts +56 -0
  70. package/dist/types/components/RadioGroupControl/index.d.ts +1 -0
  71. package/dist/types/components/SaveAction/SaveAction.d.ts +51 -0
  72. package/dist/types/components/SaveAction/index.d.ts +1 -0
  73. package/dist/types/components/SelectControl/SelectControl.d.ts +48 -0
  74. package/dist/types/components/SelectControl/index.d.ts +1 -0
  75. package/dist/types/components/SelectMultipleControl/SelectMultipleControl.d.ts +55 -0
  76. package/dist/types/components/SelectMultipleControl/index.d.ts +1 -0
  77. package/dist/types/components/SubmitAction/SubmitAction.d.ts +94 -0
  78. package/dist/types/components/SubmitAction/index.d.ts +1 -0
  79. package/dist/types/components/TableControl/TableControl.d.ts +64 -0
  80. package/dist/types/components/TableControl/TableControlAddRowTrigger.d.ts +25 -0
  81. package/dist/types/components/TableControl/TableControlApi.d.ts +25 -0
  82. package/dist/types/components/TableControl/TableControlCell.d.ts +7 -0
  83. package/dist/types/components/TableControl/TableControlColumn.d.ts +58 -0
  84. package/dist/types/components/TableControl/TableControlContent.d.ts +7 -0
  85. package/dist/types/components/TableControl/TableControlContext.d.ts +26 -0
  86. package/dist/types/components/TableControl/TableControlPagination.d.ts +2 -0
  87. package/dist/types/components/TableControl/TableControlRemoveRowTrigger.d.ts +61 -0
  88. package/dist/types/components/TableControl/TableControlRow.d.ts +7 -0
  89. package/dist/types/components/TableControl/TableControlRowsPerPage.d.ts +2 -0
  90. package/dist/types/components/TableControl/index.d.ts +8 -0
  91. package/dist/types/components/TextControl/TextControl.d.ts +66 -0
  92. package/dist/types/components/TextControl/index.d.ts +1 -0
  93. package/dist/types/components/TopBar/TopBar.d.ts +6 -0
  94. package/dist/types/components/TopBar/TopBarActions.d.ts +7 -0
  95. package/dist/types/components/TopBar/index.d.ts +2 -0
  96. package/dist/types/components/ValidateAction/ValidateAction.d.ts +21 -0
  97. package/dist/types/components/ValidateAction/index.d.ts +1 -0
  98. package/dist/types/index.d.ts +36 -0
  99. package/dist/types/locale/LocalizationObject.d.ts +34 -0
  100. package/dist/types/locale/defaultLocale.d.ts +3 -0
  101. package/dist/types/locale/en-GB.d.ts +3 -0
  102. package/dist/types/locale/en-US.d.ts +3 -0
  103. package/dist/types/locale/en.d.ts +3 -0
  104. package/dist/types/locale/fr-FR.d.ts +3 -0
  105. package/dist/types/locale/index.d.ts +6 -0
  106. package/dist/types/locale/pt-PT.d.ts +3 -0
  107. package/dist/types/providers/LocalizationProvider/LocalizationContext.d.ts +6 -0
  108. package/dist/types/providers/LocalizationProvider/LocalizationProvider.d.ts +10 -0
  109. package/dist/types/providers/LocalizationProvider/index.d.ts +3 -0
  110. package/dist/types/providers/LocalizationProvider/useLocale.d.ts +3 -0
  111. package/dist/types/providers/PrefixSuffixProvider/PrefixSuffixContext.d.ts +5 -0
  112. package/dist/types/providers/PrefixSuffixProvider/PrefixSuffixProvider.d.ts +9 -0
  113. package/dist/types/providers/PrefixSuffixProvider/index.d.ts +3 -0
  114. package/dist/types/providers/PrefixSuffixProvider/usePrefix.d.ts +6 -0
  115. package/dist/types/utils/dateRestrictions.d.ts +6 -0
  116. package/dist/types/utils/displayStatusConversions.d.ts +6 -0
  117. package/dist/types/utils/mostSpecificPath.d.ts +13 -0
  118. package/dist/types/utils/options.d.ts +18 -0
  119. package/dist/types/utils/pathSpecificity.d.ts +18 -0
  120. package/dist/types/utils/selectionTransformations.d.ts +32 -0
  121. package/dist/types/utils/useControlAutofocus.d.ts +32 -0
  122. package/dist/types/utils/useControlIssues.d.ts +27 -0
  123. package/dist/types/utils/useEqualityFn.d.ts +1 -0
  124. package/dist/types/utils/useFormLoader.d.ts +83 -0
  125. package/dist/types/utils/useFormSaver.d.ts +96 -0
  126. package/dist/types/utils/useFormValidator.d.ts +28 -0
  127. package/dist/types/utils/useRegisterControl.d.ts +24 -0
  128. package/dist/types/utils/useReportValidationFailures.d.ts +5 -0
  129. package/dist/types/utils/useTemporalStringTransformer.d.ts +21 -0
  130. package/package.json +70 -0
  131. package/scss/_utils.scss +6 -0
  132. package/scss/components/Annexes/_Annexes-variables.scss +17 -0
  133. package/scss/components/Annexes/_Annexes.scss +234 -0
  134. package/scss/components/FileControl/_FileControl.scss +52 -0
  135. package/scss/components/FormApp/_FormApp.scss +67 -0
  136. package/scss/components/FormPages/_FormPages-variables.scss +62 -0
  137. package/scss/components/FormPages/_FormPages.scss +288 -0
  138. package/scss/components/IssueMessages/_IssueMessages.scss +13 -0
  139. package/scss/components/IssuesPanel/_IssuesPanel-variables.scss +82 -0
  140. package/scss/components/IssuesPanel/_IssuesPanel.scss +196 -0
  141. package/scss/components/TableControl/_TableControl.scss +21 -0
  142. package/scss/components/TopBar/_TopBar.scss +52 -0
  143. package/scss/index.scss +11 -0
  144. package/scss/scss/_base-variables.scss +5 -0
@@ -0,0 +1,288 @@
1
+ @use "sass:color";
2
+ @use "sass:map";
3
+ @use "@ostack.tech/ui/scss/utils" as ostack-ui;
4
+ @use "FormPages-variables" as *;
5
+ @use "../../scss/base-variables" as *;
6
+
7
+ .#{$prefix}form-pages {
8
+ $form-pages: &;
9
+ display: flex;
10
+ justify-content: stretch;
11
+ height: 100%;
12
+
13
+ // Sidebar layout
14
+ &__navigation[data-navigation-mode="sidebar"] {
15
+ flex-shrink: 0;
16
+ width: $form-pages-sidebar-width;
17
+ min-height: calc(
18
+ var(--#{$prefix}form-app-min-height) - var(--#{$prefix}top-bar-height)
19
+ );
20
+ margin-bottom: calc(var(--#{$prefix}bottom-panel-height) * -1);
21
+ border-radius: $form-pages-sidebar-border-radius;
22
+
23
+ background-color: $form-pages-sidebar-background-color;
24
+ border-right: $form-pages-sidebar-border-width solid
25
+ $form-pages-sidebar-border-color;
26
+
27
+ @include ostack-ui.media-breakpoint-up(xl) {
28
+ width: $form-pages-sidebar-width-xl;
29
+ }
30
+ }
31
+
32
+ &__sidebar {
33
+ position: sticky;
34
+ top: var(--#{$prefix}top-bar-height);
35
+ z-index: $form-pages-sidebar-z-index;
36
+
37
+ max-height: calc(100dvh - var(--#{$prefix}top-bar-height));
38
+ overflow: auto;
39
+ }
40
+
41
+ &__sidebar-item-content {
42
+ display: flex;
43
+ align-items: center;
44
+ }
45
+
46
+ &__sidebar-item-code {
47
+ display: flex;
48
+ flex: 0 0 auto;
49
+ align-items: center;
50
+ justify-content: center;
51
+ min-width: $form-pages-sidebar-item-code-min-size;
52
+ min-height: $form-pages-sidebar-item-code-min-size;
53
+ margin-right: $form-pages-sidebar-item-code-margin-x;
54
+ padding: $form-pages-sidebar-item-code-padding;
55
+ border-radius: $form-pages-sidebar-item-code-border-radius;
56
+
57
+ font-size: $form-pages-sidebar-item-code-font-size;
58
+ line-height: $form-pages-sidebar-item-code-line-height;
59
+ font-weight: $form-pages-sidebar-item-code-font-weight;
60
+ background-color: $form-pages-sidebar-item-code-background-color;
61
+ color: $form-pages-sidebar-item-code-color;
62
+
63
+ @include ostack-ui.accessible-transition();
64
+
65
+ &[data-selected] {
66
+ background-color: $form-pages-sidebar-item-code-selected-background-color;
67
+ color: $form-pages-sidebar-item-code-selected-color;
68
+ }
69
+
70
+ &[data-status] {
71
+ background-color: $form-pages-sidebar-item-code-status-background-color;
72
+ color: $form-pages-sidebar-item-code-status-color;
73
+ }
74
+ }
75
+
76
+ // Select layout
77
+ &[data-navigation-mode="select"] {
78
+ flex-direction: column;
79
+ }
80
+
81
+ &__navigation[data-navigation-mode="select"] {
82
+ position: sticky;
83
+ top: var(--#{$prefix}top-bar-height);
84
+ z-index: $form-pages-select-z-index;
85
+ box-shadow: $form-pages-select-box-shadow;
86
+ }
87
+
88
+ &__select-container[data-variant="default"] {
89
+ border-radius: 0;
90
+ border: 0;
91
+ background-color: var(--#{ostack-ui.$prefix}primary-9);
92
+ background-image: none;
93
+
94
+ &[data-focused] {
95
+ box-shadow: inset 0 0 0 2px var(--#{ostack-ui.$prefix}neutral-a12);
96
+ }
97
+ }
98
+
99
+ &__select[data-variant="default"] {
100
+ padding-top: calc(ostack-ui.spacing(2) - 2px);
101
+ padding-bottom: ostack-ui.spacing(2);
102
+ height: auto;
103
+ border-radius: 0 !important;
104
+
105
+ font-weight: ostack-ui.$font-weight-bold;
106
+ font-size: ostack-ui.$font-size-md;
107
+ color: var(--#{ostack-ui.$prefix}background-color);
108
+
109
+ @include ostack-ui.accessible-transition();
110
+ }
111
+
112
+ &__select-value > span,
113
+ &__select-option > span {
114
+ display: flex;
115
+ align-items: center;
116
+ }
117
+
118
+ &__select-popover {
119
+ min-width: 0;
120
+ width: calc(100dvw - ostack-ui.spacing(1));
121
+ }
122
+
123
+ &__select-option-code {
124
+ $code-size: 30px;
125
+ display: inline-flex;
126
+ flex: 0 0 auto;
127
+ align-items: center;
128
+ justify-content: center;
129
+ min-width: $code-size;
130
+ min-height: $code-size;
131
+ margin-right: ostack-ui.spacing(3);
132
+ padding: ostack-ui.spacing(0.5) ostack-ui.spacing(1);
133
+ border-radius: ostack-ui.$control-code-border-radius;
134
+
135
+ font-size: var(--#{ostack-ui.$prefix}font-size-sm);
136
+ line-height: var(--#{ostack-ui.$prefix}line-height-sm);
137
+ font-weight: ostack-ui.$font-weight-bold;
138
+ background-color: rgba(255, 255, 255, 0.6);
139
+ color: var(--#{ostack-ui.$prefix}primary-9);
140
+
141
+ @include ostack-ui.accessible-transition();
142
+
143
+ #{$form-pages}__select-value &,
144
+ #{$form-pages}__select-option[data-state="checked"] &:not([data-status]) {
145
+ background-color: rgba(255, 255, 255, 0.25);
146
+ color: var(--#{ostack-ui.$prefix}background-color);
147
+ }
148
+
149
+ &[data-status] {
150
+ background-color: var(--#{ostack-ui.$prefix}accent-9);
151
+ color: var(--#{ostack-ui.$prefix}accent-contrast);
152
+ }
153
+ }
154
+
155
+ &__select-arrow {
156
+ color: var(--#{ostack-ui.$prefix}background-color);
157
+ }
158
+
159
+ &__page {
160
+ flex: 1;
161
+ min-width: 0;
162
+ min-height: calc(
163
+ var(--#{$prefix}form-app-min-height) - var(
164
+ --#{$prefix}top-bar-height
165
+ ) - var(--#{$prefix}form-pages-navigation-select-height) - var(
166
+ --#{$prefix}bottom-panel-height
167
+ )
168
+ );
169
+ background-color: var(--#{ostack-ui.$prefix}background-color);
170
+ }
171
+
172
+ &__page-header {
173
+ position: sticky;
174
+ top: var(--#{$prefix}top-bar-height);
175
+ z-index: ostack-ui.$z-index-sticky + 1;
176
+
177
+ display: flex;
178
+ align-items: center;
179
+ padding: ostack-ui.spacing(2) ostack-ui.spacing(4);
180
+ border-bottom: 1px solid var(--#{ostack-ui.$prefix}primary-3);
181
+ background-color: var(--#{ostack-ui.$prefix}background-color);
182
+ }
183
+
184
+ // Hide page header in small screens when navigation is present
185
+ @include ostack-ui.media-breakpoint-down(sm) {
186
+ &__navigation + &__page {
187
+ & > #{$form-pages}__page-header {
188
+ background-color: transparent;
189
+ padding-left: ostack-ui.spacing(2.5);
190
+ padding-right: ostack-ui.spacing(2.5);
191
+ overflow: hidden;
192
+
193
+ &:not([data-has-popovers]) {
194
+ padding: 0;
195
+ border: 0;
196
+ }
197
+
198
+ & > #{$form-pages}__page-code,
199
+ & > #{$form-pages}__page-title {
200
+ display: none;
201
+ }
202
+ }
203
+
204
+ & > #{$form-pages}__page-content {
205
+ top: calc(
206
+ var(--#{$prefix}top-bar-height) +
207
+ var(--#{$prefix}form-pages-navigation-select-height)
208
+ );
209
+ }
210
+ }
211
+ }
212
+
213
+ &__page-code {
214
+ $code-size: 24px;
215
+ display: flex;
216
+ align-items: center;
217
+ justify-content: center;
218
+ min-height: $code-size;
219
+ min-width: $code-size;
220
+ margin-right: ostack-ui.spacing(2);
221
+ border-radius: ostack-ui.$control-code-border-radius;
222
+ padding: ostack-ui.spacing(0.5) ostack-ui.spacing(1);
223
+
224
+ background-color: var(--#{ostack-ui.$prefix}primary-3);
225
+ color: var(--#{ostack-ui.$prefix}primary-9);
226
+ font-size: ostack-ui.$font-size-sm;
227
+ line-height: ostack-ui.$line-height-sm;
228
+ font-weight: ostack-ui.$font-weight-bold;
229
+
230
+ @include ostack-ui.accessible-transition();
231
+
232
+ &[data-status] {
233
+ background-color: var(--#{ostack-ui.$prefix}accent-9);
234
+ color: var(--#{ostack-ui.$prefix}accent-contrast);
235
+ }
236
+ }
237
+
238
+ &__page-title {
239
+ margin: 0;
240
+ color: var(--#{ostack-ui.$prefix}primary-9);
241
+ font-size: ostack-ui.$font-size-md;
242
+ line-height: ostack-ui.$line-height-md;
243
+ font-weight: ostack-ui.$font-weight-bold;
244
+
245
+ &:not(:last-child) {
246
+ margin-right: ostack-ui.spacing(4);
247
+ }
248
+ }
249
+
250
+ &__page-header-popovers {
251
+ margin-left: auto;
252
+ margin-right: ostack-ui.spacing(-0.5);
253
+ }
254
+
255
+ &__page-helper-button,
256
+ &__page-issues-popover-button {
257
+ margin-top: ostack-ui.spacing(-3) !important;
258
+ margin-bottom: ostack-ui.spacing(-3) !important;
259
+ margin-right: ostack-ui.spacing(-1.5) !important;
260
+ }
261
+
262
+ &__page-helper-popover {
263
+ max-width: min(
264
+ #{ostack-ui.$container-md-max-width},
265
+ var(--radix-popover-content-available-width)
266
+ );
267
+ max-height: min(600px, var(--radix-popover-content-available-height));
268
+ padding: ostack-ui.spacing(1) ostack-ui.spacing(2);
269
+ }
270
+
271
+ &__page-content {
272
+ position: sticky;
273
+ top: calc(
274
+ var(--#{$prefix}top-bar-height) +
275
+ var(--#{$prefix}form-pages-page-header-height)
276
+ );
277
+ z-index: ostack-ui.$z-index-sticky;
278
+
279
+ padding: ostack-ui.spacing(4);
280
+
281
+ @include ostack-ui.media-breakpoint-up(sm) {
282
+ padding-bottom: calc(
283
+ var(--#{$prefix}bottom-panel-height) + ostack-ui.spacing(4)
284
+ );
285
+ margin-bottom: calc(var(--#{$prefix}bottom-panel-height) * -1);
286
+ }
287
+ }
288
+ }
@@ -0,0 +1,13 @@
1
+ @use "@ostack.tech/ui/scss/utils" as ostack-ui;
2
+ @use "../../scss/base-variables" as *;
3
+
4
+ .#{$prefix}issue-messages {
5
+ &__issue-code {
6
+ font-style: italic;
7
+ opacity: 0.9;
8
+
9
+ &::before {
10
+ content: " ";
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,82 @@
1
+ @use "@ostack.tech/ui/scss/utils" as ostack-ui;
2
+
3
+ $issues-panel-margin-x: ostack-ui.spacing(4) !default;
4
+ $issues-panel-padding-y: ostack-ui.spacing(3) !default;
5
+ $issues-panel-padding-x: ostack-ui.spacing(4) !default;
6
+ $issues-panel-z-index: ostack-ui.$z-index-sticky + 1 !default;
7
+
8
+ $issues-panel-border-radius: ostack-ui.$card-border-radius
9
+ ostack-ui.$card-border-radius 0 0 !default;
10
+ $issues-panel-border-width: 1px 1px 0 1px !default;
11
+ $issues-panel-stuck-border-radius: null !default;
12
+ $issues-panel-stuck-border-width: null !default;
13
+
14
+ $issues-panel-border-radius-xs: 0 !default;
15
+ $issues-panel-border-width-sm: 1px 0 0 0 !default;
16
+ $issues-panel-stuck-border-radius-xs: null !default;
17
+ $issues-panel-stuck-border-width-sm: null !default;
18
+
19
+ // Issues panel header
20
+ $issues-panel-header-padding-x: $issues-panel-padding-x !default;
21
+ $issues-panel-header-padding-bottom: ostack-ui.spacing(2) !default;
22
+ $issues-panel-header-z-index: ostack-ui.$z-index-sticky !default;
23
+ $issues-panel-header-stuck-shadow-size: 8px !default;
24
+ $issues-panel-header-stuck-shadow-color: rgba(0, 0, 0, 0.1) !default;
25
+ $issues-panel-header-stuck-shadow-gradient:
26
+ $issues-panel-header-stuck-shadow-color, transparent !default;
27
+
28
+ // Issues panel icon
29
+ $issues-panel-icon-margin-y: ostack-ui.spacing(5) !default;
30
+ $issues-panel-icon-margin-x: ostack-ui.spacing(3) !default;
31
+
32
+ // Issues panel title
33
+ $issues-panel-title-font-size: ostack-ui.$font-size-md !default;
34
+ $issues-panel-title-line-height: ostack-ui.$line-height-md !default;
35
+
36
+ $issues-panel-title-font-size-sm: ostack-ui.$font-size-sm !default;
37
+ $issues-panel-title-line-height-sm: null !default;
38
+
39
+ // Issues panel breadcrumbs
40
+ $issues-panel-breadcrumb-item-margin-x: ostack-ui.spacing(1.5) !default;
41
+
42
+ // Issues panel controls
43
+ $issues-panel-controls-margin-y: ostack-ui.spacing(3.5) !default;
44
+ $issues-panel-controls-margin-left: ostack-ui.spacing(4) !default;
45
+ $issues-panel-action-group-margin-x: ostack-ui.spacing(3) !default;
46
+ $issues-panel-action-margin-x: ostack-ui.spacing(1) !default;
47
+ $issues-panel-validating-spinner-margin-x: ostack-ui.spacing(2) !default;
48
+ $issues-panel-pagination-font-size: ostack-ui.$font-size-xs !default;
49
+ $issues-panel-pagination-line-height: ostack-ui.$line-height-xs !default;
50
+ $issues-panel-pagination-font-weight: ostack-ui.$font-weight-bold !default;
51
+
52
+ // Issues panel body
53
+ $issues-panel-body-padding-x: $issues-panel-padding-x !default;
54
+ $issues-panel-body-padding-bottom: ostack-ui.spacing(3) !default;
55
+
56
+ // Issues panel messages
57
+ $issues-panel-messages-min-height: 190px !default;
58
+ $issues-panel-messages-max-height: 260px !default;
59
+
60
+ // Issues panel issues list title
61
+ $issues-panel-issues-list-title-margin-bottom: ostack-ui.spacing(2) !default;
62
+ $issues-panel-issues-list-title-font-size: var(
63
+ --#{ostack-ui.$prefix}font-size-sm
64
+ ) !default;
65
+ $issues-panel-issues-list-title-line-height: var(
66
+ --#{ostack-ui.$prefix}line-height-sm
67
+ ) !default;
68
+
69
+ // Issues panel issues list
70
+ $issues-panel-issues-list-margin-bottom: ostack-ui.spacing(4) !default;
71
+ $issues-panel-issues-list-padding-left: ostack-ui.spacing(4) !default;
72
+
73
+ // Issues panel issue
74
+ $issues-panel-issue-margin-y: ostack-ui.spacing(2) !default;
75
+ $issues-panel-issue-font-size: var(--#{ostack-ui.$prefix}font-size-xs) !default;
76
+ $issues-panel-issue-line-height: var(
77
+ --#{ostack-ui.$prefix}line-height-xs
78
+ ) !default;
79
+
80
+ // Issues panel issue code
81
+ $issues-panel-issue-code-font-style: italic !default;
82
+ $issues-panel-issue-code-opacity: 0.9 !default;
@@ -0,0 +1,196 @@
1
+ @use "sass:color";
2
+ @use "@ostack.tech/ui/scss/utils" as ostack-ui;
3
+ @use "IssuesPanel-variables" as *;
4
+ @use "../../scss/base-variables" as *;
5
+
6
+ .#{$prefix}issues-panel {
7
+ $issues-panel: &;
8
+ $card: ".#{ostack-ui.$prefix}card";
9
+
10
+ border-radius: $issues-panel-border-radius;
11
+ pointer-events: auto;
12
+ overflow: auto;
13
+
14
+ // Override card styles
15
+ &#{$card} {
16
+ padding: 0;
17
+ border-width: $issues-panel-border-width;
18
+ }
19
+
20
+ @include ostack-ui.media-breakpoint-down(sm) {
21
+ border-radius: $issues-panel-border-radius-xs;
22
+ // Override card styles
23
+ &#{$card} {
24
+ border-width: $issues-panel-border-width-sm;
25
+ }
26
+ }
27
+
28
+ &__container {
29
+ position: sticky;
30
+ bottom: 0;
31
+ z-index: $issues-panel-z-index;
32
+ display: flex;
33
+ justify-content: center;
34
+ pointer-events: none;
35
+
36
+ @include ostack-ui.accessible-animation(
37
+ ostack-ui.$animation-fade-in
38
+ var(--#{ostack-ui.$prefix}animation-fade-duration)
39
+ var(--#{ostack-ui.$prefix}animation-fade-timing-function)
40
+ );
41
+ }
42
+
43
+ &__container[data-stuck] & {
44
+ border-radius: $issues-panel-stuck-border-radius;
45
+ // Override card styles
46
+ &#{$card} {
47
+ border-width: $issues-panel-stuck-border-width;
48
+ }
49
+
50
+ @include ostack-ui.media-breakpoint-down(sm) {
51
+ border-radius: $issues-panel-stuck-border-radius-xs;
52
+ // Override card styles
53
+ &#{$card} {
54
+ border-width: $issues-panel-stuck-border-width-sm;
55
+ }
56
+ }
57
+ }
58
+
59
+ @include ostack-ui.media-breakpoint-up(sm) {
60
+ width: calc(100% - $issues-panel-margin-x * 2);
61
+ padding: $issues-panel-padding-y $issues-panel-padding-x;
62
+
63
+ &__container {
64
+ padding-left: var(--#{$prefix}left-sidebar-width);
65
+ }
66
+ }
67
+
68
+ &--messages {
69
+ min-height: $issues-panel-messages-min-height;
70
+ max-height: $issues-panel-messages-max-height;
71
+ }
72
+
73
+ &__header {
74
+ display: block;
75
+ padding: 0 $issues-panel-header-padding-x
76
+ $issues-panel-header-padding-bottom !important;
77
+
78
+ // Sticky
79
+ position: sticky;
80
+ top: 0;
81
+ z-index: $issues-panel-header-z-index;
82
+
83
+ &[data-stuck]::before {
84
+ content: "";
85
+ pointer-events: none;
86
+ position: absolute;
87
+ width: 100%;
88
+ height: $issues-panel-header-stuck-shadow-size;
89
+ left: 0;
90
+ bottom: -$issues-panel-header-stuck-shadow-size;
91
+ background-image: linear-gradient(
92
+ 180deg,
93
+ $issues-panel-header-stuck-shadow-gradient
94
+ );
95
+ }
96
+ }
97
+
98
+ &--summary &__header {
99
+ padding-bottom: 0 !important;
100
+ }
101
+
102
+ &__body {
103
+ padding: 0 $issues-panel-body-padding-x $issues-panel-body-padding-bottom !important;
104
+ }
105
+
106
+ &__loading-spinner,
107
+ &__icon {
108
+ display: inline-block;
109
+ vertical-align: middle;
110
+ margin: $issues-panel-icon-margin-y $issues-panel-icon-margin-x
111
+ $issues-panel-icon-margin-y 0;
112
+ }
113
+
114
+ &__action:not(:first-child) {
115
+ margin-left: $issues-panel-action-margin-x;
116
+ }
117
+
118
+ &__title {
119
+ display: inline-block;
120
+ vertical-align: middle;
121
+ font-size: $issues-panel-title-font-size !important;
122
+ line-height: $issues-panel-title-line-height !important;
123
+
124
+ @include ostack-ui.media-breakpoint-down(sm) {
125
+ font-size: $issues-panel-title-font-size-sm !important;
126
+ line-height: $issues-panel-title-line-height-sm !important;
127
+ }
128
+ }
129
+
130
+ &__breadcrumb-item:not(:last-child) {
131
+ &::after {
132
+ content: "›";
133
+ margin: 0 $issues-panel-breadcrumb-item-margin-x;
134
+ }
135
+ }
136
+
137
+ &__controls {
138
+ float: right;
139
+ display: flex;
140
+ align-items: center;
141
+ margin: $issues-panel-controls-margin-y 0 $issues-panel-controls-margin-y
142
+ $issues-panel-controls-margin-left;
143
+ }
144
+
145
+ &__validating-spinner {
146
+ margin-right: $issues-panel-validating-spinner-margin-x;
147
+ }
148
+
149
+ &__pagination {
150
+ flex-shrink: 0;
151
+ font-size: $issues-panel-pagination-font-size;
152
+ line-height: $issues-panel-pagination-line-height;
153
+ font-weight: $issues-panel-pagination-font-weight;
154
+ text-align: right;
155
+ }
156
+
157
+ &__pagination,
158
+ &__focus,
159
+ &__last {
160
+ margin-right: $issues-panel-action-group-margin-x;
161
+ }
162
+
163
+ &__close-button {
164
+ margin-left: auto;
165
+ }
166
+
167
+ &__issues-list-title {
168
+ margin: 0 0 $issues-panel-issues-list-title-margin-bottom;
169
+ font-size: $issues-panel-issues-list-title-font-size !important;
170
+ line-height: $issues-panel-issues-list-title-line-height !important;
171
+ }
172
+
173
+ &__issues-list {
174
+ margin: 0 0 $issues-panel-issues-list-margin-bottom;
175
+ padding-left: $issues-panel-issues-list-padding-left;
176
+ }
177
+
178
+ &__issue,
179
+ &__resolved-message {
180
+ font-size: $issues-panel-issue-font-size;
181
+ line-height: $issues-panel-issue-line-height;
182
+ }
183
+
184
+ &__issue:not(:first-child) {
185
+ margin-top: $issues-panel-issue-margin-y;
186
+ }
187
+
188
+ &__issue-code {
189
+ font-style: $issues-panel-issue-code-font-style;
190
+ opacity: $issues-panel-issue-code-opacity;
191
+
192
+ &::before {
193
+ content: " ";
194
+ }
195
+ }
196
+ }
@@ -0,0 +1,21 @@
1
+ @use "@ostack.tech/ui/scss/utils" as ostack-ui;
2
+ @use "../../scss/base-variables" as *;
3
+
4
+ .#{$prefix}table-control {
5
+ & > &__add-row-trigger {
6
+ float: right;
7
+ margin-bottom: ostack-ui.spacing(2);
8
+ margin-left: ostack-ui.spacing(2);
9
+ }
10
+
11
+ & > &__add-row-trigger + &__content-container {
12
+ // Top table content margin unneeded when the trigger is placed before it
13
+ margin-top: 0;
14
+ }
15
+
16
+ & > &__content-container ~ &__add-row-trigger {
17
+ // Bottom margin underneath the table content should be removed due to the
18
+ // clearfix
19
+ margin-bottom: 0;
20
+ }
21
+ }
@@ -0,0 +1,52 @@
1
+ @use "@ostack.tech/ui/scss/utils" as ostack-ui;
2
+ @use "../../scss/base-variables" as *;
3
+
4
+ .#{$prefix}top-bar {
5
+ $annexes-menu-container: ".#{$prefix}annexes__menu-container";
6
+ $annexes-tab-list-root: ".#{$prefix}annexes__tab-list-root";
7
+ $annexes-tab: ".#{$prefix}annexes__tab";
8
+
9
+ display: flex;
10
+ align-items: flex-end;
11
+ justify-content: space-between;
12
+
13
+ position: sticky;
14
+ top: 0;
15
+ z-index: ostack-ui.$z-index-sticky + 3;
16
+
17
+ padding: ostack-ui.spacing(1) ostack-ui.spacing(1) 0;
18
+ border-bottom: 2px solid ostack-ui.$primary-9;
19
+
20
+ background-color: var(--#{ostack-ui.$prefix}background-color);
21
+
22
+ // Deal with double border (since the annex manager already comes with a
23
+ // bottom border). At first we had a simple `margin-bottom: -2px` on the annex
24
+ // manager, but that causes off-by-one pixel alignment issues in scaled
25
+ // screens (e.g. 125% browser zoom, or 125% screen scaling in Windows), so we
26
+ // instead remove the border completely from the manager, which forces us to
27
+ // override the focus styles of the tabs to show a bottom border.
28
+ & #{$annexes-menu-container},
29
+ & #{$annexes-tab-list-root} {
30
+ box-shadow: none;
31
+ margin-bottom: 0;
32
+ }
33
+
34
+ & #{$annexes-tab}:focus-visible:not(:disabled):not([data-disabled]) {
35
+ box-shadow:
36
+ inset -1px 0 0 0 ostack-ui.$neutral-12,
37
+ inset 0 1px 0 0 ostack-ui.$neutral-12,
38
+ inset 1px 0 0 0 ostack-ui.$neutral-12,
39
+ inset 0 -2px 0 ostack-ui.$neutral-12;
40
+
41
+ &[data-status] {
42
+ box-shadow:
43
+ inset -1px 0 0 0 ostack-ui.$neutral-12,
44
+ inset 1px 0 0 0 ostack-ui.$neutral-12,
45
+ inset 0 -2px 0 ostack-ui.$neutral-12;
46
+ }
47
+ }
48
+
49
+ &__actions {
50
+ margin: 0 0 ostack-ui.spacing(1) auto;
51
+ }
52
+ }
@@ -0,0 +1,11 @@
1
+ @forward "utils";
2
+
3
+ // Components
4
+ @forward "components/Annexes/Annexes";
5
+ @forward "components/FileControl/FileControl";
6
+ @forward "components/FormApp/FormApp";
7
+ @forward "components/FormPages/FormPages";
8
+ @forward "components/IssueMessages/IssueMessages";
9
+ @forward "components/IssuesPanel/IssuesPanel";
10
+ @forward "components/TableControl/TableControl";
11
+ @forward "components/TopBar/TopBar";
@@ -0,0 +1,5 @@
1
+ @use "@ostack.tech/ui/scss/utils" as ostack-ui;
2
+
3
+ // Library's prefix
4
+ $prefix-suffix: "kform-" !default;
5
+ $prefix: #{ostack-ui.$prefix}#{$prefix-suffix};