✨ NEW

1. (Cfg)StyleRowConfig 에 스타일행의 input을 표시하거나 숨길 수 있는 Extend 옵션 추가 

시트 상단 혹은 하단에 별도의 행을 통해 시트의 스타일을 설정할 수 있는 StyleRowConfig에 Extend 옵션이 추가되었습니다.

사용 시 처음 렌더링 시 '헤더행', '데이터행' 버튼의 펼쳐짐 여부를 설정할 수 있습니다.

Extendboolean처음 랜더링 시 '헤더행', '데이터행' 버튼의 펼쳐짐 여부 (default: true)

[사용 예시]

options.Cfg = {
  StyleRowConfig: {
    Visible: true,
    StorageType: 2,
    ServerUrl: "./ibsheet/styleInfo.jsp",
    AutoLoad: true,
    Themes: {
      Mono: "./assets/ibsheet/css/mono/main.css", // css 파일 내의 클래스를 key와 일치되도록 수정 필요
      IBGY: "./assets/ibsheet/css/gray/main.css"
    },
    
Extend : true // 처음 렌더링 시 '헤더행','데이터행' 버튼을 펼침
  }
};

[Extend: false 스타일 행 렌더링 예시]

[Extend: true 스타일 행 렌더링 예시]


2. Def의 Header, Row에 스타일 관련 설정을 할 수 있는 (Method)setCurrentStyle, getCurrentStyle, clearCurrentStyle 추가 

localStorage 등에 문자열로 저장하는 등의 작업을 위해, 현재 Def에 설정된 테마, 배경색, 글자색 및 Alternate 색상, 글자크기 정보를 문자열로 꺼내거나 컨트롤 하는 setCurrentStyle, getCurrentStyle 이 추가되었습니다.

getCurrentStyle 로 리턴되는 문자열은 현재 시트의 Def에 설정된 배경색, 글자색 및 Alternate 색상, 글자크기 정보 값을 가지고 있습니다.

localStorage, sessionStorage 에 저장한 현재 스타일 정보를 제거할 때는 clearCurrentStyle 을 사용할 수 있습니다.

* (Cfg)StorageSession 값이 0 인 경우에는 clearCurrentStyle 로 스토리지에서 관련 정보를 삭제할 수 없습니다. 사용을 위해서는 StorageSession :1 을 설정해야 합니다.

[사용 예시]

// 현재 시트의 컬럼 정보를 담고 있는 문자열을 반환
sheet.
getCurrentStyle
();
/-----------------------------------------------------------------/
var info = '{"HeaderColor":"#1d1d1b","HeaderTextSize":"14","HeaderTextColor":"#efe6e6","AlternateColor":"#dfdfe2","RowColor":"#f6f6ee","RowTextSize":"12","RowTextColor":"#211c1c","Theme":"IB"}' // getCurrentStyle에서 얻은 결과와 같은 형식
sheet.
setCurrentStyle
( info )
;
/-----------------------------------------------------------------/
options.Cfg = {
   
 StorageSession: 1  
      // 로컬 스토리지에 현재 시트 정보를 저장할 수 있고 가져올 수 있도록 설정
};
// 로컬 스토리지 혹은 세션 스토리지에 저장된 스타일 정보를 제거한다.
sheet.
clearCurrentStyle
();

CSS 참고

3. StyleRowConfig의 Extend 관련 css 변경

