📁 Showcase
Backend

Backend

1. Variables

ensure var VarSequencePasswordId kind: sequence 
  modules: ["LastPass"] 
  deploy: fixedOnDeploy 
  value: 100

ensure var VarSetOfTextPasswordCategory kind: setOfText   
  modules: ["LastPass"] 
  deploy: fixedOnDeploy 
  value: "<root>
      <node key='keyWifi'>Wi-Fi</node>
      <node key='keyNetBanking'>Banking</node>
      <node key='keyOther'>Other</node>
    </root>"

ensure var VarSetOfTextBankingType kind: setOfText
  modules: ["LastPass"]
  deploy: fixedOnDeploy
  value: "<root>
      <node key='keyBankCard'>Bank Card</node>
      <node key='keyBankAccount'>Bank Account</node>
      <node key='keyBanking'>Net Banking</node>
    </root>"

ensure var VarSetOfTextCardType kind: setOfText 
  modules: ["LastPass"]
  deploy: fixedOnDeploy
  value: "<root>
      <node key='keyVisaCard'>Visa Card</node>
      <node key='keyMastercard'>Master Card</node>
      <node key='keyRuPayCard'>RuPay Card</node>
      <node key='keyDiscoverCard'>Discover Card</node>
    </root>"

ensure var VarPasswordIdTextPattern kind: text
  modules: ["LastPass"]
  deploy: fixedOnDeploy
  value: "PID-${P}"

ensure var VarPasswordSequence kind: sequence deploy: fixedOnDeploy value: 100

ensure var VarTextPatternPasswordId kind: text 
  modules: ["LastPass"] 
  deploy: fixedOnDeploy
  value: "PID-${P}"

2. PasswordSheet

ensure spreadsheet: PasswordSheet
withFields: [
    "Id",
    "Member",
    "Category*",
    "Title",
    "BankingType",
    "BankName",
    "CardType"
  ]
ofTypes: [identifier, pickUser, pickText, text, pickText, text, pickText]
modules: ["LastPass"]
readRoleSet: [Member]
insertRoleSet: [Member]
updateRoleSet: [Member]
removeRoleSet: [Member]

ensure form EntityPassword
  modules: ["LastPass"]

ensure section: Details
ensure field Id
  textPatternVar: {
      'var': 'VarTextPatternPasswordId',
      'paramSet': [
        '${var:VarSequencePasswordId}'
      ]
    }
  disabled: true
  permissionMatrix: {
      'defaultPermission': 'invisible'
    }
  setOnSend: true
ensure field Member
  disabled: true
  permissionMatrix: {
      'defaultPermission': 'invisible'
    }
  roleDataSource: [Member]
  defaultValue: $Self
ensure field Category sourceVar: VarSetOfTextPasswordCategory
ensure field BankingType sourceVar: VarSetOfTextBankingType
ensure field BankName 
ensure field CardType sourceVar: VarSetOfTextCardType

// section, Card
ensure section: Card
ensure field CardNumber kind: text
ensure field Expirydate kind: date defaultValue: "now"
ensure field HolderName kind: text
ensure field PIN kind: text
ensure field CVV kind: text

// section, BankAccount
ensure section: BankAccount
ensure field AccountNumber kind: text 
ensure field HolderName1 kind: text 
ensure field BranchName kind: text
ensure field BranchCode kind: text
ensure field IFSCCode kind: text
ensure field Address kind: text

// composite, section, NetBanking
ensure section: NetBanking
ensure field UserName kind: text 
ensure field TransactionPIN kind: text

// composite, section, WiFi
ensure section: WiFi
ensure field WiFiTitle kind: text
  helperText: "e.g., Home Wi-Fi, Office Wi-Fi"
ensure field NetworkName kind: text 

// composite, section, Other
ensure section: Other
ensure field OtherUserName kind: text
ensure field OtherUrl kind: text

// composite, section, Password
ensure section: Password
ensure field Password kind: text

// composite, section, Notes
ensure section: Notes
ensure field Divider kind: divider dividerKind: thick
ensure field Notes kind: paragraph flexHeight: true

