| 167 | * Get fields for a specific modal type |
| 168 | */ |
| 169 | export function getFieldsForModal( |
| 170 | config: TaskModalFieldsConfig, |
| 171 | isCreationMode: boolean |
| 172 | ): ModalFieldConfig[] { |
| 173 | return config.fields |
| 174 | .filter((field) => field.enabled) |
| 175 | .filter((field) => |
| 176 | isCreationMode ? field.visibleInCreation : field.visibleInEdit |
| 177 | ) |
| 178 | .sort((a, b) => { |
| 179 | // First sort by group order |
| 180 | const groupA = config.groups.find((g) => g.id === a.group); |
| 181 | const groupB = config.groups.find((g) => g.id === b.group); |
| 182 | const groupOrderDiff = (groupA?.order ?? 0) - (groupB?.order ?? 0); |
| 183 | if (groupOrderDiff !== 0) return groupOrderDiff; |
| 184 | |
| 185 | // Then by field order within group |
| 186 | return a.order - b.order; |
| 187 | }); |
| 188 | } |
| 189 | |
| 190 | /** |
| 191 | * Get fields grouped by their group |