/* 테마 별 css 파일에 변경됨 */
/* 
.IBMain tr:has([ib-row='STYLE']) { display: flex;flex-wrap: wrap;margin: 4px 0;height: auto !important;align-items: center; }
.IBMain td[ib-row='STYLE'] { margin: 0;margin-right: 10px;padding: 0;background-color: transparent !important; }
.IBMain td[ib-row='STYLE'] label { display: flex;align-items: center; }
*/
.IBMain tr:has([ib-row='STYLE']) { display: flex;flex-wrap: wrap;margin: 4px 0 2px 0;height: auto !important;align-items: center; }
.IBMain td[ib-row='STYLE'] { margin: 0;margin-right: 10px;margin-bottom: 2px;padding: 0;background-color: transparent !important; }
.IBMain td[ib-row='STYLE'] .styleWrap { display: flex;align-items: center; }
.IBMain td[ib-row='STYLE'] .styleWrap > div:first-child { margin-right: 16px; }
.IBMain td[ib-row='STYLE'] label { display: inline-flex;align-items: center;margin: 0;margin-right: 12px;padding: 0; }
/*
.IBMain td[ib-col='handler'] div button, .IBMain td[ib-col='resetStyle'] button { margin-right: 4px;padding: 4px;border: none;background-color: #53bfca;color: white;cursor: pointer; }
*/
.IBMain td[ib-row='STYLE'] .styleWrap > div:first-child, .IBMain td[ib-col='handler'] div button, .IBMain td[ib-col='resetStyle'] button { padding: 4px;border: none;background-color: #53bfca;color: white;border-radius:1px;cursor: pointer; }
.IBMain td[ib-col='handler'] div button, .IBMain td[ib-col='resetStyle'] button { margin-right: 4px; }
/*
.IBMain td[ib-row='STYLE']:has(.divider) { position: relative;padding-right: 12px !important; }
.IBMain td[ib-row='STYLE']:has(.divider)::after { content: "";position: absolute;top: 50%;right: 0;display: block; width: 1px;height: 100%; max-height: 18px;background: #bbb; transform: translateY(-50%); }
*/
.IBMain td[ib-row='STYLE'] .divider { position: relative; }
.IBMain td[ib-row='STYLE'] .divider::after { content: "";position: absolute;top: 50%;right: 0;display: block; width: 1px;height: 100%; max-height: 18px;background: #bbb; transform: translateY(-50%); }
.IBMain td[ib-col='resetStyle']::after { height: 18px; }
.IBMain td[ib-row='STYLE'] .styleWrap > div:first-child.extend { margin-right: 10px; }
.IBMain td[ib-row='STYLE'] .styleWrap > div:first-child::after {content: '';display: inline-block;position: absolute;top: 50%;left: calc(100% - 12px);width: 0;height: 0;border-top: 5px solid transparent;border-bottom: 5px solid transparent;border-left: 4px solid #53bfca;transform: translateY(-50%); }
.IBMain td[ib-row='STYLE'] .styleWrap > div:first-child.extend::after { display: none; }
⚙ FIXED

1. showMessage가 호출되고 이후 피벗테이블을 만든 경우, 시트의 클릭이 불가능한 문제 수정 

2. Foot행의 병합된 셀에 NoChanged 속성이 적용되지 않는 문제 수정 

3. 찾기 다이얼로그에서 " 특수문자를 검색한 후 loadSearchData로 데이터를 다시 조회할 경우 알림 메시지가 뜨던 현상 수정 

4. create 시 입력한 데이터가 없는 경우, reload 호출 후 시트가 그려지지 않는 문제 수정 

5. Menu의 Edit:1 사용시 생성되는 input 으로 키보드 방향키를 통해 포커스가 가도록 수정 

6. MergeCellsMatch를 설정하고 onAfterChange 이벤트에서 setCheck 호출 시 에러가 발생하던 문제 수정 

7. 병합된 셀을 마우스 드래그로 선택 할 때, 병합된 셀 전부가 선택되도록 변경 

✨ NEWSERVERMODULE서버모듈 2.0.0.jar

1. ServerModule 2.0.0 버전이 릴리즈 되었습니다.

반드시 버전에 맞는 jsp가 필요합니다. (1.x.x 버전에서 서버모듈 jar 파일만 교체하면 오류발생함)

2. 시트8 서버모듈 패키지명 변경 

sheet7과 sheet8 을 함께 사용하는 경우, 두 개의 서버모듈 패키지명이 동일하여 가끔 반대의 서버모듈이 사용되어 오류가 났던 현상이 있었습니다. 이 현상을 해결하기 위해 sheet8 서버모듈 패키지명을 sheet7과 다르게 변경하였습니다.

패키지명 변경으로, 반드시 관련 jsp 파일도 함께 적용해야 정상적으로 서버모듈을 사용할 수 있습니다.

⚙ FIXEDDIALOGibsheet-dialog.js · 1.0.41-20250703-13

1. 피벗 다이얼로그에서 검색 시 숨겨지는 항목이 많을 경우 빈 공간이 생기는 현상 수정 

⚙ FIXEDEXCELibsheet-excel.js · 1.1.22-20250703-13

1. 합계행이 상단에 위치한 경우 엑셀 파일 다운로드 시 합계행의 높이가 잘못 계산되는 문제 수정