3. Visibility Rules

Define rules for conditional visibility .

// visibilityRule, Card
ensure visibilityRule Card
  condition: "<root>
      <stmt>Details.BankingType == ${d:BankingType.keyBankCard}</stmt>
    </root>"
ensure actionMapIfTrue CardVisible
  comp: Card
  visibilityAction: visible
  visibilityActionOn: component
ensure actionMapIfTrue CardTypeVisible
  comp: CardType
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfTrue PasswordVisible
  comp: Password.Password
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfFalse CardHide
  comp: Card
  visibilityAction: hidden
  visibilityActionOn: component
ensure actionMapIfFalse CardTypeHide
  comp: Details.CardType
  visibilityAction: hidden
  visibilityActionOn: field

// visibilityRule, BankAccount
ensure visibilityRule BankAccount
  condition: "<root>
      <stmt>Details.BankingType == ${d:BankingType.keyBankAccount}</stmt>
    </root>"
ensure actionMapIfTrue BankAccountVisible
  comp: BankAccount
  visibilityAction: visible
  visibilityActionOn: component
ensure actionMapIfTrue PasswordVisible
  comp: Password
  visibilityAction: visible
  visibilityActionOn: component
ensure actionMapIfFalse BankAccountHide
  comp: BankAccount
  visibilityAction: hidden
  visibilityActionOn: component

// visibilityRule, WiFi
ensure visibilityRule WiFi
  condition: "<root>
      <stmt>Details.Category == ${d:Category.keyWifi}</stmt>
    </root>"
ensure actionMapIfTrue WiFiVisible
  comp: WiFi
  visibilityAction: visible
  visibilityActionOn: component
ensure actionMapIfTrue PasswordVisible
  comp: Password
  visibilityAction: visible
  visibilityActionOn: component
ensure actionMapIfFalse WiFiHide
  comp: WiFi
  visibilityAction: hidden
  visibilityActionOn: component

// visibilityRule, Other
ensure visibilityRule Other
  condition: "<root>
      <stmt>Details.Category == ${d:Category.keyOther}</stmt>
    </root>"
ensure actionMapIfTrue OtherVisible
  comp: Other
  visibilityAction: visible
  visibilityActionOn: component
ensure actionMapIfTrue PasswordVisible
  comp: Password
  visibilityAction: visible
  visibilityActionOn: component
ensure actionMapIfFalse OtherHide
  comp: Other
  visibilityAction: hidden
  visibilityActionOn: component

// visibilityRule, V1
ensure visibilityRule V1
  condition: "<root>
      <stmt>Details.Category has changed</stmt>
    </root>"
ensure actionMapIfTrue BankingTypeClear
  comp: Details.BankingType
  visibilityAction: clear
  visibilityActionOn: field

// visibilityRule, SelectOption
ensure visibilityRule SelectOption
  condition: "<root>
      <stmt>Details.Category == ${d:Category.keyNetBanking}</stmt>
    </root>"
ensure actionMapIfTrue BankingTypeVisible
  comp: Details.BankingType
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfTrue BankNameVisible
  comp: Details.BankName
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfFalse BankingTypeHide
  comp: Details.BankingType
  visibilityAction: invisible
  visibilityActionOn: field
ensure actionMapIfFalse BankNameHide
  comp: Details.BankName
  visibilityAction: invisible
  visibilityActionOn: field

// visibilityRule, Netbanking
ensure visibilityRule Netbanking
  condition: "<root>
      <stmt>Details.BankingType == ${d:BankingType.keyBanking}</stmt>
    </root>"
ensure actionMapIfTrue NetBankingVisible
  comp: NetBanking
  visibilityAction: visible
  visibilityActionOn: component
ensure actionMapIfTrue PasswordVisible
  comp: Password
  visibilityAction: visible
  visibilityActionOn: component
ensure actionMapIfFalse NetBankingHide
  comp: NetBanking
  visibilityAction: hidden
  visibilityActionOn: component