Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(ojoi): Input validation and bugfixes #17124

Merged
merged 13 commits into from
Dec 6, 2024
Merged

fix(ojoi): Input validation and bugfixes #17124

merged 13 commits into from
Dec 6, 2024

Conversation

jonbjarnio
Copy link
Member

@jonbjarnio jonbjarnio commented Dec 4, 2024

What

OJOI Application

  • Fixing issues found when large inputs were used in the application
  • Fixed ui bugs such as the title of the application overflowing in the header
  • Hyphenated the strings in the signature section

Application system

  • Added filterConfig property to the SelectController component

Web

  • Fixed filtering on the OJOI search page, date params were wrongly type in the grapqhl input dto
  • Added boolean check to prevent "0" from rendering in the UI if no categories are present

UI Core

  • Updated the header component only used by the application system to allow for longer titles, the title itself becomes scrollable if needed image
  • Exported the hyphenateText method from the Hyphen component

Why

To fix bugs in the application and web project and to improve user and dev experience

Checklist:

  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • Formatting passes locally with my changes
  • I have rebased against main before asking for a review

Summary by CodeRabbit

Release Notes

  • New Features

    • Enhanced search functionality in select inputs with new filtering options.
    • Added maximum character limits to various input fields for better validation.
    • Introduced state management improvements in the Attachments component for better file handling.
    • Added new properties for document handling and formatting in the application schema.
    • Improved text hyphenation functionality for better readability.
  • Bug Fixes

    • Improved conditional rendering logic for categories in the OJOIAdvertCard component.
    • Updated button labels for clarity in the attachments section.

These changes enhance user experience and improve the overall functionality of the application.

@jonbjarnio jonbjarnio requested review from a team as code owners December 4, 2024 12:13
@jonbjarnio jonbjarnio requested a review from snaerth December 4, 2024 12:14
Copy link
Contributor

coderabbitai bot commented Dec 4, 2024

Walkthrough

The changes in this pull request primarily involve modifications to several components and hooks related to the Official Journal of Iceland application. Key updates include adjustments to the handling of date parameters, the addition of new properties for input controls, and enhancements to the rendering logic of various components. Notably, the types for date fields have been changed from Date to string, and new properties such as maxLength have been introduced to enforce input constraints. Overall, the modifications focus on improving clarity, maintainability, and user interaction within the application.

Changes

File Change Summary
apps/web/components/OfficialJournalOfIceland/OJOIAdvertCard.tsx Modified conditional rendering logic for categories prop from categories.length to categories.length > 0.
apps/web/screens/OfficialJournalOfIceland/OJOISearch.tsx Simplified date handling by removing conversion to Date objects for dateFrom and dateTo, directly using date strings in queries and state management.
apps/web/screens/OfficialJournalOfIceland/hooks/useAdverts.ts Changed dateFrom and dateTo types in UseAdvertsVariables from Date to string.
libs/api/domains/official-journal-of-iceland/src/lib/models/advert.input.ts Updated AdvertsInput class to change dateFrom and dateTo types from Date to String.
libs/application/templates/official-journal-of-iceland/src/components/additions/Additions.tsx Modified state initialization and logic for handling additions, including updates to the onRemoveAddition and onAddAddition functions.
libs/application/templates/official-journal-of-iceland/src/components/input/OJOIInputController.tsx Added optional maxLength property to Props type for input length restriction.
libs/application/templates/official-journal-of-iceland/src/components/input/OJOISelectController.tsx Introduced isSearchable and filterConfig properties to enhance select input functionality.
libs/application/templates/official-journal-of-iceland/src/components/signatures/Institution.tsx Added maxLength property to the Input component to restrict input length to 100 characters.
libs/application/templates/official-journal-of-iceland/src/components/signatures/Member.tsx Added maxLength property to the Input component to restrict input length to 100 characters.
libs/application/templates/official-journal-of-iceland/src/fields/Advert.tsx Added maxLength property to OJOIInputController for advertisement title input, limiting it to 600 characters.
libs/application/templates/official-journal-of-iceland/src/fields/Attachments.tsx Introduced useApplication hook for managing application state and modified handling of uploaded files based on asDocument state.
libs/application/templates/official-journal-of-iceland/src/fields/Publishing.tsx Added filterConfig property to Select component for improved filtering behavior.
libs/application/templates/official-journal-of-iceland/src/lib/dataSchema.ts Added asDocument and asRoman optional boolean properties to miscSchema.
libs/application/templates/official-journal-of-iceland/src/lib/messages/attachments.ts Updated defaultMessage for asAttachment button from 'Hlaða upp skjölum' to 'Bæta við viðauka'.
libs/application/templates/official-journal-of-iceland/src/lib/types.ts Added asDocument and asRoman properties to InputFields object under Routes.MISC.
libs/application/templates/official-journal-of-iceland/src/lib/utils.ts Enhanced text hyphenation functionality and updated getMembersMarkup and signatureTemplate to utilize new hypenate function.
libs/island-ui/core/src/lib/Header/Header.css.ts Modified infoDescription style to include maxHeight, position, and overflow properties.
libs/island-ui/core/src/lib/Header/Header.tsx Replaced Inline components with Box components for layout in the Header component, adding paddingRight to enhance layout.
libs/island-ui/core/src/lib/Hyphen/Hyphen.tsx Added export keyword to hyphenateText function to make it publicly accessible.
libs/shared/form-fields/src/lib/SelectController/SelectController.tsx Added filterConfig property to SelectControllerProps interface for enhanced filtering capabilities.

