All files / src/lib/cards simple.ts

100% Statements 3/3
100% Branches 7/7
100% Functions 1/1
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86                            1x                 2x                                                                                                                       2x    
import {
  buildMentionEntities,
  renderMentionsText,
  type UserMention,
} from '../helpers.js';
 
export interface SimpleCardParams {
  color?: string;
  text: string;
  title: string;
  titleSize?: 'Default' | 'Large';
  userMentions?: UserMention[];
}
 
export const populateCard = ({
  color = 'Emphasis',
  text,
  title,
  titleSize = 'Default',
  userMentions = [],
}: SimpleCardParams) => {
  // console.log({ color, text, title, titleSize });
 
  const simpleNotificationCard = {
    type: 'message',
    attachments: [
      {
        contentType: 'application/vnd.microsoft.card.adaptive',
        content: {
          type: 'AdaptiveCard',
          $schema: 'https://adaptivecards.io/schemas/adaptive-card.json',
          version: '1.5',
          msteams: {
            width: 'Full',
            ...(userMentions.length > 0
              ? {
                  entities: buildMentionEntities(userMentions),
                }
              : {}),
          },
          body: [
            {
              type: 'Container',
              targetWidth: 'atLeast:Narrow',
              items: [
                {
                  type: 'TextBlock',
                  text: title,
                  wrap: true,
                  size: titleSize,
                  weight: 'Bolder',
                  spacing: 'None',
                },
              ],
              spacing: 'None',
              style: color,
              bleed: true,
            },
            {
              type: 'TextBlock',
              text: text,
              wrap: true,
              size: 'Default',
              height: 'stretch',
              spacing: 'Small',
            },
            ...(userMentions.length > 0
              ? [
                  {
                    type: 'TextBlock',
                    text: renderMentionsText(userMentions),
                    wrap: true,
                    size: 'Small',
                    spacing: 'Small',
                  },
                ]
              : []),
          ],
        },
      },
    ],
  };
 
  return simpleNotificationCard;
};