New

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

(Method)down2Excel 에 제공되는 numberFormatMode 인자를 ExportData 에도 제공하도록 추가하였습니다.

down2Excel 과 동일하게 엑셀 다운 시 실수 형태의 데이터 타입에 대한 셀 서식 설정 방식을 지정할 수 있습니다.

ValueTypeDescription
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. DefHeader, 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 New

1. StyleRowConfigExtend 관련 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. 병합된 셀을 마우스 드래그로 선택 할 때, 병합된 셀 전부가 선택되도록 변경 



Dialog Fix

ibsheet-dialog.js 1.0.41-20250703-13  버전에서 해당 패치가 이루어졌습니다.

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


 


Excel Fix

ibsheet-excel.js 1.1.22-20250703-13버전에서 해당 릴리즈가 이루어졌습니다.

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




ServerModule New

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

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

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

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

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