Possibly related PRs

Suggested labels

automerge, deploy-feature

Suggested reviewers

  • thorkellmani
  • sigruntg
  • Toti91

📜 Recent review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between e8af46f and 505bd75.

📒 Files selected for processing (7)
  • libs/application/templates/official-journal-of-iceland/src/components/input/OJOIInputController.tsx (3 hunks)
  • libs/application/templates/official-journal-of-iceland/src/components/input/OJOISelectController.tsx (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/fields/Advert.tsx (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/fields/Publishing.tsx (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/lib/dataSchema.ts (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/lib/types.ts (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/lib/utils.ts (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (7)
  • libs/application/templates/official-journal-of-iceland/src/fields/Publishing.tsx
  • libs/application/templates/official-journal-of-iceland/src/components/input/OJOISelectController.tsx
  • libs/application/templates/official-journal-of-iceland/src/fields/Advert.tsx
  • libs/application/templates/official-journal-of-iceland/src/lib/dataSchema.ts
  • libs/application/templates/official-journal-of-iceland/src/lib/types.ts
  • libs/application/templates/official-journal-of-iceland/src/lib/utils.ts
  • libs/application/templates/official-journal-of-iceland/src/components/input/OJOIInputController.tsx

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Member

@jonnigs jonnigs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link

codecov bot commented Dec 4, 2024

Codecov Report

Attention: Patch coverage is 25.00000% with 3 lines in your changes missing coverage. Please review.

Project coverage is 35.70%. Comparing base (beb3272) to head (9140efb).
Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...-journal-of-iceland/src/lib/models/advert.input.ts 0.00% 2 Missing ⚠️
...onents/OfficialJournalOfIceland/OJOIAdvertCard.tsx 0.00% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main   #17124      +/-   ##
==========================================
- Coverage   35.73%   35.70%   -0.03%     
==========================================
  Files        6926     6924       -2     
  Lines      147693   147610      -83     
  Branches    42074    42033      -41     
==========================================
- Hits        52775    52707      -68     
+ Misses      94918    94903      -15     
Flag Coverage Δ
air-discount-scheme-web 0.00% <ø> (ø)
api 3.33% <ø> (ø)
application-api-files 61.86% <ø> (ø)
application-core 76.01% <ø> (ø)
application-system-api 38.77% <0.00%> (+<0.01%) ⬆️
application-template-api-modules 27.82% <ø> (+0.02%) ⬆️
application-templates-car-recycling 3.12% <ø> (ø)
application-templates-criminal-record 25.78% <ø> (ø)
application-templates-driving-license 18.12% <ø> (ø)
application-templates-estate 13.83% <100.00%> (ø)
application-templates-example-payment 24.71% <ø> (ø)
application-templates-financial-aid 14.42% <ø> (ø)
application-templates-general-petition 23.13% <ø> (ø)
application-templates-inheritance-report 6.54% <ø> (ø)
application-templates-marriage-conditions 15.11% <ø> (ø)
application-templates-mortgage-certificate 43.56% <ø> (ø)
application-templates-parental-leave 29.95% <ø> (ø)
application-types 6.57% <ø> (ø)
application-ui-components 1.24% <ø> (ø)
application-ui-shell 22.46% <100.00%> (ø)
auth-react 24.50% <100.00%> (ø)
clients-charge-fjs-v2 28.35% <ø> (ø)
contentful-apps 4.73% <ø> (ø)
financial-aid-backend 51.43% <ø> (ø)
financial-aid-shared 17.88% <ø> (ø)
island-ui-core 30.92% <100.00%> (-0.03%) ⬇️
judicial-system-web 27.91% <100.00%> (ø)
portals-admin-regulations-admin 1.80% <ø> (ø)
portals-core 19.80% <100.00%> (ø)
shared-components 30.22% <100.00%> (ø)
shared-form-fields 33.88% <100.00%> (ø)
web 2.43% <0.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...eb/screens/OfficialJournalOfIceland/OJOISearch.tsx 0.00% <ø> (ø)
...reens/OfficialJournalOfIceland/hooks/useAdverts.ts 0.00% <ø> (ø)
libs/island-ui/core/src/lib/Header/Header.tsx 73.68% <ø> (ø)
libs/island-ui/core/src/lib/Hyphen/Hyphen.tsx 14.28% <100.00%> (ø)
...elds/src/lib/SelectController/SelectController.tsx 55.17% <ø> (ø)
...onents/OfficialJournalOfIceland/OJOIAdvertCard.tsx 0.00% <0.00%> (ø)
...-journal-of-iceland/src/lib/models/advert.input.ts 56.62% <0.00%> (ø)

... and 23 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update beb3272...9140efb. Read the comment docs.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Outside diff range and nitpick comments (22)
libs/application/templates/official-journal-of-iceland/src/lib/messages/attachments.ts (1)

Line range hint 1-99: Consider extracting common message patterns into constants.

Several messages use similar patterns (e.g., 'Bæta við viðauka'). Consider extracting these into constants to improve maintainability and ensure consistency across the codebase.

Example refactor:

const COMMON_MESSAGES = {
  ADD_ATTACHMENT: 'Bæta við viðauka',
} as const;

export const attachments = {
  // ... other messages ...
  buttons: defineMessages({
    asAttachment: {
      id: 'ojoi.application:attachments.buttons.additionType.asAttachment',
      defaultMessage: COMMON_MESSAGES.ADD_ATTACHMENT,
      description: 'Label of the button to upload attachments',
    },
    addAddition: {
      id: 'ojoi.application:attachments.buttons.addAddition',
      defaultMessage: COMMON_MESSAGES.ADD_ATTACHMENT,
      description: 'Label of the button to add an addition',
    },
    // ... other buttons ...
  }),
  // ... rest of the file
}
libs/application/templates/official-journal-of-iceland/src/fields/Publishing.tsx (1)

Line range hint 52-77: Consider optimizing category state updates

The category update logic could be optimized to reduce unnecessary state updates.

Consider this optimization:

 const onCategoryChange = (value?: string) => {
-  setIsUpdatingCategory(true)
   if (!value) {
-    setIsUpdatingCategory(false)
     return
   }
+  setIsUpdatingCategory(true)
   
   const currentAnswers = structuredClone(currentApplication.answers)
   const selectedCategories = currentAnswers.advert?.categories || []
   
-  const newCategories = selectedCategories.includes(value)
-    ? selectedCategories.filter((c) => c !== value)
-    : [...selectedCategories, value]
+  const newCategories = new Set(selectedCategories)
+  if (newCategories.has(value)) {
+    newCategories.delete(value)
+  } else {
+    newCategories.add(value)
+  }
   
   const updatedAnswers = set(
     currentAnswers,
     InputFields.advert.categories,
-    newCategories,
+    Array.from(newCategories),
   )
   
   updateApplication(updatedAnswers, () => {
     setIsUpdatingCategory(false)
   })
 }
libs/island-ui/core/src/lib/Header/Header.css.ts (1)

24-31: LGTM! Consider adding scrollbar styling for consistency.

The changes effectively address the header title overflow issue by implementing a scrollable container with responsive max heights. The implementation follows good mobile-first practices and uses type-safe CSS-in-TS.

Consider adding custom scrollbar styling for better visual consistency:

export const infoDescription = style({
  fontWeight: 300,
  lineHeight: 1.5,
  fontSize: 14,
  maxHeight: 40,
  position: 'relative',
  overflow: 'auto',
+ '&::-webkit-scrollbar': {
+   width: '4px',
+ },
+ '&::-webkit-scrollbar-thumb': {
+   backgroundColor: theme.color.dark200,
+   borderRadius: '2px',
+ },

  ...themeUtils.responsiveStyle({
    md: {
      fontSize: 18,
      maxHeight: 66,
    },
  }),
})
libs/island-ui/core/src/lib/Header/Header.tsx (1)

Line range hint 11-63: Consider planning the removal of deprecated props.

The component includes multiple deprecated props that should be removed in a future update. Since this is a core UI component, consider:

  1. Creating a migration guide for users of deprecated props
  2. Planning a major version bump when removing these props
  3. Adding console warnings for deprecated prop usage
apps/web/components/OfficialJournalOfIceland/OJOIAdvertCard.tsx (1)

69-69: LGTM! Consider adding type narrowing for better type safety

The improved condition prevents rendering empty category containers. For additional type safety, consider narrowing the type:

-{categories && categories.length > 0 && (
+{Array.isArray(categories) && categories.length > 0 && (
apps/web/screens/OfficialJournalOfIceland/OJOISearch.tsx (1)

175-176: LGTM! Consider adding type validation

The change to use string dates in the refetch call is consistent with the GraphQL input requirements. However, we could enhance type safety.

Consider adding runtime type validation:

 refetch({
   input: {
     department: [searchValues.deild],
     category: [searchValues.malaflokkur],
     involvedParty: [searchValues.stofnun],
     type: [searchValues.tegund],
-    dateFrom: searchValues.dagsFra,
-    dateTo: searchValues.dagsTil,
+    dateFrom: searchValues.dagsFra?.match(/^\d{4}-\d{2}-\d{2}$/) ? searchValues.dagsFra : undefined,
+    dateTo: searchValues.dagsTil?.match(/^\d{4}-\d{2}-\d{2}$/) ? searchValues.dagsTil : undefined,
     search: searchValues.q,
     page: searchValues.sida,
     pageSize: searchValues.staerd,
   },
 })
libs/application/templates/official-journal-of-iceland/src/fields/Attachments.tsx (2)

20-24: Consider memoizing application value

The useApplication hook is called on every render. Consider memoizing the options object to prevent unnecessary re-renders.

- const { updateApplication, application: currentApplication } = useApplication(
-   {
-     applicationId: application.id,
-   },
- )
+ const options = useMemo(() => ({ applicationId: application.id }), [application.id])
+ const { updateApplication, application: currentApplication } = useApplication(options)

30-42: Simplify state update logic

The state update logic can be made more concise while maintaining the same functionality.

  const handleChange = () => {
-   const current = asDocument
    setAsDocument((prev) => !prev)
-   setValue(InputFields.misc.asDocument, !current)
+   const newValue = !asDocument
+   setValue(InputFields.misc.asDocument, newValue)
    updateApplication({
      ...currentApplication.answers,
      misc: {
        ...currentApplication.answers.misc,
-       asDocument: !current,
+       asDocument: newValue,
      },
    })
  }
libs/application/templates/official-journal-of-iceland/src/components/additions/Additions.tsx (2)

36-38: Consider memoizing initial state value

The initial state calculation could be memoized to prevent unnecessary recalculations on re-renders.

- const [asRoman, setAsRoman] = useState<boolean>(
-   application.answers.misc?.asRoman ?? false,
- )
+ const initialAsRoman = useMemo(
+   () => application.answers.misc?.asRoman ?? false,
+   [application.answers.misc?.asRoman]
+ )
+ const [asRoman, setAsRoman] = useState<boolean>(initialAsRoman)

Line range hint 113-132: Add validation for maximum additions

The maximum additions limit is only enforced through UI button disable. Consider adding validation to prevent programmatic additions beyond the limit.

  const onAddAddition = () => {
    const currentAnswers = structuredClone(currentApplication.answers)
    let currentAdditions = getValueViaPath(
      currentAnswers,
      InputFields.advert.additions,
    )

    if (!isAddition(currentAdditions)) {
      currentAdditions = []
    }

    // TS not inferring the type after the check above
    if (isAddition(currentAdditions)) {
+     if (currentAdditions.length >= MAXIMUM_ADDITIONS_COUNT) {
+       console.error('Maximum additions limit reached')
+       return
+     }
      const newAddition = getAddition(additions.length + 1, asRoman)
      // ... rest of the function
    }
  }
libs/application/templates/official-journal-of-iceland/src/lib/dataSchema.ts (1)

81-82: Add JSDoc comments to document the purpose of new properties

The new boolean properties look well-structured and maintain type safety through Zod schema. However, their purpose isn't immediately clear from the naming alone.

Consider adding JSDoc comments to improve maintainability:

 const miscSchema = z
   .object({
     signatureType: z.string().optional(),
     selectedTemplate: z.string().optional(),
+    /** Controls whether the content should be rendered as a document */
     asDocument: z.boolean().optional(),
+    /** Controls whether to use Roman numerals for formatting */
     asRoman: z.boolean().optional(),
   })
   .partial()
libs/application/templates/official-journal-of-iceland/src/components/signatures/Member.tsx (1)

Line range hint 1-28: Consider enhancing input validation

The component could benefit from additional validation:

  • Input pattern for valid name characters
  • Minimum length requirement
  • Proper handling of special characters
 type Props = {
   name: string
   label: string
   defaultValue?: string
+  minLength?: number
+  pattern?: string
   onChange: (
     e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,
   ) => void
 }

 export const SignatureMember = ({
   name,
   label,
   defaultValue,
+  minLength = 2,
+  pattern = "^[\\p{L}\\s'-]+$",
   onChange,
 }: Props) => {
   return (
     <Input
       name={name}
       label={label}
       size="sm"
       backgroundColor="blue"
       defaultValue={defaultValue}
       maxLength={100}
+      minLength={minLength}
+      pattern={pattern}
       onChange={onChange}
     />
   )
 }
libs/application/templates/official-journal-of-iceland/src/components/input/OJOIInputController.tsx (2)

18-18: Consider adding input validation type safety

The maxLength prop could benefit from runtime validation to ensure positive integers.

 type Props = {
   name: string
   label: string | MessageDescriptor
   placeholder?: string | MessageDescriptor
   defaultValue?: string
   loading?: boolean
   applicationId: string
   disabled?: boolean
   textarea?: boolean
-  maxLength?: number
+  maxLength?: number & { __brand: 'PositiveInteger' }
   onChange?: (value: string) => void
 }

+const isPositiveInteger = (value: number): value is number & { __brand: 'PositiveInteger' } => {
+  return Number.isInteger(value) && value > 0
+}

Also applies to: 31-31


Line range hint 46-51: Consider memoizing handleChange for performance

The handleChange function is recreated on every render. Consider memoizing it with useCallback.

-  const handleChange = (value: string) => {
+  const handleChange = useCallback((value: string) => {
     const currentAnswers = structuredClone(application.answers)
     const newAnswers = set(currentAnswers, name, value)
     return newAnswers
-  }
+  }, [application.answers, name])
libs/application/templates/official-journal-of-iceland/src/fields/Advert.tsx (2)

Line range hint 28-52: Consider optimizing department change handling

The department change handler could be optimized:

  1. Add error handling for the lazy types query
  2. Debounce the department change handler
  3. Add loading state for type changes
+ const debouncedHandleDepartmentChange = useCallback(
+   debounce((value: string) => {
+     useLazyTypes({
+       params: {
+         department: value,
+         pageSize: 100,
+       },
+     }).catch((error) => {
+       console.error('Failed to fetch types:', error);
+       // Add error handling UI feedback here
+     });
+   }, 300),
+   [useLazyTypes]
+ );

Line range hint 76-83: Add error handling for HTML preview generation

The title preview generation lacks error handling and could fail silently.

- const titlePreview = getAdvertMarkup({
+ const titlePreview = try {
+   getAdvertMarkup({
      type: currentApplication.answers.advert?.typeName,
      title: currentApplication.answers.advert?.title,
-  })
+   })
+ } catch (error) {
+   console.error('Failed to generate title preview:', error);
+   return ''; // Or a fallback preview
+ }
libs/application/templates/official-journal-of-iceland/src/components/signatures/Institution.tsx (3)

144-144: Consider enhancing input validation feedback.

While adding the maxLength constraint is good, consider these improvements:

  1. Add a helper text to inform users about the 100-character limit
  2. Document why 100 characters was chosen as the limit
 <Input
   maxLength={100}
+  helperText={f(signatures.inputs.institution.helperText)}
   name={`signature.${type}.institution${

Line range hint 41-119: Consider refactoring the handleInstitutionChange function for better maintainability.

The function handles multiple responsibilities and could be split into smaller, more focused functions:

  1. Separate committee and regular signature handlers
  2. Extract HTML generation logic
  3. Add explicit error handling for state updates

Example refactor:

const handleRegularSignature = (
  value: string,
  key: SignatureInstitutionKeys,
  signatureIndex: number,
  currentAnswers: any
) => {
  const updatedRegularSignature = signature?.map((signature, index) =>
    index === signatureIndex
      ? {
          ...signature,
          [key]: value,
          html: getSingleSignatureMarkup(
            { ...signature, [key]: value },
            application.answers.signatures?.additionalSignature?.regular
          ),
        }
      : signature
  )
  return set(
    currentAnswers,
    InputFields.signature[type],
    updatedRegularSignature
  )
}

const handleCommitteeSignature = (
  value: string,
  key: SignatureInstitutionKeys,
  signature: any,
  currentAnswers: any
) => {
  const html = getSingleSignatureMarkup(
    { ...signature, [key]: value },
    application.answers.signatures?.additionalSignature?.committee,
    signature.chairman
  )
  return set(currentAnswers, InputFields.signature[type], {
    ...signature,
    html,
    [key]: value,
  })
}

Line range hint 1-25: Enhance TypeScript type safety.

While the TypeScript usage is generally good, consider these improvements:

  1. Replace any types with proper interfaces
  2. Add return type annotations to functions
  3. Consider making the component a named export for better tree-shaking

Example improvements:

interface SignatureState {
  chairman?: string;
  institution: string;
  date: string;
  html: string;
}

interface ApplicationAnswers {
  signatures?: {
    additionalSignature?: {
      regular?: string;
      committee?: string;
    };
  };
}
libs/island-ui/core/src/lib/Hyphen/Hyphen.tsx (2)

Line range hint 15-29: Fix incorrect property assignment in minRight handling

There's a bug in the options handling where minRight is incorrectly assigned to leftmin.

Apply this fix:

  if (minLeft) {
    is.leftmin = minLeft
  }
  if (minRight) {
-   is.leftmin = minRight
+   is.rightmin = minRight
  }

Line range hint 15-29: Consider optimizing text processing performance

The current implementation creates a new Hypher instance for each call and processes words individually.

Consider caching the Hypher instance and using array methods more efficiently:

+ const hypherInstances = {
+   is: new Hypher(is),
+   en: new Hypher(en)
+ };

  export const hyphenateText: HyphenateText = (
    content,
    { minLeft, minRight, locale = 'is' },
  ) => {
    if (minLeft) {
      is.leftmin = minLeft
    }
    if (minRight) {
      is.rightmin = minRight
    }
-   const h = new Hypher(locale === 'is' ? is : en)
+   const h = hypherInstances[locale]
    const softHyphen = '\u00AD'
-   return content.split(' ').reduce((text, word) => {
-     const hyphenedWord = h.hyphenate(word).join(softHyphen)
-     text += ' ' + hyphenedWord
-     return text
-   }, '')
+   return content.split(' ')
+     .map(word => h.hyphenate(word).join(softHyphen))
+     .join(' ')
  }
libs/application/templates/official-journal-of-iceland/src/lib/utils.ts (1)

199-202: Consider memoizing hyphenated text for performance

Multiple calls to hypenate with the same input will recalculate the hyphenation unnecessarily.

Consider using a memoization utility:

const memoizedHyphenate = memoize((text = '') => 
  hyphenateText(text, { locale: 'is', minLeft: 4, minRight: 4 })
)
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 4a229a4 and 774cd78.

📒 Files selected for processing (20)
  • apps/web/components/OfficialJournalOfIceland/OJOIAdvertCard.tsx (1 hunks)
  • apps/web/screens/OfficialJournalOfIceland/OJOISearch.tsx (3 hunks)
  • apps/web/screens/OfficialJournalOfIceland/hooks/useAdverts.ts (1 hunks)
  • libs/api/domains/official-journal-of-iceland/src/lib/models/advert.input.ts (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/components/additions/Additions.tsx (4 hunks)
  • libs/application/templates/official-journal-of-iceland/src/components/input/OJOIInputController.tsx (3 hunks)
  • libs/application/templates/official-journal-of-iceland/src/components/input/OJOISelectController.tsx (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/components/signatures/Institution.tsx (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/components/signatures/Member.tsx (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/fields/Advert.tsx (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/fields/Attachments.tsx (2 hunks)
  • libs/application/templates/official-journal-of-iceland/src/fields/Publishing.tsx (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/lib/dataSchema.ts (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/lib/messages/attachments.ts (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/lib/types.ts (1 hunks)
  • libs/application/templates/official-journal-of-iceland/src/lib/utils.ts (4 hunks)
  • libs/island-ui/core/src/lib/Header/Header.css.ts (1 hunks)
  • libs/island-ui/core/src/lib/Header/Header.tsx (2 hunks)
  • libs/island-ui/core/src/lib/Hyphen/Hyphen.tsx (1 hunks)
  • libs/shared/form-fields/src/lib/SelectController/SelectController.tsx (4 hunks)
🧰 Additional context used
📓 Path-based instructions (20)
libs/application/templates/official-journal-of-iceland/src/lib/messages/attachments.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/application/templates/official-journal-of-iceland/src/fields/Publishing.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
apps/web/components/OfficialJournalOfIceland/OJOIAdvertCard.tsx (1)

Pattern apps/**/*: "Confirm that the code adheres to the following:

  • NextJS best practices, including file structure, API routes, and static generation methods.
  • Efficient state management and server-side rendering techniques.
  • Optimal use of TypeScript for component and utility type safety."
libs/application/templates/official-journal-of-iceland/src/lib/types.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/application/templates/official-journal-of-iceland/src/fields/Advert.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/application/templates/official-journal-of-iceland/src/components/signatures/Member.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/application/templates/official-journal-of-iceland/src/components/signatures/Institution.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/island-ui/core/src/lib/Header/Header.css.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/application/templates/official-journal-of-iceland/src/components/input/OJOISelectController.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/application/templates/official-journal-of-iceland/src/lib/dataSchema.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
apps/web/screens/OfficialJournalOfIceland/hooks/useAdverts.ts (1)

Pattern apps/**/*: "Confirm that the code adheres to the following:

  • NextJS best practices, including file structure, API routes, and static generation methods.
  • Efficient state management and server-side rendering techniques.
  • Optimal use of TypeScript for component and utility type safety."
libs/application/templates/official-journal-of-iceland/src/components/input/OJOIInputController.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/island-ui/core/src/lib/Header/Header.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/island-ui/core/src/lib/Hyphen/Hyphen.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/application/templates/official-journal-of-iceland/src/components/additions/Additions.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/shared/form-fields/src/lib/SelectController/SelectController.tsx (2)

Pattern libs/shared/**/*: "Confirm that the code adheres to the following:

  • Cross-application utility functions, types, and constants.
  • TypeScript best practices to ensure type safety and reusability.
  • Documentation and examples for library consumers."

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/application/templates/official-journal-of-iceland/src/lib/utils.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
apps/web/screens/OfficialJournalOfIceland/OJOISearch.tsx (1)

Pattern apps/**/*: "Confirm that the code adheres to the following:

  • NextJS best practices, including file structure, API routes, and static generation methods.
  • Efficient state management and server-side rendering techniques.
  • Optimal use of TypeScript for component and utility type safety."
libs/application/templates/official-journal-of-iceland/src/fields/Attachments.tsx (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
libs/api/domains/official-journal-of-iceland/src/lib/models/advert.input.ts (1)

Pattern libs/**/*: "Confirm that the code adheres to the following:

  • Reusability of components and hooks across different NextJS apps.
  • TypeScript usage for defining props and exporting types.
  • Effective tree-shaking and bundling practices."
🔇 Additional comments (19)
libs/application/templates/official-journal-of-iceland/src/lib/messages/attachments.ts (1)

37-37: LGTM! Improved terminology consistency.

The updated message 'Bæta við viðauka' aligns better with other button labels in the file, creating a more consistent user experience.

libs/shared/form-fields/src/lib/SelectController/SelectController.tsx (3)

4-9: LGTM: Clean import restructuring

The imports have been properly organized to include SelectProps type.


34-34: LGTM: Type-safe prop addition

The filterConfig prop is properly typed using SelectProps type, maintaining type safety and making it optional.


56-56: LGTM: Proper prop forwarding

The filterConfig prop is correctly destructured and passed to the underlying Select component.

Also applies to: 101-101

libs/application/templates/official-journal-of-iceland/src/components/input/OJOISelectController.tsx (1)

81-82: LGTM: Enhanced search functionality

The addition of search capability with start-of-string matching improves user experience when filtering options.

libs/application/templates/official-journal-of-iceland/src/fields/Publishing.tsx (1)

130-132: LGTM: Consistent filtering behavior

The filterConfig implementation matches the pattern used in OJOISelectController.

libs/island-ui/core/src/lib/Header/Header.tsx (3)

132-135: LGTM! Improved layout control with Box components.

The replacement of Inline with Box components provides better layout control. The use of flexShrink: 0 ensures the logo maintains its size, while nowrap prevents unwanted content wrapping.


136-139: LGTM! Consistent layout approach for header items.

The header items layout follows the same Box-based approach, ensuring consistent spacing and preventing unwanted shrinking of the elements.


96-96: LGTM! Balanced padding for scrollable content.

The addition of responsive paddingRight ensures proper spacing when content is scrollable, matching the marginLeft values for visual balance.

apps/web/screens/OfficialJournalOfIceland/hooks/useAdverts.ts (1)

23-24: Verify date string format handling across the application

The type change from Date to string for dateFrom and dateTo aligns with the GraphQL schema changes. However, we should ensure consistent date string format handling.

Consider adding a type guard or validation function to ensure date strings are in the correct format before they reach the GraphQL layer.

✅ Verification successful

Let me gather more information about the date handling in the codebase to verify the impact of the type changes.


Date handling is properly implemented for the type change

The type change from Date to string in useAdverts.ts is safe because:

  1. The formatDate utility in OJOIUtils.ts already expects string input and handles undefined values
  2. The component properly converts dates using toISOString().split('T')[0] format before sending to the GraphQL layer
  3. Date validation is present through the DatePicker component's built-in constraints (minDate, maxDate)
  4. The codebase consistently handles date strings in ISO format for API interactions
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for date format handling and validation
rg -A 2 "formatDate|parseDate|new Date\(" apps/web/screens/OfficialJournalOfIceland/

Length of output: 4283


Script:

#!/bin/bash
# Search for the formatDate utility implementation and its usages
rg -A 3 "export.*formatDate" apps/web/components/

# Search for date-related types and interfaces
ast-grep --pattern 'interface $_ {
  $$$
  date: $_
  $$$
}'

# Check for any date validation utilities
rg -A 2 "validateDate|isValidDate|dateValidation" 

Length of output: 15717

apps/web/screens/OfficialJournalOfIceland/OJOISearch.tsx (2)

591-592: LGTM! Date handling is properly validated

The server-side implementation correctly uses the validated and formatted date strings, maintaining consistency with the client-side changes and GraphQL schema.


108-109: LGTM! Verify date format consistency

The change to use string dates directly in the GraphQL query is correct and aligns with the backend DTO changes.

Let's verify the date format consistency across the codebase:

✅ Verification successful

Date format consistency verified

The change to use string dates directly is correct and consistent with the codebase:

  • The dagsFra and dagsTil parameters are explicitly typed as string in the interface
  • The date handling in getProps ensures ISO date format (YYYY-MM-DD) by using toISOString().split('T')[0]
  • The useAdverts hook accepts and passes these string dates directly to the GraphQL query
  • The DatePicker components handle the date-string conversion appropriately when updating state
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check date format handling in related files
# Expected: ISO date string format (YYYY-MM-DD)

# Check date handling in related files
rg -A 3 'dateFrom|dateTo' --type typescript

Length of output: 80


Script:

#!/bin/bash
# Let's try with different approaches to find date-related patterns
# 1. Search for date-related fields in all text files
rg -A 3 'dateFrom|dateTo|dagsFra|dagsTil'

# 2. Search specifically for defaultSearchParams to understand the date format
rg -A 3 'defaultSearchParams'

# 3. Look for any date format patterns
rg -A 3 '\d{4}-\d{2}-\d{2}|Date\(' 

Length of output: 68615


Script:

#!/bin/bash
# Let's look specifically at the OfficialJournalOfIceland related files and date handling
rg -A 5 'defaultSearchParams|dagsFra|dagsTil' apps/web/screens/OfficialJournalOfIceland/

# Also check the useAdverts hook implementation
ast-grep --pattern 'const useAdverts = $_' apps/web/screens/OfficialJournalOfIceland/

Length of output: 15924

libs/application/templates/official-journal-of-iceland/src/lib/types.ts (1)

37-38: LGTM! Type definitions are well-structured

The new fields asDocument and asRoman are properly integrated into the InputFields object, maintaining type safety and following existing naming conventions.

libs/application/templates/official-journal-of-iceland/src/components/additions/Additions.tsx (1)

98-109: 🛠️ Refactor suggestion

Optimize state updates to reduce operations

The state update logic involves multiple operations that could be optimized.

- let updatedAnswers = set(
+ const updatedAnswers = set(
    currentAnswers,
-   InputFields.advert.additions,
-   updatedAdditions,
+   '',
+   {
+     ...currentAnswers,
+     advert: {
+       ...currentAnswers.advert,
+       additions: updatedAdditions
+     },
+     misc: {
+       ...currentAnswers.misc,
+       asRoman: val
+     }
+   }
  )

- updatedAnswers = set(updatedAnswers, InputFields.misc.asRoman, val)

  setAsRoman(val)
  setValue(InputFields.advert.additions, updatedAdditions)
  setValue(InputFields.misc.asRoman, val)
  updateApplication(updatedAnswers)

Likely invalid or redundant comment.

libs/application/templates/official-journal-of-iceland/src/lib/dataSchema.ts (1)

81-82: Schema changes look good and maintain compatibility

The new optional boolean properties are well-integrated into the existing schema:

  • Maintains backward compatibility through optional fields
  • Follows TypeScript best practices
  • Enables proper tree-shaking
  • Preserves existing validation logic
libs/application/templates/official-journal-of-iceland/src/components/signatures/Member.tsx (1)

25-25: Verify if 100 characters is an appropriate limit for names

While adding a maxLength constraint is good practice, verify if 100 characters is the appropriate limit based on:

  • Legal requirements for official documents
  • Database constraints
  • UI/UX considerations
✅ Verification successful

100 characters is an appropriate limit for signature names

Based on the codebase analysis:

  • The 100-character limit is consistently used for institutional and member signatures in the official-journal-of-iceland template
  • Other name-related inputs in the system use much lower limits (e.g., 50 characters for machine names)
  • For official documents and forms, the longest text input limits found are:
    • 600 characters for advertisement titles
    • 220 characters for organ donation text
    • 250 characters for institutional constraints
  • 100 characters provides ample space for full names while maintaining reasonable UI constraints
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for other name input constraints in the codebase
rg -g '*.{ts,tsx}' 'maxLength.*name' --type-add 'tsx:*.{ts,tsx}'

Length of output: 66


Script:

#!/bin/bash
# Let's try a broader search for maxLength constraints in input fields
rg -g '*.{ts,tsx}' 'maxLength=\{?\d+\}?' -A 2 -B 2

# Also search for any validation schemas or constants related to name fields
rg -g '*.{ts,tsx}' '(name.*validation|NAME.*LENGTH|nameLength|NAME_MAX)'

# Search for Input component usage with name-related props
ast-grep --pattern 'Input name="$_" $$$'

Length of output: 19193

libs/application/templates/official-journal-of-iceland/src/fields/Advert.tsx (1)

108-108: Verify if 600 characters is appropriate for advertisement titles

While adding a maxLength constraint is good practice, verify if 600 characters is the appropriate limit based on:

  • Database constraints
  • UI display limitations
  • Official journal requirements
✅ Verification successful

Based on the search results, I can now generate the final response since we have gathered sufficient context about advertisement titles in the official journal system. While we don't see explicit validation rules defining the 600-character limit, we can see that the title field is used for "Heiti auglýsingar" (Advertisement Title) and is a core part of the application template.

600 characters appears to be a reasonable limit for advertisement titles

The maxLength of 600 characters is appropriate for advertisement titles in the Official Journal of Iceland because:

  • It provides ample space for descriptive titles while preventing excessive length
  • The title field is used as "Heiti auglýsingar (án tegundar)" - Advertisement title without type
  • The UI displays titles in a structured format with separate type/category and subtitle sections
  • No conflicting length constraints were found in the codebase
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for title length constraints in similar components
rg -g '*.{ts,tsx}' 'maxLength.*title' --type-add 'tsx:*.{ts,tsx}'

Length of output: 67


Script:

#!/bin/bash
# Search for maxLength constraints in form fields
rg -g '*.{ts,tsx}' 'maxLength=' -B 2 -A 2

# Search for title-related validation or schema definitions
rg -g '*.{ts,tsx,graphql}' -i 'title.*length|title.*validation|title.*schema' -B 2 -A 2

# Look for any database schema or validation files
fd -e schema.ts -e validation.ts -e model.ts -x cat {}

Length of output: 65809


Script:

#!/bin/bash
# Search for title-related fields in GraphQL schemas or type definitions
rg -g '*.graphql' -g '*.ts' 'title.*String|title:.*String|title:.*{' -B 2 -A 2

# Look for any validation rules or constraints in the official journal template
fd -g "*official-journal*.ts" -x cat {}

Length of output: 2514


Script:

#!/bin/bash
# Search for advertisement title constraints in GraphQL schema or API definitions
rg -g '*.{ts,graphql}' -i 'advert.*title|advertisement.*title' -B 2 -A 2

# Look for validation rules in the official journal template
fd -g "*official-journal*.validation.ts" -g "*official-journal*.schema.ts" -g "*official-journal*.model.ts" -x cat {}

# Search for any maxLength usage in official journal related files
rg -g '*official-journal*.{ts,tsx}' 'maxLength.*600|maxLength:.*600|maxLength=.*600' -B 2 -A 2

Length of output: 10092

libs/application/templates/official-journal-of-iceland/src/components/signatures/Institution.tsx (1)

Line range hint 26-31: LGTM! Well-structured component with proper TypeScript definitions.

The component follows React best practices with clear prop definitions and proper use of TypeScript interfaces. The modular structure promotes reusability across different NextJS applications.

Also applies to: 33-39

libs/island-ui/core/src/lib/Hyphen/Hyphen.tsx (1)

15-15: LGTM! Exporting utility function improves reusability

The export of hyphenateText aligns with the core library's goal of providing reusable utilities across different NextJS apps.

@datadog-island-is
Copy link

datadog-island-is bot commented Dec 4, 2024

Datadog Report

All test runs 997234d 🔗

32 Total Test Services: 0 Failed, 30 Passed
➡️ Test Sessions change in coverage: 149 no change

Test Services
This report shows up to 10 services
Service Name Failed Known Flaky New Flaky Passed Skipped Total Time Code Coverage Change Test Service View
air-discount-scheme-web 0 0 0 2 0 7.15s 1 no change Link
api 0 0 0 4 0 3.21s 1 no change Link
application-api-files 0 0 0 2 0 4.21s 1 no change Link
application-core 0 0 0 97 0 14.49s 1 no change Link
application-system-api 0 0 0 46 0 2m 17.61s 1 no change Link
application-template-api-modules 0 0 0 118 0 2m 2.74s 1 no change Link
application-templates-accident-notification 0 0 0 148 0 15s 1 no change Link
application-templates-criminal-record 0 0 0 2 0 9.88s 1 no change Link
application-templates-driving-license 0 0 0 13 0 13.1s 1 no change Link
application-templates-example-payment 0 0 0 2 0 10.38s 1 no change Link

@jonbjarnio jonbjarnio added the automerge Merge this PR as soon as all checks pass label Dec 4, 2024
Copy link
Member

@thorkellmani thorkellmani left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@kodiakhq kodiakhq bot removed the automerge Merge this PR as soon as all checks pass label Dec 5, 2024
Copy link
Contributor

kodiakhq bot commented Dec 5, 2024

This PR currently has a merge conflict. Please resolve this and then re-add the automerge label.

@jonbjarnio jonbjarnio added the automerge Merge this PR as soon as all checks pass label Dec 6, 2024
@jonbjarnio jonbjarnio removed the request for review from snaerth December 6, 2024 13:55
@oddsson oddsson added automerge Merge this PR as soon as all checks pass and removed automerge Merge this PR as soon as all checks pass labels Dec 6, 2024
@kodiakhq kodiakhq bot merged commit 1a6abd6 into main Dec 6, 2024
126 checks passed
@kodiakhq kodiakhq bot deleted the fix/ojoi-advert-types branch December 6, 2024 19:13
thorhildurt pushed a commit that referenced this pull request Dec 11, 2024
* Updating select inputs to filter from the start.

* Updated the UI header component to support larger titles.

* Signatures are now hyphenated and max length for each field set to 100.

* Fixed state issue when users changed the type of additions

* Fixed 0 rendering in an conditional check

* Fixed issue where date parameters were not properly working.

* Fix typo

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
automerge Merge this PR as soon as all checks pass
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants