Shell 레이아웃 영역
Shell의 이름 있는 영역들, 각 contribution이 닿는 영역, 그리고 손댈 수 없는 호스트 소유 크롬.
Shell 레이아웃 영역
App 화면과 메뉴, 위젯을 어디에 등록할지 안내합니다. 아래 표에서 목적에 맞는 확장 방식을 고른 뒤 App 화면 만들기로 구현을 시작하세요. 전체 배치는 Core가 제공하고 App은 그 안에 들어갈 내용을 작성합니다.
추가할 기능에 맞는 위치 선택
| 만들 기능 | 표시 위치 | 사용할 계약 또는 안내 |
|---|---|---|
| Resource 화면 | Work Desktop | 생성된 Resource 모듈의 ShellResourceContribution |
| 맞춤 App 화면 | Work Desktop | Manifest의 pageElementsExtras() |
| 메뉴 항목 | App Menu | App Menu 목적지 추가 |
| App 설정 | App Menu → Settings | 설정 페이지 추가 |
| 대시보드 위젯 | 사용자의 대시보드 | Dashboard Widget 추가 |
| 기존 화면 안의 콘텐츠 | 등록된 슬롯 | Slot Widget 추가 |
| 검색할 수 있는 목적지 | Command Palette | Command Palette 검색 |
사용 가능한 App마다 Core가 App Launcher 타일을 제공합니다. 상단 바, 보조 패널, 상태 바는 호스트가 관리하므로 App에서 교체하지 않습니다.
화면과 작업 영역 구성
Route Surface는 URL이나 작업 탭에 연결되는 화면입니다. 그 안의 Work Surface가 본문과 선택적인 Inspector를 배치합니다. 어떤 레코드를 선택했는지, Inspector에 무엇을 보여줄지는 해당 페이지가 관리합니다.
조직 범위가 있는 목록은 페이지 프레임의 organizationScope 슬롯에 NxOrganizationTargetSelector를 배치하세요. useOrganizationListScope에는 해당 페이지의 정확한 읽기 권한을 전달합니다. 표준 공통 데이터 화면에는 선택기가 필요하지 않습니다. 맞춤 관계나 여러 권한을 함께 다루는 페이지는 자체 URL 어댑터를 유지할 수 있습니다. 상세·편집 화면에는 레코드에 저장된 소유자를 표시합니다.
조직 범위는 그 페이지의 조회 조건이며 ResourceTable의 상태·유형·날짜 필터와 구분합니다. 지원하는 범위와 요청 파라미터는 테넌트와 컨텍스트에서 확인하세요.
현재 탭에 맞는 메뉴 표시
사이드 메뉴 영역 하나가 현재 포커스된 작업 탭에 따라 내용을 바꿉니다.
| 경로 | 표시하는 메뉴 |
|---|---|
/apps/{key}/* | 해당 App의 메뉴 |
/settings/* | 호스트 설정 |
/workbench/{root}/* | 선택한 Workbench 메뉴 |
/content/* | Information |
App 메뉴 항목에는 contextId: 'app'을 지정합니다. App 설정도 이 메뉴에 둡니다. 경로를 등록했다고 메뉴가 생기지는 않으며, 메뉴를 선언한 뒤에는 그 목적지의 화면도 구현해야 합니다.
메뉴 접기와 좁은 화면의 드로어 처리는 호스트가 맡습니다. App은 화면 크기에 따라 별도의 경로나 Contribution을 만들 필요가 없습니다.
등록된 슬롯에 위젯 연결
Slot Widget은 호스트가 지원하는 슬롯 키와 API 버전이 일치할 때 표시됩니다. Descriptor를 선언하고 App 프런트엔드 진입점에서 동일한 이름으로 컴포넌트를 등록하세요. 슬롯 목록과 구현 절차는 Slot Widget 추가에 있습니다.
My Profile의 새 위젯은 선택적인 workContext를 포함한 ProfileSlotPropsV2를 사용합니다. 기존 슬롯에서는 V1도 지원하지만 Organization과 Documents 슬롯은 V2가 필요합니다. 본인 프로필이므로 임의의 대상자 식별자를 받지 않습니다.
Approval 작성 폼은 별도의 버전 계약을 사용합니다. 구현 전에 전자 결재을 확인하세요.
동작 확인
App 메뉴와 직접 URL 입력으로 같은 화면을 열어 보세요. 두 경우 모두 Shell 안에서 화면이 표시되어야 합니다. 목록에서 조직 범위를 바꾸면 해당 페이지의 조회가 바뀌고, 레코드를 선택하면 그 페이지의 Inspector가 갱신되어야 합니다.
화면이나 위젯이 없다면 선언한 목적지와 컴포넌트 등록을 먼저 확인하세요. 이어서 App 라이프사이클과 현재 사용자의 권한을 점검합니다.