GNUI Start your next web project with GNUI.
Gn.util

Alert

/scss/components/alert.scss
v.0.1.0 javascript

기본 Alert 확장

  • 가로 사이즈 400이하 일 때 버튼은 가운데 정렬 선택
  • 가로 사이즈 400이상 일 때 버튼은 오른쪽 정력 선택
  • 백그라운드 컬러가 적용된 Alert은 투명 버튼 사용
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
<div class="gn-alert" style="width: 400px">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  <span class="gn-icon is-close">
    <i class="fas fa-times"></i>
  </span>
  <div class="alert-controls">
    <button type="button" class="gn-button">확인</button>
    <button type="button" class="gn-button is-cancel">취소</button>
  </div>
</div>
<div class="gn-alert is-primary" style="width: 500px">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  <span class="gn-icon is-close">
    <i class="fas fa-times"></i>
  </span>
  <div class="alert-controls has-text-right">
    <button type="button" class="gn-button is-outline is-trans">확인</button>
    <button type="button" class="gn-button is-cancel">취소</button>
  </div>
</div>

기본 사용

Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
<div class="gn-alert">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  <span class="gn-icon is-close">
    <i class="fas fa-times"></i>
  </span>
</div>

크기

Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
<div class="gn-alert is-small">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  <span class="gn-icon is-close">
    <i class="fas fa-times"></i>
  </span>
</div>
<div class="gn-alert is-normal">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  <span class="gn-icon is-close">
    <i class="fas fa-times"></i>
  </span>
</div>
<div class="gn-alert is-medium">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  <span class="gn-icon is-close">
    <i class="fas fa-times"></i>
  </span>
</div>
<div class="gn-alert is-large">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  <span class="gn-icon is-close">
    <i class="fas fa-times"></i>
  </span>
</div>

색상

  • 백그라운드 컬러 알림창 이용 시 가로 사이즈 400이상 넘지 않는다.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
<div class="gn-alert is-success" style="width: 400px">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  <span class="gn-icon is-close">
    <i class="fas fa-times"></i>
  </span>
</div>
<div class="gn-alert is-warning" style="width: 400px">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  <span class="gn-icon is-close">
    <i class="fas fa-times"></i>
  </span>
</div>
<div class="gn-alert is-danger" style="width: 400px">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  <span class="gn-icon is-close">
    <i class="fas fa-times"></i>
  </span>
</div>
<div class="gn-alert is-info" style="width: 400px">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  <span class="gn-icon is-close">
    <i class="fas fa-times"></i>
  </span>
</div>

생성 옵션

  <button class="gn-button new-alert">Alert 예제보기</button>
  Gn.create('alert', {
    textSets : { alertText: 'alert이 생성됩니다.' },
    hasClose: false,
    hasConfirm: true,
    hasCancel: true,
    onConfirm: function(){
      console.log('확인 되었습니다.')
    },
    onClose: function(){
      console.log('취소 되었습니다.')
    }
  });
name type default description
textSets alertText string alert에 표기할 문구
confirm string 확인 확인버튼에 표기할 문구
cancel string 취소 취소버튼에 표기할 문구
width number|string 400 가로 사이즈
color string 'success','warning','danger','info','cancel','dark','link','trans','secondary','mono'
size string 'small','normal','medium','large'
hasClose boolean true 우측상단 닫기버튼 출력여부
hasConfirm boolean false 확인버튼 출력 여부
hasCancel boolean false 취소버튼 출력 여부
onConfirm function alert 확인버튼 클릭 시 수행될 이벤트
onClose function alert 창을 닫을때 수행될 이벤트

메소드

name return description
close() void 얼럿창을 닫는다.

Calendar

/scss/components/calendar.scss
v.0.1.0 javascript

생성 옵션

  • Calendar 단일 컴포넌트로 사용되거나, DatePicker의 type이 datetime 또는 date인 경우에 사용됨
<div class="new-calendar is-float-left"></div>
<div class="new-calendar1 is-float-left"></div>
  Gn.create('calendar', {
    target: '.new-calendar',
    value: '2021-04-01',
    onSelect: function (v) {
      console.log('선택한 날짜: '+ v)
    },
    max: '2021-04-30',
    min: '2021-03-01'
  });
  Gn.create('calendar', {
    target: '.new-calendar1',
    onSelect: function (v) {
      console.log('선택한 날짜: '+ v)
    },
    dateType: 'datetime',
    max: '1M',
    min: '-1M'
  });
name type default description
target string calendar 생성 타겟
value string | Date now 초기 날짜
dateType string date date, datetime
locale 'ko'|'en' ko 표기문구 언어
onSelect function(value) 날짜 선택 시 발생 이벤트

메소드

name return description
setDate(date) void 날짜 값을 변경한다.

Chart

/scss/components/chart.scss
v.0.1.0 javascript
<div class="lineChart"></div>
<div class="splineChart"></div>
name type value description
target string 차트를 생성할 대상의 선택자(selector)
type string line 라인차트
series Array name, data 로 구성된 object array
xaxis type string 'datetime' 가로축 분류 데이터 타입
categories array 가로축 분류 데이터
name type value description
target string 차트를 생성할 대상의 선택자(selector)
type string line 라인차트
series Array name, data 로 구성된 object array
xaxis type string 'datetime' 데이터 분류 타입
categories array 데이터 분류
Gn.create('chart', {
  target: '.lineChart',
  type: 'line',
  series: [{
    name: 'data1',
    data: [30, 200, 100, 400, 150, 250],
  },{
    name: 'data2',
    data: [50, 20, 10, 40, 15, 25]
  }],      
  xaxis: {
    type: 'datetime',
    categories: ['2018-09-19T00:00:00.000Z', '2018-09-19T01:30:00.000Z', '2018-09-19T02:30:00.000Z', '2018-09-19T03:30:00.000Z', '2018-09-19T04:30:00.000Z', '2018-09-19T05:30:00.000Z']
  }
});
Gn.create('chart', {
  target: '.splineChart',
  type: 'spline',
  series: [{
    name: 'data1',
    data: [30, 200, 100, 400, 150, 250],
  }],
  xaxis: {
    type: 'datetime',
    categories: ['2018-09-19T00:00:00.000Z', '2018-09-19T01:30:00.000Z', '2018-09-19T02:30:00.000Z', '2018-09-19T03:30:00.000Z', '2018-09-19T04:30:00.000Z', '2018-09-19T05:30:00.000Z']
  }
});
<div class="columnChart"></div>
<div class="barChart"></div>
name type value description
target string 차트를 생성할 대상의 선택자(selector)
type string column 컬럼차트
series Array name, data 로 구성된 object array
chart stacked boolean false 그래프 누적 여부
name type value description
target string 차트를 생성할 대상의 선택자(selector)
type string bar 바 차트
series Array name, data 로 구성된 object array
xaxis categories array 데이터 분류
 Gn.create('chart', {
    target: '.columnChart',
    type: 'column',
    chart: {
      stacked: true
    },
    series: [{
      name: 'data1',
      data: [30, 200, 100, 400, 150, 250],
    },{
      name: 'data2',
      data: [50, 20, 10, 40, 15, 25]
    }]
  });
Gn.create('chart', {
    target: '.barChart',
    type: 'bar',
    series: [{
      data: [30, 200, 100, 400, 150, 250],
    }],
    xaxis: {
      categories: ['data1','data2','data3','data4','data5','data6']
    }
  });
<div class="pieChart"></div>
<div class="donutChart"></div>

name type value description
target string 차트를 생성할 대상의 선택자(selector)
type string pie 파이차트
series Array number array
labels Array string array

name type value description
target string 차트를 생성할 대상의 선택자(selector)
type string donut 도넛차트
series Array number array
labels Array string array

Gn.create('chart', {
  target: '.pieChart',
  type: 'pie',
  series: [30, 200, 100, 400],
  labels: ['data1','data2','data3','data4']
});
Gn.create('chart', {
  target: '.donutChart',
  type: 'donut',
  series: [30, 200, 100, 400, 150, 250],
  labels: ['data1','data2','data3','data4','data5','data6']
});
<div class="radialChart"></div>
<div class="gaugeChart"></div>

name type value description
target string 차트를 생성할 대상의 선택자(selector)
type string gauge 게이지차트
series Array number array
labels Array string array

name type value description
target string 차트를 생성할 대상의 선택자(selector)
type string radial 래디얼차트
series Array number array
labels Array string array

Gn.create('chart', {
  target: '.gaugeChart',
  type: 'gauge',
  series: [30],
  labels: ['data1']
});
Gn.create('chart', {
  target: '.radialChart',
  type: 'radial',
  series: [30],
  labels: ['data1']
});

Datagrid

/scss/components/datagrid.scss
v.0.1.0 javascript

기본 사용

  • 데이터 테이블
<div class="new-grid"></div>

<div style="width: 100%; height: 100px; overflow-x: auto; margin-top: 20px;">
  <div class="new-grid2"></div>
</div>

<div style="width: 100%; overflow-x: auto; margin-top: 20px;">
  <div class="new-grid3"></div>
</div>

<div style="width: 100%; margin-top: 20px;">
  <div class="new-grid4"></div>
</div>
Gn.create('datagrid', {
  target: '.new-grid',
  headers: [
    {
      label: 'no',
      key: 'number',
      onSelect: function() {
        console.log(arguments)
      },
      template: function(k, d) {
        return '<span>' + d[k] + '</span>'
      },
      draggable: true,
      sortable: true,
      sort: 'asc'
    },
    {
      label: '제목',
      key: 'title',
      style: {
        width: '250px'
      },
      className: 'has-text-right',
      draggable: true,
      bodyClass: 'has-text-left',
      sortable: true
    },
    {
      label: '날짜',
      key: 'date',
      style: {
        width: '150px'
      },
      className: 'has-text-center',
      bodyClass: 'has-text-left'
    }
  ],
  data: [
    {
      number: '1',
      title: '하나',
      date: '2020-09-19',
      desc: 'hello, world',
      child: [
        {
          number: '1-1',
          title: '1-하나',
          date: '2020-09-19'
        },
        {
          number: '1-2',
          title: '1-둘',
          date: '2020-09-19',
          desc: 'hello, world',
          child: [
            {
              number: '1-2-1',
              title: '1-둘-1',
              date: '2020-09-19',
              desc: 'hello, world',
              child: [
                {
                  number: '1-2-1-1',
                  title: '1-둘-1-1',
                  desc: 'hello, world',
                  date: '2020-09-19'
                }
              ]
            }
          ]
        }
      ]
    },
    {
      number: '2',
      title: '둘',
      date: '2020-09-19',
      desc: 'hello, world'
    }
  ],
  onSort: function(column) {
    console.log('column', column)
  },
  onDragEnd: function(column, columns) {
    console.log(column, columns)
  },
  onToggle: function(type, row, n) {
    console.log(type, row, n)
        // 이렇게 하면 펼쳐질때마다 해당 로우에 2개의 자식을 바인딩한다.
        // type === 'expanded' && this.addChild(n, [{
        //   number: '000',
        //   title: '추가된 자식1',
        //   date: '2020-02-02'
        // },{
        //   number: '001',
        //   title: '추가된 자식2',
        //   date: '2020-02-02'
        // }]) 
  },
  onCheckAll: function(ggg) {
    console.log('ggg', ggg)
  },
  onDoubleClick: function(e) {
    console.log('dbclick', e)
  },
  hasCheck: true,
  hasDelete: true
})
Gn.create('datagrid', {
  target: '.new-grid2',
  headers: [
    {
      label: 'no',
      key: 'number',
      onSelect: function () {
        // eslint-disable-next-line prefer-rest-params
        console.log(arguments);
      },
      template: function (k, d) {
        return '<span>' + d[k] + '</span>';
      },
      draggable: true,
      sortable: true,
      sort: 'asc'
    },
    {
      label: '제목',
      key: 'title',
      style: {
        width: '250px'
      },
      className: 'has-text-right',
      draggable: true,
      bodyClass: 'has-text-left',
      sortable: true
    },
    {
      label: '날짜',
      key: 'date',
      style: {
        width: '150px'
      },
      className: 'has-text-center',
      bodyClass: 'has-text-left'
    }
  ],
  data: [
    {
      number: '1',
      title: '하나',
      date: '2020-09-19',
      desc: 'hello, world',
      child: [
        {
          number: '1-1',
          title: '1-하나',
          date: '2020-09-19'
        },
        {
          number: '1-2',
          title: '1-둘',
          date: '2020-09-19',
          desc: 'hello, world',
          child: [
            {
              number: '1-2-1',
              title: '1-둘-1',
              date: '2020-09-19',
              desc: 'hello, world',
              child: [
                {
                  number: '1-2-1-1',
                  title: '1-둘-1-1',
                  desc: 'hello, world',
                  date: '2020-09-19'
                }
              ]
            }
          ]
        }
      ],
      color: 'is-danger-light'
    },
    {
      number: '2',
      title: '둘',
      date: '2020-09-19',
      desc: 'hello, world'
    }
  ],
  hasHeader: false,
  hasCheck: true,
  hasDelete: true,
  textSets: {
    deleteConfirmMessage: '파일을 삭제하시겠습니까?'
  },
  // onDelete 에서 false 를 반환하면 해당 행 삭제를 취소할 수 있다.
  onDelete: (data, index) => {
    console.log(data, index);
    // 예) 특정 조건에 따라 삭제 취소
    // if (index === 0) {
    //   return false;
    // }
  }
})
Gn.create('datagrid', {
  target: '.new-grid3',
  headers: [
    {
      label: 'row data numbers',
      key: 'number',
      style: { width: '50px' },
      sortable: true,
      draggable: true,
      template: function (k, d) {
        return '<span>' + d[k] + '</span>';
      }
    },
    {
      label: '제목',
      key: 'title',
      sortable: true,
      draggable: true,
      template: function (k, d) {
        return '<span>' + d[k] + '</span>';
      }
    },
    {
      label: '날짜를 표시하는 컬럼입니다',
      key: 'date',
      style: {
        width: '100px'
      },
      tipField: 'desc'
    },
    {
      label: '헤더명도길어집니다',
      key: 'desc',
      style: { width: '50px' }
    }
  ],
  data: (callback, ui) => {
    return callback([
      {
        number: '1',
        title: '하나',
        date: '2020-09-19'
      },
      {
        number: '232342333',
        title: 'Lorem labore culpa voluptate proident ad et id nostrud excepteur incididunt ut officia et ullamco.',
        date: '2020-09-19',
        desc: 'Voluptate enim culpa anim dolor magna excepteur ullamco id aliquip consequat ullamco voluptate consectetur.',
        ordered: false,
        limited: 0,
        one: 'one',
        two: 2,
        three: {
          hello: 'p',
          ordered: false,
          limited: 0,
          one: 'one',
          two: 2,
          desc: 'hhhhhhh'
        },
        checked: true
      }
    ]);
  },
  sort: function(column) {
    console.log('column', column)
  },
  onSelect: function(row, index) {
    console.log('row', row, index);
    this.showDetail(index, null, ['number', 'title', 'date', 'desc', 'ordered', 'limited', 'one', 'two', 'three', 'checked']);
  },
  onDoubleClick: function(e) {
    console.log('dbclick', e)
  },
  isEllipsis: true,
  hasCheck: true,
  hasOrder: true,
  textSets: {
    orderLabel: '이동'
  },
  paginator: {
    rows: 30
  },
  onChange: updatedData => {
    console.log(updatedData)
  }
})
Gn.create('datagrid', {
  target: '.new-grid4',
  orientation: 'horizontal',
  orientationOptions: {
    columns: 'auto-fit',
    minWidth: '240px'
  },
  hasHeader: true,
  hasCheck: true,
  hasDelete: true,
  headers: [
    {
      label: '이름',
      key: 'name'
    },
    {
      label: '부서',
      key: 'team'
    },
    {
      label: '상태',
      key: 'status',
      template: function (k, d) {
        return '<span class="tag is-info">' + d[k] + '</span>';
      }
    }
  ],
  data: [
    {
      name: '홍길동',
      team: '플랫폼개발',
      status: 'ACTIVE'
    },
    {
      name: '김철수',
      team: '디자인시스템',
      status: 'PENDING'
    },
    {
      name: '이영희',
      team: 'QA',
      status: 'DONE'
    },
    {
      name: '박민수',
      team: '프론트엔드',
      status: 'ACTIVE'
    },
    {
      name: '최지우',
      team: '서비스기획',
      status: 'REVIEW'
    }
  ],
  textSets: {
    deleteConfirmMessage: '카드를 삭제하시겠습니까?'
  }
})

가로 모드 동작

  • orientation: 'horizontal'은 최상위 row만 카드형으로 렌더링한다.
  • childField 기반 하위 데이터는 가로 모드에서 렌더링하지 않는다.
  • orientationOptions.columns: 'auto-fit'이고 gap이 0, '0', '0px', '' 또는 미지정이면 내부적으로 5px gap을 적용한다.
  • 카드 경계 연결 규칙은 gap: 0일 때만 적용되며, gap > 0이면 각 카드가 독립 border를 가진다.
name type default description
target string 그리드 생성 타겟
headers label string 컬럼 헤더 텍스트
key string data의 항목에 매치되는 키값
className string 클래스 명
bodyClass string [headers.className] 헤더와 바디에 별개의 스타일을 적용할 경우 클래스 명을 추가한다
style string inline style
sortable boolean false 정렬 가능여부
draggable boolean false 넓이 조정 드래그 가능여부
sort asc | desc 초기 정렬표시 값
isHidden boolean 컬럼 노출여부
template function(key, row) 데이터를 표시할 템플릿
detailTemplate function(key, row) 상세 데이터를 표시할 템플릿
onSelect function(row) 데이터 셀 클릭 이벤트
tipField string 데이터 셀의 title로 표기할 필드 키값
data array | Function(callback, options) [] key: value로 이루어진 그리드 데이터
isOpened:true => 열린상태로 표시
isSelectedRow: true => 활성화 된 상태로 표시
noCheck: true => 체크박스 표시안함
isChecked: true => 체크박스 체크된 상태로 표시
disabled: true => 체크박스 disable 상태로 표시
color:is-warning-light => 행의 색 변경
textSets noData string No records available. 데이터가 없을 경우 출력 메시지
orderLabel string 이동버튼 헤더표시문구
deleteLabel string 삭제버튼 헤더표시문구
deleteConfirmMessage string 삭제 확인 창 표시문구 - 삭제 버튼 클릭시 확인 창 출력
childField string child 자식 데이터를 가지고 있는 항목 키값. 세로 모드에서만 트리형 하위 row 렌더링에 사용된다.
hasCheck boolean false 1열 체크박스 출력 여부
hasOrder boolean false 이동버튼 생성 여부
hasDelete boolean false 삭제버튼 생성 여부
hasHeader boolean true 헤더 생성 여부
orientation 'vertical' | 'horizontal' 'vertical' 그리드 출력 방향. horizontal이면 최상위 row만 카드형으로 출력하며 childField 기반 하위 데이터는 렌더링하지 않는다.
orientationOptions columns number | 'auto-fit' 1 가로 모드 카드 열 수 또는 자동 배치 방식. orientation: 'horizontal'일 때 적용된다. auto-fit은 실제 줄 배치를 브라우저가 결정한다.
gap number | string 0 가로 모드 카드 간격. CSS grid gap 값으로 적용된다. columns: 'auto-fit'일 때는 0 계열 값 또는 미지정이면 내부적으로 5px를 적용한다. gap: 0일 때만 카드 경계 연결 규칙을 사용한다.
minWidth number | string 240 columns: 'auto-fit'일 때 사용할 최소 카드 폭.
readonly boolean false 읽기전용 여부 - 이동(hasOrder), 삭제(hasDelete) 버튼 미생성
checkCapturing boolean true 상위항목 체크 시 하위항목 함께 선택여부
isEllipsis boolean false 줄바꿈 불가 설정여부 (headers의 column 데이터에 width가 설정된 경우에만 적용된다)
bodyHeight string 'auto' 데이터 출력영역 높이 설정, 높이가 설정값을 넘게되면 스크롤이 생긴다.
fixHeader Boolean false 그리드 영역에서 헤더를 고정시킨다.
데이터를 감싸는 객체에 높이가 고정되어야 한다.
fixFooter Boolean false 화면영역에서 푸터를 고정시킨다.
paginator rows number 30 한 페이지에 처리될 데이터 갯수
현재는 데이터 연동이 callback으로 된 경우에만 동작
siblingPages number 10 페이지 숫자표시 카운트
onSort function 데이터 정렬 수행 시 발생이벤트
onSelect function row 클릭 시 수행 이벤트
onDoubleClick function row 더블 클릭 시 수행 이벤트
onToggle function 자식 행이 있는 항목을 열고닫을때 수행 이벤트
onCheckAll function(flag) CheckAll 이벤트
onCheck function(row, event) Check 이벤트
onDragEnd function(column, columns) 넓이조정 완료 시 발생이벤트
onChange function(updatedData) 이동, 삭제 등의 데이터 변경이 있는 경우, 변경된 데이터를 가져오기 위한 이벤트핸들러
onDelete function(deletedData, index) deletedData, index 를 인자로 받으며, false 를 반환하면 해당 행 삭제를 취소한다. 삭제 버튼 클릭 시 삭제 대상 데이터와 인덱스를 받을 수 있는 이벤트핸들러
onChange 보다 먼저 동작하며, onDelete 에서 false 를 반환하면 실제 삭제 및 onChange 호출이 수행되지 않는다.

메소드

name return description
reRender({headers: Array, data?: Array, hasCheck?:boolean}) void 변경된 값으로 그리드를 다시 렌더링 한다. 컬럼 헤더까지 바뀌는 경우 사용한다.
resetData(data: Array) void 데이터를 변경한다.
addChild(index: number, data: Array) void index번째 row의 child로 data를 추가한다. 세로 모드에서만 지원한다.
addRow(data: Array) void 마지막 데이터 하단에 data를 추가한다. 세로 모드에서만 지원한다.
expand(index: number) void index번째 row의 child를 확장한다. 세로 모드에서만 지원한다.
collapse(index: number) void index번째 row의 child 데이터를 축소한다. 세로 모드에서만 지원한다.
getChecked() array 체크박스가 있는 경우(hasCheck: true) 체크된 데이터를 리턴한다
hideCols(keys: Array) void 파라메터 배열에 전달된 key에 해당하지 않는 컬럼만 보여준다
showCols(keys: Array) void 파라메터 배열에 전달된 key에 해당하는 컬럼만 보여준다
showDetail(index: number, headerKeys?: string[], rawDataKeys?: string[]) void headerKeys로 넘겨진 항목들의 상세정보를 하단에 표시한다. rawDataKeys를 넘기면 원본 데이터도 함께 표시한다. 세로 모드에서만 지원한다.
showAll() void hideCols, showCols 수행 시 숨김처리된 컬럼을 모두 보여준다
selectRow(index: number, rowData?: any) void index기반 row가 선택되도록 한다.

Datalist

/scss/components/datalist.scss
v.0.1.0 javascript

기본 사용

  • 데이터 테이블
<div class="new-list is-border"></div>

<div style="width: 100%; height: 200px; overflow-x: auto">
  <div class="new-list2 is-border"></div>
</div>
Gn.create('datalist', {
  target: '.new-list',
  headers: [
    {
      label: 'no',
      key: 'number',
      bodyClass: 'has-text-left',
      style: {
        width: '50px',
        'text-align': 'center'
      }
    },
    {
      label: '제목',
      key: 'title',
      className: 'main-title'
    },
    {
      label: '날짜',
      key: 'date'
    },
    {
      label: '설명',
      key: 'desc'
    },
    {
      label: '기타',
      key: 'etc'
    }
  ],
  data: [
    {
      number: '1',
      title: '오늘',
      date: '2023-07-28',
      desc: 'hellojj'
    },
    {
      number: '2',
      title: '내일',
      date: '2023-07-29',
      desc: 'chaaaaaa'
    }
  ],
  onChange: updatedData => {
    console.log('updatedData', updatedData);
  }
});
Gn.create('datalist', {
  target: '.new-list2',
  headers: [
    {
      label: 'row-number',
      key: 'number'
    },
    {
      label: '제목',
      key: 'title'
    },
    {
      label: '날짜',
      key: 'date'
    },
    {
      label: '상세설명',
      key: 'desc'
    },
    {
      label: '숨김',
      key: 'ishidden',
      isHidden: true
    }
  ],
  data: [
    { number: 1, title: '첫 번째', date: '2023-07-28', desc: '이것은 첫 번째 요소입니다.', ishidden: 'datalist에 표시되지 않습니다.' },
    { number: 2, title: '두 번째', date: '2023-07-29', desc: '이것은 두 번째 요소입니다.', ishidden: 'datalist에 표시되지 않습니다.' },
    { number: 3, title: '세 번째', date: '2023-07-30', desc: '', ishidden: 'datalist에 표시되지 않습니다.' },
    { number: 4, title: '', date: '2023-07-31', desc: '이것은 네 번째 요소입니다.', ishidden: 'datalist에 표시되지 않습니다.' },
    { number: 5, title: '다섯 번째', date: '2023-08-01', desc: '이것은 다섯 번째 요소입니다.' },
    { number: 6, title: '여섯 번째', date: '2023-08-02 ~ 2023-11-02', desc: '이것은 여섯 번째 요소입니다.' },
    { number: 7, title: '일곱 번째 일곱 번째 일곱 번째', date: '2023-08-03', desc: '이것은 일곱 번째 요소입니다.' },
    {
      number: 8,
      title: '여덟 번째',
      date: '2023-08-08',
      desc: '이것은 여덟 번째 요소입니다.이것은 여덟 번째 요소입니다.이것은 여덟 번째 요소입니다.이것은 여덟 번째 요소입니다.이것은 여덟 번째 요소입니다.이것은 여덟 번째 요소입니다.이것은 여덟 번째 요소입니다.이것은 여덟 번째 요소입니다.이것은 여덟 번째 요소입니다.이것은 여덟 번째 요소입니다.이것은 여덟 번째 요소입니다.이것은 여덟 번째 요소입니다.'
    }
  ],
  hasUpdate: true,
  hasDelete: true,
  onUpdate: function (row, index) {
    console.log('row', row);
    console.log('index', index);
  },
  onChange: updatedData => {
    console.log('updatedData', updatedData);
  },
  isHiddenEmpty: true
});

name type default description
target string 컴포넌트 생성 타겟
headers label string 화면에 출력될 헤더 텍스트
key string data의 항목에 매치되는 키값
isHidden boolean 컬럼 노출여부 (data에는 있지만 화면에 출력되지 않음)
className string 클래스 명
bodyClass string 바디에 별개의 스타일을 적용할 경우 클래스 명을 추가한다
style string inline style
template function(key, row) 데이터를 표시할 템플릿
onSelect function(row) 데이터 셀 클릭 이벤트
onDoubleClick function row 더블 클릭 시 수행 이벤트
data array [] key: value로 이루어진 그리드 데이터
textSets noData string No records available. 데이터가 없을 경우 출력 메시지
isHiddenEmpty boolean false 데이터가 없는 경우 헤더 미출력 여부
hasUpdate boolean false 수정버튼 생성 여부
hasDelete boolean false 삭제버튼 생성 여부
readonly boolean false 읽기전용 여부 - 삭제(hasDelete) 버튼 미생성
disabled boolean false Disable 여부
onUpdate function(row, index) 데이터 수정 버튼을 클릭한 경우, 수정할 데이터를 가져오기 위한 이벤트핸들러
onChange function(updatedData) 수정, 삭제 등의 데이터 변경이 있는 경우, 변경된 데이터를 가져오기 위한 이벤트핸들러

메소드

name return description
reRender({headers: Array, data: Array}) void 변경된 값으로 다시 렌더링 한다. 컬럼 헤더까지 바뀌는 경우 사용한다.
resetData(data: Array) void 데이터를 변경한다.
addChild(index: number, data: Array) void index번째 row의 child로 data를 추가한다.
addRow(data: Array) void 마지막 데이터 하단에 data를 추가한다.
expand(index: number) void index번째 row의 child를 확장한다.
collapse(index: number) void index번째 row의 child 데이터를 축소한다.
getChecked() array 체크박스가 있는 경우(hasCheck: true) 체크된 데이터를 리턴한다
hideCols(keys: Array) void 파라메터 배열에 전달된 key에 해당하지 않는 컬럼만 보여준다
showCols(keys: Array) void 파라메터 배열에 전달된 key에 해당하는 컬럼만 보여준다
showAll() void hideCols, showCols 수행 시 숨김처리된 컬럼을 모두 보여준다
disable() void Disabled 처리한다.
enable() void Enabled 처리한다.

Growl

/scss/components/growl.scss
v.0.1.0 javascript

기본 사용

Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
<div class="gn-growl" style="width: 400px">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
</div>
<div class="gn-growl is-primary" style="width: 500px">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
</div>

크기

Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
<div class="gn-growl is-small">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
</div>
<div class="gn-growl is-normal">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
</div>
<div class="gn-growl is-medium">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
</div>
<div class="gn-growl is-large">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
</div>

색상

  • 백그라운드 컬러 알림창 이용 시 가로 사이즈 400이상 넘지 않는다.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
<div class="gn-growl is-success" style="width: 400px">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
</div>
<div class="gn-growl is-warning" style="width: 400px">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
</div>
<div class="gn-growl is-danger" style="width: 400px">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
</div>
<div class="gn-growl is-info" style="width: 400px">
  Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
</div>

타입

Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.

Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.

Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.

Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.

<div class="gn-growl has-arrange is-success" style="width: 400px">
  <span class="gn-icon is-normal">
    <i class="fas fa-check"></i>
  </span>
  <p>
    Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  </p>
</div>
<div class="gn-growl has-arrange is-warning" style="width: 400px">
  <span class="gn-icon is-normal">
    <i class="fas fa-exclamation-triangle"></i>
  </span>
  <p>
    Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  </p>
</div>
<div class="gn-growl has-arrange is-danger" style="width: 400px">
  <span class="gn-icon is-normal">
    <i class="fas fa-exclamation-triangle"></i>
  </span>
  <p>
    Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  </p>
</div>
<div class="gn-growl has-arrange is-info" style="width: 400px">
  <span class="gn-icon is-normal">
    <i class="fas fa-info-circle"></i>
  </span>
  <p>
    Non et elit ea Lorem. Sit dolor id irure cillum ad eu velit duis mollit proident ad et. Anim nisi culpa elit deserunt eiusmod. Pariatur anim ipsum sunt exercitation pariatur. Nulla laboris amet minim eu et. Elit aliquip amet anim elit non eu sit duis nulla. Laboris nulla laboris in officia eiusmod irure.
  </p>
</div>

생성 옵션

  <button class="gn-button new-growl1">Growl 예제보기</button>
  <button class="gn-button new-growl2">Growl 예제보기</button>
  Gn.create('growl', {
    textSets : {message: '메세지가 생성됩니다!'},
    duration: 3000,
    positionX: 'right',
    positionY: 'top',
    color: 'danger'
  });
  Gn.create('growl', {
    textSets : {message: '메세지가 생성됩니다!'},
    duration: 3000
  });
name type default description
textSets message string 표기할 문구
width number|string 400 가로 사이즈
color string 'success','warning','danger','info','cancel','dark','link','trans','secondary','mono'
type string 메시지 출력 스타일(아이콘이 함께 출력되고, color보다 우선순위가 높다).
'error', 'warning', 'success', 'info', 'guide'
size string 'small','normal','medium','large'
positionX string center 메시지 표시 가로 위치
center, left, right,
positionY string center 메시지 표시 세로 위치
center, top, bottom,
duration number 메시지 출력 유지시간

Loader

/scss/components/loader.scss
v.0.1.0 javascript

기본 사용

<div class="gn-loader"></div>

크기

<div class="gn-loader is-small"></div>
<div class="gn-loader is-normal"></div>
<div class="gn-loader is-medium"></div>
<div class="gn-loader is-large"></div>

색상

<div class="gn-loader is-success"></div>
<div class="gn-loader is-warning"></div>
<div class="gn-loader is-danger"></div>
<div class="gn-loader is-info"></div>
<div class="gn-loader is-inline"></div>
<div class="gn-loader is-inline is-success"></div>
<div class="gn-loader is-inline is-warning"></div>
<div class="gn-loader is-inline is-danger"></div>
<div class="gn-loader is-inline is-info"></div>
<div class="gn-loader is-inline is-primary"></div>

타입



<div class="gn-loader is-bounce"></div><br>
<div class="gn-loader is-move"></div>
<div class="gn-loader is-inline"></div><br>

생성 옵션

<button class="gn-button new-loader1">loader 예제보기</button>
<button class="gn-button new-loader2">loader 예제보기</button>
Gn.create('button', {
  target: '.new-loader1',
  onClick: function () {
    Gn.create('loader', {
      duration: 3000,
      size: 'large',
      positionX: 'right',
      positionY: 'center',
      color: 'secondary'
    });
  }
});
Gn.create('button', {
  target: '.new-loader2',
  onClick: function () {
    Gn.create('loader', {
      duration: 3000
    });
  }
});
name type default description
width number|string 25 로더 사이즈
color string 'success','warning','danger','info','cancel','dark','link','trans','secondary','mono'
size string 'small','normal','medium','large'
type string 'inline','bounce','move','
positionX string center 메시지 표시 가로 위치
center, left, right
positionY string center 메시지 표시 세로 위치
center, top, bottom
duration number 메시지 출력 유지시간, 해당 옵션 설정 시 create 시점에 로더가 보인다.

메소드

name return description
show(duration) void 로더를 보여준다. (duration 미입력 시 계속 보여준다.)
hide() void 로더를 숨김처리한다.

Message

/scss/components/message.scss
v.0.1.0 javascript

기본 메세지 알림

-Text with icon / Text only 선택 사용 할 수 있다.

Success! Your message has been sent successfully.
Success! Your message has been sent successfully.

Warning! There was a problem with your network connection.

Error! A problem has been occurred while submitting your data.

Info! Please read the comments carefully.

가이드 메시지 한글 폰드 테스트 Guide!

<div class="gn-message is-success has-arrange">
  <span class="gn-icon is-normal">
    <i class="fas fa-check"></i>
  </span>
  <p>Success! Your message has been sent successfully. <br/> Success! Your message has been sent successfully. </p>
</div>
<div class="gn-message is-warning has-arrange">
<span class="gn-icon is-normal">
    <i class="fas fa-exclamation-circle"></i>
  </span>
  <p>Warning! There was a problem with your network connection.</p>
  <span class="gn-icon is-close is-dark">
    <i class="fas fa-times"></i>
  </span>
</div>
<div class="gn-message is-danger has-arrange">
  <span class="gn-icon is-normal">
    <i class="fas fa-exclamation-triangle"></i>
  </span>
  <p>Error! A problem has been occurred while submitting your data.</p>
</div>
<div class="gn-message is-info has-arrange">
  <span class="gn-icon is-normal">
    <i class="fas fa-info-circle"></i>
  </span>
  <p>Info! Please read the comments carefully.</p>
  <span class="gn-icon is-close is-dark">
    <i class="fas fa-times"></i>
  </span>
</div>
<div class="gn-message is-guide has-arrange">
  <span class="gn-icon is-normal">
    <i class="fas fa-info-circle"></i>
  </span>
  <p> 가이드 메시지 한글 폰드 테스트  Guide!</p>
</div>

일반 메세지

Eu velit aliqua eiusmod eiusmod occaecat ullamco fugiat sunt occaecat excepteur. Sit fugiat fugiat velit reprehenderit occaecat ad proident enim deserunt occaecat amet. Proident eu ut cupidatat ut ullamco dolor consectetur tempor ea minim exercitation enim. Sit reprehenderit veniam cillum adipisicing.

Velit laboris elit cillum quis velit. Ipsum veniam aute est ea aliquip aute eu mollit. Tempor tempor incididunt occaecat ullamco velit esse. Ex Lorem cupidatat non quis irure velit ut fugiat consequat. Velit deserunt irure proident irure id non mollit irure et esse magna. Sint incididunt consequat reprehenderit veniam ea mollit eu laborum ipsum sit magna voluptate.

<div class="gn-message">
  Eu velit aliqua eiusmod eiusmod occaecat ullamco fugiat sunt occaecat excepteur. Sit fugiat fugiat velit reprehenderit occaecat ad proident enim deserunt occaecat amet. Proident eu ut cupidatat ut ullamco dolor consectetur tempor ea minim exercitation enim. Sit reprehenderit veniam cillum adipisicing.
</div>
<p class="gn-message">
  Velit laboris elit cillum quis velit. Ipsum veniam aute est ea aliquip aute eu mollit. Tempor tempor incididunt occaecat ullamco velit esse. Ex Lorem cupidatat non quis irure velit ut fugiat consequat. Velit deserunt irure proident irure id non mollit irure et esse magna. Sint incididunt consequat reprehenderit veniam ea mollit eu laborum ipsum sit magna voluptate.
</p>

색상

Success
Warning
Danger
Info
Cancel
Dark
Secondary
Mono
<div class="gn-message is-success">
  Success
</div>
<div class="gn-message is-warning">
  Warning
</div>
<div class="gn-message is-danger">
  Danger
</div>
<div class="gn-message is-info">
  Info
</div>
<div class="gn-message is-cancel">
  Cancel
</div>
<div class="gn-message is-dark">
  Dark
</div>
<div class="gn-message is-link">
  Link
</div>
<div class="gn-message is-secondary">
  Secondary
</div>
<div class="gn-message is-mono">
  Mono
</div>

크기

Eu velit aliqua eiusmod eiusmod occaecat ullamco fugiat sunt occaecat excepteur. Sit fugiat fugiat velit reprehenderit occaecat ad proident enim deserunt occaecat amet. Proident eu ut cupidatat ut ullamco dolor consectetur tempor ea minim exercitation enim. Sit reprehenderit veniam cillum adipisicing.
Eu velit aliqua eiusmod eiusmod occaecat ullamco fugiat sunt occaecat excepteur. Sit fugiat fugiat velit reprehenderit occaecat ad proident enim deserunt occaecat amet. Proident eu ut cupidatat ut ullamco dolor consectetur tempor ea minim exercitation enim. Sit reprehenderit veniam cillum adipisicing.
Eu velit aliqua eiusmod eiusmod occaecat ullamco fugiat sunt occaecat excepteur. Sit fugiat fugiat velit reprehenderit occaecat ad proident enim deserunt occaecat amet. Proident eu ut cupidatat ut ullamco dolor consectetur tempor ea minim exercitation enim. Sit reprehenderit veniam cillum adipisicing.
Eu velit aliqua eiusmod eiusmod occaecat ullamco fugiat sunt occaecat excepteur. Sit fugiat fugiat velit reprehenderit occaecat ad proident enim deserunt occaecat amet. Proident eu ut cupidatat ut ullamco dolor consectetur tempor ea minim exercitation enim. Sit reprehenderit veniam cillum adipisicing.

<div class="gn-message is-small">
Eu velit aliqua eiusmod eiusmod occaecat ullamco fugiat sunt occaecat excepteur. Sit fugiat fugiat velit reprehenderit occaecat ad proident enim deserunt occaecat amet. Proident eu ut cupidatat ut ullamco dolor consectetur tempor ea minim exercitation enim. Sit reprehenderit veniam cillum adipisicing.
</div>
<div class="gn-message is-normal">
  Eu velit aliqua eiusmod eiusmod occaecat ullamco fugiat sunt occaecat excepteur. Sit fugiat fugiat velit reprehenderit occaecat ad proident enim deserunt occaecat amet. Proident eu ut cupidatat ut ullamco dolor consectetur tempor ea minim exercitation enim. Sit reprehenderit veniam cillum adipisicing.
</div>
<div class="gn-message is-medium">
  Eu velit aliqua eiusmod eiusmod occaecat ullamco fugiat sunt occaecat excepteur. Sit fugiat fugiat velit reprehenderit occaecat ad proident enim deserunt occaecat amet. Proident eu ut cupidatat ut ullamco dolor consectetur tempor ea minim exercitation enim. Sit reprehenderit veniam cillum adipisicing.
</div>
<div class="gn-message is-large">
  Eu velit aliqua eiusmod eiusmod occaecat ullamco fugiat sunt occaecat excepteur. Sit fugiat fugiat velit reprehenderit occaecat ad proident enim deserunt occaecat amet. Proident eu ut cupidatat ut ullamco dolor consectetur tempor ea minim exercitation enim. Sit reprehenderit veniam cillum adipisicing.
</div>

테두리 스타일

Success! Your message has been sent successfully.

Warning! There was a problem with your network connection.

Error! A problem has been occurred while submitting your data.

Info! Please read the comments carefully.

Help Info! (icon+닫기)

Help Info! (icon)

Cancel
Dark
Secondary
Mono
<div class="gn-message is-success has-arrange is-border">
  <span class="gn-icon is-normal">
    <i class="fas fa-check"></i>
  </span>
<p>Success! Your message has been sent successfully. </p>
</div>
<div class="gn-message is-warning has-arrange is-border">
<span class="gn-icon is-normal">
    <i class="fas fa-exclamation-circle"></i>
  </span>
  <p>Warning! There was a problem with your network connection.</p>
  <span class="gn-icon is-close is-dark">
    <i class="fas fa-times"></i>
  </span>
</div>
<div class="gn-message is-danger has-arrange is-border">
  <span class="gn-icon is-normal">
    <i class="fas fa-exclamation-triangle"></i>
  </span>
  <p>Error! A problem has been occurred while submitting your data.</p>
</div>
<div class="gn-message is-info has-arrange is-border">
  <span class="gn-icon is-normal">
    <i class="fas fa-info-circle"></i>
  </span>
  <p>Info! Please read the comments carefully.</p>
  <span class="gn-icon is-close is-dark">
    <i class="fas fa-times"></i>
  </span>
</div>
<div class="gn-message is-help has-arrange is-border">
  <span class="gn-icon is-normal">
    <i class="fas fa-info-circle"></i>
  </span>
  <p> Help Info! (icon+닫기)</p>
  <span class="gn-icon is-close is-dark">
    <i class="fas fa-times"></i>
  </span>
</div>
<div class="gn-message is-help has-arrange is-border">
  <span class="gn-icon is-normal">
    <i class="fas fa-info-circle"></i>
  </span>
  <p> Help Info! (icon)</p>
</div>
<div class="gn-message is-cancel is-border">
  Cancel
</div>
<div class="gn-message is-dark is-border">
  Dark
</div>
<div class="gn-message is-link is-border">
  Link
</div>
<div class="gn-message is-secondary is-border">
  Secondary
</div>
<div class="gn-message is-mono is-border">
  Mono
</div>

생성 옵션

  <div class="gn-container page-message"></div>
  <button class="gn-button new-message">Message 예제보기</button>
  Gn.create('message', {
    target: '.page-message', 
    textSets: { message: '메세지가 생성됩니다!<br>잠시만 기다려주세요.' }
  });
name type default description
target string 메시지를 표시할 대상의 선택자(selector)
textSets message string 메시지에 표기할 문구
color string 'success','warning','danger','info','cancel','dark','link','trans','secondary','mono'
size string 'small','normal','medium','large'
icon string font awesome solid icon name
animation string slideup 'slideup','fadeout'
duration number 300 메시지 닫기 이벤트 애니메이션 시간
hasClose boolean true 닫기버튼 출력 여부
onClose function 닫기버튼 클릭 시 수행될 이벤트

메소드

name return description
close() void 메세지를 닫는다.

Progressbar

/scss/components/progressbar.scss
v.0.1.0 javascript

기본 사용

30%
90%
<div class="gn-progressbar is-primary">
  <span class="gauge" style="width: 30%"></span>
  <span class="figure">30%</span>
</div>
<div class="gn-progressbar is-secondary">
  <span class="gauge" style="width: 90%"></span>
  <span class="figure inner">90%</span>
</div>

크기

<div class="gn-progressbar is-small">
  <span class="gauge" style="width: 30%"></span>
</div>
<div class="gn-progressbar is-normal">
  <span class="gauge" style="width: 60%"></span>
</div>
<div class="gn-progressbar is-medium">
  <span class="gauge" style="width: 90%"></span>
</div>

상태

<div class="gn-progressbar is-secondary is-indeterminate">
  <span class="gauge"></span>
</div>
<div class="gn-progressbar is-indeterminate">
  <span class="gauge"></span>
</div>

생성 옵션

  <div class="gn-container new-progress-indeterminate"></div>
  <div class="gn-container new-progress"></div>
  <button class="btnValue btn0">0%</button>
  <button class="btnValue btn20">20%</button>
  <button class="btnValue btn50">50%</button>
  <button class="btnValue btn70">70%</button>
  <button class="btnValue btn100">100%</button>
  Gn.create('progressbar', {
    target:'.new-progress-indeterminate',
    color: 'info',
    size: 'medium',
    indeterminate: true,
    hasFigure: true
  });
  Gn.create('progressbar', {
    target:'.new-progress',
    color: 'danger',
    size: 'medium',
    value: 30
  });
name type default description
target string 프로그레스바를 표시할 대상의 선택자(selector)
color string 'success','warning','danger','info','cancel','dark','link','trans','secondary','mono'
size string 'small','normal','medium'
value number 0 상태 진행 정도(0~100)
hasFigure boolean false 상태 진행 정도 텍스트 표기여부
indeterminate boolean false 작업정도를 파악할 수 없는 경우 사용

메소드

name return description
setValue(value:number) void 프로그레스바의 진행상태를 변경한다.(indeterminate 상태에서는 사용불가)
complete() void 프로그레스바의 진행상태를 완료한다.

Tab

/scss/components/tab.scss
v.0.1.0 javascript

기본 사용

<div class="gn-tab">
  <ul>
    <li class="is-active"><a href="#genians">Genians</a></li>
    <li><a href="#rndcenter">R&amp;D Center</a></li>
    <li><a href="#fd">Front-end</a></li>
    <li><a href="#gnui">GNUI</a></li>
  </ul>
</div>

크기

<div class="gn-tab is-small">
  <ul>
    <li class="is-active"><a href="#genians">Genians</a></li>
    <li><a href="#rndcenter">R&amp;D Center</a></li>
    <li><a href="#fd">Front-end</a></li>
    <li><a href="#gnui">GNUI</a></li>
  </ul>
</div>
<div class="gn-tab is-normal">
  <ul>
    <li><a href="#genians">Genians</a></li>
    <li class="is-active"><a href="#rndcenter">R&amp;D Center</a></li>
    <li><a href="#fd">Front-end</a></li>
    <li><a href="#gnui">GNUI</a></li>
  </ul>
</div>
<div class="gn-tab is-medium">
  <ul>
    <li><a href="#genians">Genians</a></li>
    <li><a href="#rndcenter">R&amp;D Center</a></li>
    <li class="is-active"><a href="#fd">Front-end</a></li>
    <li><a href="#gnui">GNUI</a></li>
  </ul>
</div>
<div class="gn-tab is-large">
  <ul>
    <li><a href="#genians">Genians</a></li>
    <li><a href="#rndcenter">R&amp;D Center</a></li>
    <li><a href="#fd">Front-end</a></li>
    <li class="is-active"><a href="#gnui">GNUI</a></li>
  </ul>
</div>

스타일

<div class="gn-tab is-border-half">
  <ul>
    <li><a href="#genians">Genians</a></li>
    <li><a href="#rndcenter">R&amp;D Center</a></li>
    <li class="is-active"><a href="#fd">Front-end</a></li>
    <li><a href="#gnui">GNUI</a></li>
  </ul>
</div>
<div class="gn-tab is-border">
  <ul>
    <li><a href="#genians">Genians</a></li>
    <li class="is-active"><a href="#rndcenter">R&amp;D Center</a></li>
    <li><a href="#fd">Front-end</a></li>
    <li><a href="#gnui">GNUI</a></li>
  </ul>
</div>

정렬

<div class="gn-tab is-full">
  <ul>
    <li class="is-active"><a href="#genians">Genians</a></li>
    <li><a href="#rndcenter">R&amp;D Center</a></li>
    <li><a href="#fd">Front-end</a></li>
    <li><a href="#gnui">GNUI</a></li>
  </ul>
</div>
<div class="gn-tab is-center">
  <ul>
    <li class="is-active"><a href="#genians">Genians</a></li>
    <li><a href="#rndcenter">R&amp;D Center</a></li>
    <li><a href="#fd">Front-end</a></li>
    <li><a href="#gnui">GNUI</a></li>
  </ul>
</div>
<div class="gn-tab is-right">
  <ul>
    <li class="is-active"><a href="#genians">Genians</a></li>
    <li><a href="#rndcenter">R&amp;D Center</a></li>
    <li><a href="#fd">Front-end</a></li>
    <li><a href="#gnui">GNUI</a></li>
  </ul>
</div>
<div class="gn-tab is-vertical is-medium">
  <ul>
    <li class="is-active"><a href="#genians">Genians</a></li>
    <li><a href="#rndcenter">R&amp;D Center</a></li>
    <li><a href="#fd">Front-end</a></li>
    <li><a href="#gnui">GNUI</a></li>
  </ul>
</div>

생성 옵션

Genians
R&D Center
Front-end
GNUI
  <div id="newTab">
    <ul>
      <li><a href="#genians"><span class="gn-icon is-small"><i class="fas fa-home"></i></span> Genians</a></li>
      <li class="is-active"><a href="#rndcenter">R&amp;D Center</a></li>
      <li><a href="#fd">Front-end</a></li>
      <li><a href="#gnui">GNUI</a></li>
    </ul>
  </div>
  <div id="newContents">
    <div id="genians">Genians</div>
    <div id="rndcenter">R&amp;D Center</div>
    <div id="fd">Front-end</div>
    <div id="gnui">GNUI</div>
  </div>
  Gn.create('tab', {
    target: '#newTab',
    align: 'center',
    contents: '#newContents',
    onChange: function(idx){
      console.log(idx + '번 탭이 활성화 되었습니다.')
    }
  });
name type default description
target string 탭을 생성할 대상의 선택자(selector)
tabIndex number 0 초기 활성화 탭 인덱스
contents string 탭 컨텐츠로 사용될 element selector
size string 'small','normal','medium','large'
align string full 'full', 'left','right', 'vertical'
style string 'border','border-half'
onChange(idx) function 탭 전환 시 발생 이벤트 (idx: 활성화 탭 인덱스)
disabled boolean false 비활성화 여부

메소드

name return description
change(index: number) void index에 해당하는 탭을 활성화한다.
disable() void Disabled 처리한다.
enable() void Enabled 처리한다.

Tooltip

/scss/components/tooltip.scss
v.0.1.0 javascript

기본사용

Popper!!!
Popper again
Long Text Popper!!!
Where is my HOME
Panel Header
  • Id eiusmod veniam aute elit nulla qui ullamco dolore cillum est veniam sunt velit. Tempor anim eiusmod ut laborum esse sint velit occaecat consequat aliqua elit duis ea. Ullamco officia ullamco excepteur consectetur est deserunt velit fugiat. Voluptate proident mollit exercitation tempor culpa reprehenderit duis incididunt voluptate cillum do ad laboris veniam.
  • Eu pariatur exercitation commodo amet occaecat non magna ea. Laboris reprehenderit nostrud labore anim Lorem Lorem quis. Tempor officia dolor enim incididunt ut cupidatat sunt.
  • Incididunt ipsum nostrud quis qui esse est aute anim velit aliqua ipsum. Ipsum mollit nulla ipsum Lorem cillum laboris. Proident nostrud magna consequat elit duis culpa deserunt voluptate. Ullamco commodo ad ea nostrud. Qui ullamco tempor non est adipisicing duis ullamco id ex. Nostrud fugiat mollit commodo veniam id et labore cillum adipisicing adipisicing qui dolor.
  <div class="gn-tooltip is-left is-relative">
    <span>Popper!!!</span>
  </div>
  <div class="gn-tooltip is-top is-relative">
    <span>Popper again</span>
  </div>
  <div class="gn-tooltip is-bottom is-relative">
    <span>Long Text Popper!!!</span>
  </div>
  <div class="gn-tooltip is-right is-relative">
    Where is my <span class="gn-icon is-small"><i class="fas fa-home"></i></span> HOME
  </div>
  <div class="new-contents">
    <div class="gn-panel" style="width: 250px; height: 600px">
      <div class="panel-header">
        Panel Header
      </div>
      <div class="panel-body">
        <ul class="gn-list">
          <li>Id eiusmod veniam aute elit nulla qui ullamco dolore cillum est veniam sunt velit. Tempor anim eiusmod ut laborum esse sint velit occaecat consequat aliqua elit duis ea. Ullamco officia ullamco excepteur consectetur est deserunt velit fugiat. Voluptate proident mollit exercitation tempor culpa reprehenderit duis incididunt voluptate cillum do ad laboris veniam.</li>
          <li>Eu pariatur exercitation commodo amet occaecat non magna ea. Laboris reprehenderit nostrud labore anim Lorem Lorem quis. Tempor officia dolor enim incididunt ut cupidatat sunt.</li>
          <li>Incididunt ipsum nostrud quis qui esse est aute anim velit aliqua ipsum. Ipsum mollit nulla ipsum Lorem cillum laboris. Proident nostrud magna consequat elit duis culpa deserunt voluptate. Ullamco commodo ad ea nostrud. Qui ullamco tempor non est adipisicing duis ullamco id ex. Nostrud fugiat mollit commodo veniam id et labore cillum adipisicing adipisicing qui dolor.</li>
        </ul>
      </div>
      <div class="panel-footer">
        Panel footer
      </div>
    </div>
  </div>

색상

Success
Warning
Danger
Info
Cancel
Dark
Secondary
Mono
<div class="gn-tooltip is-success is-left is-relative">
  <span>Success</span>
</div>
<div class="gn-tooltip is-warning is-bottom is-relative">
  <span>Warning</span>
</div>
<div class="gn-tooltip is-danger is-top is-relative">
  <span>Danger</span>
</div>
<div class="gn-tooltip is-info is-right is-relative">
  <span>Info</span>
</div>
<div class="gn-tooltip is-cancel is-left-bottom is-relative">
  <span>Cancel</span>
</div>
<div class="gn-tooltip is-dark is-right-top is-relative">
  <span>Dark</span>
</div>
<div class="gn-tooltip is-link is-top is-relative">
  <span>Link</span>
</div>
<div class="gn-tooltip is-secondary is-bottom is-relative">
  <span>Secondary</span>
</div>
<div class="gn-tooltip is-mono is-right is-relative">
  <span>Mono</span>
</div>

생성 옵션

tooltip left tooltip bottom tooltip top tooltip right
tooltip left top tooltip left bottom tooltip right top tooltip right bottom
  <span class="gn-tag is-large is-info has-tooltip1">tooltip left</span>
  <span class="gn-tag is-large is-info-light has-tooltip2">tooltip bottom</span>
  <span class="gn-tag is-large is-info-light is-outline has-tooltip3">tooltip top</span>
  <span class="gn-tag is-large is-info is-outline has-tooltip4">tooltip right</span>
  <br>
  <span class="gn-tag is-large is-info has-tooltip5">tooltip left top</span>
  <span class="gn-tag is-large is-info-light has-tooltip6">tooltip left bottom</span>
  <span class="gn-tag is-large is-info-light is-outline has-tooltip7">tooltip right top</span>
  <span class="gn-tag is-large is-info is-outline has-tooltip8">tooltip right bottom</span>
    Gn.create('tooltip', {
      target: '.has-tooltip1',
      contents: '.new-contents',
      direction: 'left',
      type: 'click'
    });
    Gn.create('tooltip', {
      target: '.has-tooltip2',
      contents: '기본값 bottom 툴팁'
    });
    Gn.create('tooltip', {
      target: '.has-tooltip3',
      contents: 'top 툴팁',
      direction: 'top'
    });
    Gn.create('tooltip', {
      target: '.has-tooltip4',
      contents: 'right 툴팁',
      direction: 'right'
    });
    Gn.create('tooltip', {
      target: '.has-tooltip5',
      contents: 'left top 툴팁',
      direction: 'left-top',
      width: '200px'
    });
    Gn.create('tooltip', {
      target: '.has-tooltip6',
      contents: 'left bottom 툴팁',
      direction: 'left-bottom'
    });
    Gn.create('tooltip', {
      target: '.has-tooltip7',
      contents:
        '</b>자주 사용되는 정규식 특수문자</b><br/><br/>. 임의의 한 문자 예) .* 모든문자열<br/>^ 문자열 시작 예) ^Genians Genians으로 시작하는 문자열<br/>$ 문자열 끝 예) Genians$ Genians로 끝나는 문자열<br/>[ 문자집합 시작 표시 예) [ab] a 또는 b문자가 포함되는 문자열<br/>] 문자집합 끝 표시<br/>( 문자열 집합 시작 예) a(b)|(c)d abd 또는 acd를 의미<br/> 문자열 집합 끝<br/>| 또는(OR)<br/> 특수한 기능을 하는 다음 문자표시 예) . Period 문자표시<br/>n* 0개 이상의 n문자<br/>n+ 1개 이상의 n문자<br/>&#123;n&#125; 앞문자가 n개 예) ab&#123;2&#125;c abbc를 의미<br/>&#123;n,&#125; 앞문자가 n개 이상<br/>&#123;,m&#125; 앞문자가 m개 이하<br/>&#123;n,m&#125; 앞문자가 n개 이상 m개 이하<br/>',
      direction: 'right-top'
    });
    Gn.create('tooltip', {
      target: '.has-tooltip8',
      contents: '<br/>right bottom 툴팁<br/>',
      direction: 'right-bottom'
    });
name type default description
target string 툴팁을 표시할 대상의 선택자(selector)
type string hover 툴팁 표시 트리거타입('hover','click')
delay number 0 툴팁 제거 지연시간(ms)
direction string bottom 툴팁 표시 방향(top,bottom,right,left,left-top,left-bottom,right-top,right-bottom)
position object 툴팁 표시 위치 {top: '0px', left: '0px'}로 설정
contents string 툴팁에 표시할 문구 또는 html 텍스트
color string 'success','warning','danger','info','cancel','dark','link','trans','secondary','mono'

메소드

name return description
show() void 툴팁을 표시한다.
hide() void 툴팁을 숨김처리한다.
setContents(newContents: string) void 툴팁 컨텐츠를 변경한다.

Tree

/scss/components/tree.scss
v.0.1.0 javascript

생성 옵션

<div style="display: flex">
  <div class="new-tree1"></div>
  <div class="new-tree2"></div>
  <div class="new-tree3"></div>
  <div class="new-tree4"></div>
</div>
Gn.create('tree', {
      target: '.new-tree1',
      data: [{
        text: 'Genians',
        child: [{
          text: 'GNUI'
        },{
          text: 'GNUI core'
        },{
          text: 'GNConfEngine'
        }]
      },{
        text: 'R&D Center',
        child: [{
          text: 'GNUI'
        },{
          text: 'GNUI core'
        },{
          text: 'GNConfEngine'
        }]
      },{
        text: 'Front-end'
      }],
      type: 'borderless'
    });
    Gn.create('tree', {
      target: '.new-tree2',
      data: [{
        text: 'Genians',
        child: [{
          text: 'GNUI'
        },{
          text: 'GNUI core'
        },{
          text: 'GNConfEngine'
        }]
      },{
        text: 'R&D Center',
        child: [{
          text: 'GNUI'
        },{
          text: 'GNUI core'
        },{
          text: 'GNConfEngine'
        }]
      },{
        text: 'Front-end'
      }],
      color: 'success',
      hasCheck: false
    })
    Gn.create('tree', {
      target: '.new-tree3',
      data: [{
        text: 'Genians',
        value: 'genians',
        actived: true,
        opened: true,
        child: [{
          text: 'GNUI',
          value: 'gnui'
        },{
          text: 'GNUI core',
          value: 'gnui-core',
          opened: true,
          child: [{
            text: 'GNUI',
            value: 'gnui-nested'
          },{
            text: 'GNUI core',
            value: 'gnui-core-nested'
          },{
            text: 'GNConfEngine',
            value: 'gnconfengine-nested',
            selected: true
          }]
        },{
          text: 'GNConfEngine',
          value: 'gnconfengine'
        }]
      },{
        text: 'R&D Center',
        value: 'rnd-center',
        child: [{
          text: 'GNUI',
          value: 'rnd-gnui'
        },{
          text: 'GNUI core',
          value: 'rnd-gnui-core'
        },{
          text: 'GNConfEngine',
          value: 'rnd-gnconfengine'
        }]
      },{
        text: 'Front-end',
        value: 'frontend'
      }],
      hasCheck: true
    })
    Gn.create('tree', {
      target: '.new-tree4',
      data: [{
        text: 'Disabled Root',
        value: 'disabled-root',
        opened: true,
        child: [{
          text: 'Locked Node',
          value: 'locked-node',
          selected: true
        },{
          text: 'Review Only',
          value: 'review-only'
        }]
      },{
        text: 'Disabled Leaf',
        value: 'disabled-leaf'
      }],
      hasCheck: true,
      disabled: true
    })
name type default description
target string 트리 생성 타겟
data array {key: value}로 이루어진 데이터
text: 메뉴명
value: 노드 식별 값
selected: true 인 경우 체크박스 체크된 상태로 표시
opened: true 인 경우 하위항목이 열린상태로 표시
actived: true 인 경우 선택된 상태로 표시
disabled: true 인 경우 해당 노드 선택·체크 불가
icon: 기본 트리 아이콘이 있는 경우(showIcon: true) HTMLElement String 을 통해 사용자 정의 아이콘으로 변경
hideIcon: 기본 트리 아이콘이 있는 경우(showIcon: true) 아이콘 숨김 처리
childField string child 자식 데이터를 가지고 있는 항목 키값
size string 'small','normal','medium','large'
color string 'success','warning','danger','info','cancel','dark','link','trans','secondary','mono'
type string 'borderless'
hasCheck boolean false 체크박스 출력 여부
checkPath boolean false 하위 항목 선택 시 상위항목 자동선택 여부
checkChild boolean true 부모 항목 선택 시 하위항목 자동선택 여부
showIcon boolean false 메뉴명 앞 아이콘 표시 여부
disabled boolean false true 인 경우 초기 렌더 시 전체 트리가 비활성화되며(is-disabled), 선택/체크 상호작용은 불가하지만 토글러를 통한 확장/축소는 가능
onSelect function 클릭 시 수행 이벤트
onDoubleClick function 더블 클릭 시 수행 이벤트
onToggle function child 항목을 열고닫을때 수행 이벤트
onCheck function 체크박스 항목을 선택/해제 할때 수행 이벤트

메소드

name return description
addChild(index: number, data: Array) void index번째(0~n) child로 data를 추가한다.
expand(index: number) void index번째(0~n) child를 확장한다.
collapse(index: number) void index번째(0~n) child 데이터를 축소한다.
collapseAll() void 열려있는 child 데이터를 축소한다.
expandAll() void 모든 노드를 확장한다.
checkAll() void 모든 노드를 체크한다. hasCheck: true일 때만 유효하며, 그 외에는 no-op이다.
uncheckAll() void 모든 노드의 체크를 해제한다. hasCheck: true일 때만 유효하며, 그 외에는 no-op이다.
setChecked(targets: string | string[], checked: boolean) void 전달한 단일 또는 복수 노드를 체크/해제한다. 노드 식별은 value로만 수행하며, 대상 노드에는 고유한 value가 필요하다. hasCheck: true일 때만 유효하다.
getChecked(withStatus: Boolean = false) array 체크박스가 있는 경우(hasCheck: true) 체크된 데이터를 리턴한다
withStatus 옵션을 true로 사용하는 경우 리턴 item.__status 에 그 아이템에 대한 상태값을 포함한다
getItemIndex(item: HTMLElement) number 아이템 index 값을 리턴한다
findData(index: number) any index에 해당하는 아이템을 리턴한다
filter(keyword: string) any keyword를 포함한 아이템만 표시한다
disable() void 트리 컴포넌트 전체를 비활성화한다.
enable() void 트리 컴포넌트 전체를 활성화한다.

Button

/scss/controls/button.scss
v.0.1.0 javascript

기본 사용

  • 사용 태그 : a, button, input[submit], input[reset]
<button type="button" class="gn-button">확인</button>
<button type="button" class="gn-button is-dark">확인</button>
<button type="button" class="gn-button">수정</button>
<button type="button" class="gn-button is-dark">수정</button>
<button type="button" class="gn-button">목록</button>
<button type="button" class="gn-button is-cancel is-outline">취소</button>

Buttons with icons

  • 사용 태그 :
<button type="button" class="gn-button"><i class="fa fa-cog"></i> Settings</button>
<button type="submit" class="gn-button"><i class="fa fa-shopping-cart fa-lg"></i> Checkout</button>
<button type="button" class="gn-button is-cancel"><i class="fa fa-cog"></i> Settings</button>
<button type="button" class="gn-button is-cancel"><i class="fa fa-shopping-cart fa-lg"></i> Checkout</button>
<button type="button" class="gn-button is-cancel"><i class="fa fa-download" aria-hidden="true"></i></button>

크기

  • small, normal, medium, large, full

<p>
<button type="button" class="gn-button is-small">Small</button>
<button type="button" class="gn-button is-normal">Normal</button>
<button type="button" class="gn-button is-medium">Medium</button>
<button type="button" class="gn-button is-large">Large</button>
</p><p>
<button type="button" class="gn-button is-full">Full</button>
</p><p>
<button type="button" class="gn-button is-full is-large">Large Full</button>
</p>

색상

  • success,warning,danger,info,cancel,dark,link,trans,secondary,mono
<button type="button" class="gn-button is-success">Success</button>
<button type="button" class="gn-button is-warning">Warning</button>
<button type="button" class="gn-button is-danger">Danger</button>
<button type="button" class="gn-button is-info">Info</button>
<button type="button" class="gn-button is-cancel">Cancel</button>
<button type="button" class="gn-button is-dark">Dark</button>
<button type="button" class="gn-button is-link">Link</button>
<button type="button" class="gn-button is-trans">Trans</button>
<button type="button" class="gn-button is-secondary">Secondary</button>
<button type="button" class="gn-button is-mono">Mono</button>

스타일

  • outline, invert
<button type="button" class="gn-button is-outline is-success">Success</button>
<button type="button" class="gn-button is-outline is-warning">Warning</button>
<button type="button" class="gn-button is-outline is-danger">Danger</button>
<button type="button" class="gn-button is-outline is-info">Info</button>
<button type="button" class="gn-button is-invert is-success">Success</button>
<button type="button" class="gn-button is-invert is-warning">Warning</button>
<button type="button" class="gn-button is-invert is-danger">Danger</button>
<button type="button" class="gn-button is-invert is-info">Info</button>

상태

  • hover, focus, active, disabled, invalid, loading
<button type="button" class="gn-button is-hover">Hover</button>
<button type="button" class="gn-button is-focus">Focus</button>
<button type="button" class="gn-button is-active">Active</button>
<button type="button" class="gn-button is-disabled">Disabled</button>
<button type="button" class="gn-button is-invalid">Invalid</button>
<button type="button" class="gn-button is-loading">Loading</button>

확장

  • with icon
<button type="button" class="gn-button">
  <span class="gn-icon is-small">
    <i class="fas fa-bold"></i>
  </span>
</button>
<button type="button" class="gn-button is-info">
  <span class="gn-icon is-small">
    <i class="fas fa-home"></i>
  </span>
  HOME
</button>
  • button arrange
<div class="gn-control has-arrange">
  <button type="button" class="gn-button">
    <span class="gn-icon">
      <i class="fas fa-align-left"></i>
    </span>
    Left
  </button>
  <button type="button" class="gn-button">
    <span class="gn-icon">
      <i class="fas fa-align-center"></i>
    </span>
    Center
  </button>
  <button type="button" class="gn-button">
    <span class="gn-icon">
      <i class="fas fa-align-right"></i>
    </span>
    Right
  </button>
</div>

생성 옵션

  <button class="gn-button" name="new-button">new button</button>
  Gn.create('button', {
    target: 'button[name=new-button]', 
    size: 'medium',
    icon: 'home',
    onClick: function(){
      console.log('버튼을 클릭했습니다.');
    }
  });
name type default description
target string 버튼을 생성할 대상의 선택자(selector)
textSets buttonText string 버튼에 표기할 문구
disabled boolean false 버튼 비활성화 여부
color string 'success','warning','danger','info','cancel','dark','link','trans','secondary','mono'
size string 'small','normal','medium','large'
style string 'outline','invert'
status string 'hover','focus', 'active', 'disabled', 'invalid', 'loading'
icon string font awesome solid icon name
onClick function 버튼 클릭 시 수행될 이벤트

메소드

name return description
click() void 버튼을 클릭을 동작한다.
disable() void Disabled 처리한다.
enable() void Enabled 처리한다.

Colorpicker

/scss/controls/colorpicker.scss
v.0.1.0 javascript

생성 옵션

  <input type="text" class="colorPicker" />
  <input type="text" class="colorPicker2" />
  <input type="text" class="colorPicker3" />
  <input type="text" class="colorPicker4" />
  Gn.create('colorpicker', {
    target: '.colorPicker',
    size: 'large',
    editable: true,
    onChange: color => {
      console.log('color', color);
    }
  });
  Gn.create('colorpicker', {
    target: '.colorPicker2',
    value: '#27005d',
    size: 'medium'
  });
  Gn.create('colorpicker', {
    target: '.colorPicker3',
    readonly: true,
    value: '#aed2ff',
    onChange: color => {
      console.log('color', color);
    }
  });
  Gn.create('colorpicker', {
    target: '.colorPicker4',
    value: '#e4f1ff',
    disabled: true,
    size: 'small'
  });
name type default description
target string colorpicker 객체 선택자(selector)
textSets placeholder string
size string 'small','normal','medium','large'
value string 초기 색상 값
editable boolean false 색상 입력 가능여부 (true 설정 후 팔레트를 보여줄 때 입력받은 색상이 올바르지 않은 헥사코드인 경우 기본색상으로 변경)
readonly boolean false 읽기전용 여부
disabled boolean false 비활성화 여부
onChange function 색상 값 변경 시 수행 이벤트

메소드

name return description
change(color) void 컬러값을 변경한다.
getValue() string 설정된 컬러값을 반환한다.
disable() void Disabled 처리한다.
enable() void Enabled 처리한다.

Datepicker

/scss/controls/datepicker.scss
v.0.1.0 javascript

생성 옵션

<input type="text" class="new-datepicker" />
<input type="text" class="new-datetimepicker-without-icon" />
<input type="text" class="new-datetimepicker" />
  Gn.create('datepicker', {
    target: '.new-datepicker',
    value: '',
    dateFormat: 'yyyy-MM-DD',
    min: '-1M',
    max: '1M',
    type: 'date'
  });
  Gn.create('datepicker', {
    target: '.new-datetimepicker-without-icon',
    type: 'datetime',
    value: '2021-10-10 10:01:11',
    hasIcon: false,
    onClose: function () {
      console.log('창이 닫힙니다.');
    }
  });
  Gn.create('datepicker', {
    target: '.new-datetimepicker',
    type: 'datetime',
    writable: false,
    textSets: {
      placeholder: 'pick a date'
    }
  });
name type default description
target string datepicker 생성 타겟
textSets placeholder string
locale 'ko'|'en' ko 표기문구 언어
type string date picker type : date | datetime
timeFormat string hh:mm:ss 시간 형식 (hh:mm:ss, hh:mm)
size string 'small','normal','medium','large'
value string | Date now 초기 날짜, 시간 값
width string 165px 입력 input 크기
hasIcon boolean true 달력 아이콘 표시여부
disabled boolean false Disable 여부
readonly boolean false 읽기전용 여부
writable boolean true 입력가능 여부
min string 선택 할 수 있는 범위의 시작일 ('2021-04-02', '-5d', '-1W', '-1M'...)
max string 선택 할 수 있는 범위의 종료일 ('2021-10-02', '3d', '2W', '1M'...)
onClose function 창을 닫을때 수행될 이벤트

메소드

name return description
change(date) void 날짜 값을 변경한다.
getDate() String 날짜 값을 문자열로 반환한다.
getTime() Date 날짜 값을 타임스탬프 형식으로 반환한다.
disable() void Disabled 처리한다.
enable() void Enabled 처리한다.

MultiText

/scss/controls/multitext.scss
v.0.1.0 javascript

생성 옵션

<div class="default-multitext">
</div>
<div class="new-multitext">
</div>
<div class="message-multitext">
</div>
Gn.create('multitext', {
  target: '.default-multitext'
})

Gn.create('multitext', {
  target: '.new-multitext',
  lang: ['en','ko','cn'],
  value: {
    en: 'hello',
    ko: '안녕하세요',
    cn: 'HELLO'
  },
  maxlength: 300
})

Gn.create('multitext', {
  target: '.message-multitext',
  lang: ['ko', 'en'],
  value: {
    ko: '옵션 문구 예시',
    en: 'message example'
  },
  maxlength: 120,
  useMaxLengthMessage: true,
  textSets: {
    maxLengthMessage: '{{maxlength}}자 입력 가능합니다.'
  }
})
name type default description
target string multitext 생성 타겟
lang Array ['en','ko'] 사용할 언어 배열
value Object 언어별 초기 값
size string 'normal' 사이즈
width string 100% 넓이
rows number 2 textarea 라인 수
maxlength number 524288 최대 입력 글자길이
textSets maxLengthMessage string '{{maxlength}}자 입력 가능합니다.' maxlength 및 useMaxLengthMessage=true일 때 적용되는 남은 입력 가능 글자 안내 문구
useMaxLengthMessage boolean false true인 경우에만 textSets.maxLengthMessage 안내 문구 모드 활성화 (기본 카운터는 유지)
onChange(value) function 값 변경 시 발생 이벤트
disabled boolean false 비활성화 여부

메소드

name return description
getValue() String 값을 반환한다.
disable() void Disabled 처리한다.
enable() void Enabled 처리한다.

Picklist

/scss/controls/picklist.scss
v.0.1.0 javascript

기본 사용

<div class="gn-picklist">
  <div class="picklist-source">
    <div class="picklist-controls gn-control is-small has-arrange is-vertical is-center">
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-double-up"></i>
        </span>
      </button>
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-up"></i>
        </span>
      </button>
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-down"></i>
        </span>
      </button>
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-double-down"></i>
        </span>
      </button>
    </div>
    <div class="gn-dropdown is-opened">
      <div class="dropdown-items">
        <ul>
          <li class="dropdown-item">항목 1</li>
          <li class="dropdown-item">항목 2</li>
          <li class="dropdown-item">항목 3</li>
          <li class="dropdown-item">항목 4</li>
          <li class="dropdown-item">항목 5</li>
          <li class="dropdown-item">항목 6</li>
          <li class="dropdown-item">항목 7</li>
          <li class="dropdown-item">항목 8</li>
          <li class="dropdown-item">항목 9</li>
          <li class="dropdown-item">항목 10</li>
          <li class="dropdown-item">항목 11</li>
        </ul>
      </div>
    </div>
  </div>
  <div class="picklist-controls gn-control is-small has-arrange is-vertical is-center">
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-double-right"></i>
      </span>
    </button>
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-right"></i>
      </span>
    </button>
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-left"></i>
      </span>
    </button>
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-double-left"></i>
      </span>
    </button>
  </div>
  <div class="picklist-target">
    <div class="picklist-controls gn-control is-small has-arrange is-vertical is-center">
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-double-up"></i>
        </span>
      </button>
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-up"></i>
        </span>
      </button>
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-down"></i>
        </span>
      </button>
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-double-down"></i>
        </span>
      </button>
    </div>
    <div class="gn-dropdown is-opened">
      <div class="dropdown-items">
        <ul>
        </ul>
      </div>
    </div>
  </div>
</div>

방향 전환

<div class="gn-picklist is-vertical" style="height: 400px; width: 550px">
  <div class="picklist-source">   
    <div class="picklist-controls gn-control is-small has-arrange is-vertical is-center">
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-double-up"></i>
        </span>
      </button>
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-up"></i>
        </span>
      </button>
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-down"></i>
        </span>
      </button>
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-double-down"></i>
        </span>
      </button>
    </div> 
    <div class="gn-dropdown is-opened">
      <div class="dropdown-items">
        <ul>
          <li class="dropdown-item">항목 1</li>
          <li class="dropdown-item">항목 2</li>
          <li class="dropdown-item">항목 3</li>
          <li class="dropdown-item">항목 4</li>
          <li class="dropdown-item">항목 5</li>
          <li class="dropdown-item">항목 6</li>
          <li class="dropdown-item">항목 7</li>
        </ul>
      </div>
    </div>
  </div>
  <div class="picklist-controls gn-control is-small has-arrange is-center">
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-double-down"></i>
      </span>
    </button>
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-down"></i>
      </span>
    </button>
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-up"></i>
      </span>
    </button>
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-double-up"></i>
      </span>
    </button>
  </div>
  <div class="picklist-target">
    <div class="picklist-controls gn-control is-small has-arrange is-vertical is-center">
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-double-up"></i>
        </span>
      </button>
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-up"></i>
        </span>
      </button>
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-down"></i>
        </span>
      </button>
      <button type="button" class="gn-button is-outline">
        <span class="gn-icon">
          <i class="fas fa-angle-double-down"></i>
        </span>
      </button>
    </div>
    <div class="gn-dropdown is-opened">
      <div class="dropdown-items">
        <ul>
        </ul>
      </div>
    </div>
  </div>
</div>

생성 옵션

  <div class="new-picklist"></div>
  <div class="new-picklist-v"></div>
  <div class="new-picklist-cols"></div>
  <div class="new-picklist-tooltip"></div>
  Gn.create('picklist', {
    target: '.new-picklist',
    data: {
      source: [
        { value: '항목1', text: 'item1', html: '<span class="gn-tag is-primary">항목1</span> item1' },
        { value: '항목2', text: 'item2', html: '<span class="gn-tag is-danger">항목2</span> item2' },
        { value: '항목3', text: 'item3', html: '<span class="gn-tag is-warning">항목3</span> item3' }
      ],
      target: [
        { value: '항목4', text: 'item4', html: '<span class="gn-tag is-help">항목4</span> item4' },
        { value: '항목5', text: 'item5', html: '<span class="gn-tag is-success">항목5</span> item5' }
      ]
    },
    hasSourceSearch: true,
    hasTargetSearch: true,
    width: '80%',
    height: 180,
    onChange: function (s, t) {
      console.log(s, t);
    },
    orderable: 'target'
  });
  Gn.create('picklist', {
    target: '.new-picklist-v', 
    data : {
      source: [
        { value: '항목1', text: 'item1' },
        { value: '항목2', text: 'item2' },
        { value: '항목3', text: 'item3' },
        { value: '항목4', text: 'item4' },
        { value: '항목5', text: 'item5' }
      ],
      target: []
    },
    direction: 'vertical',
    width: '500px',
    height: 150
  });
  Gn.create('picklist', {
    target: '.new-picklist-cols',
    data: {
      source: [
        { value: '항목1', cols: ['item1', '1', '상세정보1'] },
        { value: '항목2', cols: ['item2', '2', '상세정보2'] },
        { value: '항목3', cols: ['item3', '3', '상세정보3'] },
        { value: '항목4', cols: ['item4', '4', '상세정보4'] },
        { value: '항목5', cols: ['item5', '5', '상세정보5'] }
      ],
      target: []
    },
    direction: 'vertical',
    width: '500px',
    height: 150
  });
  Gn.create('picklist', {
    target: '.new-picklist-tooltip',
    data: {
      source: [
        { value: '항목1', text: 'item1' },
        { value: '항목2', text: 'item2' },
        { value: '항목3', text: 'item3' }
      ],
      target: []
    },
    optionTooltip: {
      direction: 'right',
      content: function(option) {
        return '<div style="padding: 10px; max-width: 200px;">' + option.text + '에 대한 추가 정보입니다.</div>';
      }
    },
    direction: 'horizontal',
    width: '500px',
    height: 150
  });

데이터 모델 (PicklistItem)

필드 type 필수 description
value string Y 항목 값
text string N 단일 컬럼 표시 텍스트
cols string[] N 다중 컬럼 표시 값 배열
html string N 옵션 html(html이 있는 경우 text가 있는 항목만 선택 가능하다.)
icon string N font awesome solid icon name
name type default description
target string picklist를 표시할 대상의 선택자(selector)
* data의 target과 혼동되지 않도록 주의
data source PicklistItem[] source 항목 배열
- PicklistItem 참조

참고: 표시 우선순위는 html > cols > text 입니다. html 항목은 text가 있는 경우만 선택 가능하며, html이 있으면 cols는 무시됩니다.
target PicklistItem[] target 항목 배열
- PicklistItem 참조

참고: 표시 우선순위는 html > cols > text 입니다. html 항목은 text가 있는 경우만 선택 가능하며, html이 있으면 cols는 무시됩니다.
textSets sourceCaption string source 항목 캡션
targetCaption string target 항목 캡션
searchText string 'search item'
orderable string, boolean true 정렬 버튼 출력 여부 (true, false, 'source', 'target')
width string, number 100% 컴포넌트 넓이
height string, number 150 선택항목 영역의 높이
direction string 'horizontal' 컴포넌트 방향 ('horizontal', 'vertical')
optionTooltip object 옵션 툴팁 설정

direction: 'top','right','bottom','left'
content: function(option){ return htmlString }
fetch: function(option){ return Promise that resolves htmlString }
hasSourceSearch boolean false source 항목 검색기능 활성화 여부
hasTargetSearch boolean false target 항목 검색기능 활성화 여부
disabled boolean false Disable 여부
onChange function(source, target) 컴포넌트 값 변경 시 발생 이벤트
onChange function(source, target) 컴포넌트 값 변경 시 발생 이벤트
onSort function(source, target) 항목 정렬 시 발생 이벤트
onTransfre function(source, target) source, target 간 이동 시 발생 이벤트

메소드

name return description
getSource() array source 항목의 배열을 반환한다.
getTarget() array target 항목의 배열을 반환한다.
getValue() string target 항목의 value를 콤마(,)로 구분하여 반환한다.
disable() void Disabled 처리한다.
enable() void Enabled 처리한다.
setSource(array[{value: string|array, text: string}]) void source 항목을 변경한다.
setTarget(array[{value: string|array, text: string}]) void target 항목을 변경한다.
setData({source: array[{value: string|array, text: string}], target: array[{value: string|array, text: string}]) void source, target 항목을 변경한다.

SelectButton

/scss/controls/selectbutton.scss
v.0.1.0 javascript

생성 옵션

  <div class="new-selectButtons"></div>
  <div class="new-selectButtons-v"></div>
  Gn.create('selectbutton', {
    target: '.new-selectButtons', 
    size: 'normal',
    value: 'menu2',
    onChange: function(option){
      console.log('선택된 옵션은 ' + option );
    },
    data: [{
      text: 'menu1',
      value: 'menu1'
    },{
      text: 'menu2',
      value: 'menu2'
    },{
      text: 'menu3',
      value: 'menu3'
    },{
      text: 'menu4',
      value: 'menu4'
    }]
  });
  Gn.create('selectbutton', {
    target: '.new-selectButtons-v', 
    size: 'normal',
    value: 'menu1,menu2',
    multiple: true,
    align: 'vertical',
    onChange: function(option){
      console.log('선택된 옵션은 ' + option );
    },
    data: [{
      text: 'menu1',
      value: 'menu1'
    },{
      text: 'menu2',
      value: 'menu2'
    },{
      text: 'menu3',
      value: 'menu3'
    },{
      text: 'menu4',
      value: 'menu4'
    }]
  });
name type default description
target string 컴포넌트 생성대상 선택자(selector)
size string 'small','normal','medium','large'
align string horizontal 'horizontal', 'vertical'
data Array[{text, value, icon}] 옵션 목록
disabled boolean false 버튼 비활성화 여부
multiple boolean false 다중선택 가능 여부
onChange function(value, text) 옵션 변경 시 수행될 이벤트

메소드

name return description
change(value) void 버튼 선택값을 변경한다.
getValue() string 선택된 값을 반환한다.
disable() void Disabled 처리한다.
enable() void Enabled 처리한다.

SortableList

/scss/controls/sortablelist.scss
v.0.1.0 javascript

기본 사용

<div class="gn-sortablelist">
  <div class="sortablelist-controls gn-control is-small has-arrange is-vertical is-center">
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-double-up"></i>
      </span>
    </button>
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-up"></i>
      </span>
    </button>
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-down"></i>
      </span>
    </button>
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-double-down"></i>
      </span>
    </button>
  </div>
  <div class="gn-dropdown is-opened sortablelist-items">
    <div class="dropdown-items">
      <ul class="sortablelist-rows">
        <li class="dropdown-item">항목 1</li>
        <li class="dropdown-item">항목 2</li>
        <li class="dropdown-item">항목 3</li>
        <li class="dropdown-item">항목 4</li>
      </ul>
    </div>
  </div>
</div>

버튼 우측 배치

<div class="gn-sortablelist">
  <div class="gn-dropdown is-opened sortablelist-items">
    <div class="dropdown-items">
      <ul class="sortablelist-rows">
        <li class="dropdown-item">항목 1</li>
        <li class="dropdown-item">항목 2</li>
        <li class="dropdown-item">항목 3</li>
      </ul>
    </div>
  </div>
  <div class="sortablelist-controls gn-control is-small has-arrange is-vertical is-center is-right">
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-double-up"></i>
      </span>
    </button>
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-up"></i>
      </span>
    </button>
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-down"></i>
      </span>
    </button>
    <button type="button" class="gn-button is-outline">
      <span class="gn-icon">
        <i class="fas fa-angle-double-down"></i>
      </span>
    </button>
  </div>
</div>

생성 옵션

  <div class="new-sortablelist"></div>
  <div class="new-sortablelist-drag"></div>
  <div class="new-sortablelist-cols"></div>
  // 단일 컬럼
  Gn.create('sortablelist', {
    target: '.new-sortablelist',
    data: [
      { value: '1', text: '항목 1' },
      { value: '2', text: '항목 2' },
      { value: '3', text: '항목 3' },
      { value: '4', text: '항목 4' },
      { value: '5', text: '항목 5' },
      { value: '6', text: '항목 6' },
      { value: '7', text: '항목 7' },
      { value: '8', text: '항목 8' },
      { value: '9', text: '항목 9' },
      { value: '10', text: '항목 10' }
    ]
  });
  // 드래그 앤 드롭
  Gn.create('sortablelist', {
    target: '.new-sortablelist-drag',
      data: [
      { value: 'a', text: '항목 A' },
      { value: 'b', text: '항목 B' },
      { value: 'c', text: '항목 C' },
      { value: 'd', text: '항목 D' },
      { value: 'e', text: '항목 E' },
      { value: 'f', text: '항목 F' },
      { value: 'g', text: '항목 G' },
      { value: 'h', text: '항목 H' },
      { value: 'i', text: '항목 I' },
      { value: 'j', text: '항목 J' }
    ],
    draggable: true
  });
  // 다중 컬럼
  Gn.create('sortablelist', {
    target: '.new-sortablelist-cols',
    buttonPosition: 'right',
    data: [
      { value: 'x1', cols: ['항목1', '카테고리A', '1000'] },
      { value: 'x2', cols: ['항목2', '카테고리B', '2000'] },
      { value: 'x3', cols: ['항목3', '카테고리C', '3000'] },
      { value: 'x4', cols: ['항목4', '카테고리D', '4000'] },
      { value: 'x5', cols: ['항목5', '카테고리E', '5000'] },
      { value: 'x6', cols: ['항목6', '카테고리F', '6000'] },
      { value: 'x7', cols: ['항목7', '카테고리G', '7000'] },
      { value: 'x8', cols: ['항목8', '카테고리H', '8000'] },
      { value: 'x9', cols: ['항목9', '카테고리I', '9000'] },
      { value: 'x10', cols: ['항목10', '카테고리J', '10000'] }
    ]    
  });

데이터 모델 (SortableListItem)

필드 type 필수 description
value string Y 고유 값 (빈 문자열 불가)
text string N 단일 컬럼 표시 텍스트
cols string[] N 다중 컬럼 표시 값 배열

옵션

name type default description
target string sortablelist를 표시할 대상의 선택자(selector)
data SortableListItem[] sortablelist에 표시할 데이터 배열
buttonPosition left | right left 순서 변경 버튼 위치
draggable boolean false 드래그 앤 드롭 순서 변경 활성화 여부
textSets noData string No records available. 데이터가 없을 경우 출력 메시지
disabled boolean false 컴포넌트 비활성화 여부
width number, string 100% 컴포넌트 너비
height number, string 150 리스트 높이 (미지정 시 150)
onChange function(data) 데이터 변경 시 발생 이벤트

메소드

name return description
getData() SortableListItem[] 현재 데이터 배열을 반환한다.
setData(data: SortableListItem[]}) void 데이터 배열을 설정하고 다시 렌더링한다.
disable() void 컴포넌트를 비활성화한다.
enable() void 컴포넌트를 활성화한다.

Switch

/scss/controls/switch.scss
v.0.1.0 javascript

기본 사용

  • 사용 태그 : label > input[checkbox] + .switch-toggle
  <label class="gn-switch">
    <input type="checkbox" /><span class="switch-toggle">Toggle</span>
  </label>

크기

  <label class="gn-switch is-small">
    <input type="checkbox" /><span class="switch-toggle">Toggle</span>
    Small
  </label>
  <label class="gn-switch is-normal">
    <input type="checkbox" /><span class="switch-toggle">Toggle</span>
    Normal
  </label>
  <label class="gn-switch is-medium">
    <input type="checkbox" /><span class="switch-toggle">Toggle</span>
    Medium
  </label>
  <label class="gn-switch is-large">
    <input type="checkbox" /><span class="switch-toggle">Toggle</span>
    Large
  </label>

색상

  <label class="gn-switch is-success">
    <input type="checkbox" checked /><span class="switch-toggle">Toggle</span>
    Success
  </label>
  <label class="gn-switch is-warning">
    <input type="checkbox" checked /><span class="switch-toggle">Toggle</span>
    Warning
  </label>
  <label class="gn-switch is-danger">
    <input type="checkbox" checked /><span class="switch-toggle">Toggle</span>
    Danger
  </label>
  <label class="gn-switch is-info">
    <input type="checkbox" checked /><span class="switch-toggle">Toggle</span>
    Info
  </label>

상태

  <label class="gn-switch">
    <input type="checkbox" disabled /><span class="switch-toggle">Toggle</span>
  </label>
  <label class="gn-switch">
    <input type="checkbox" checked disabled /><span class="switch-toggle">Toggle</span>
  </label>
  <label class="gn-switch is-invalid">
    <input type="checkbox" /><span class="switch-toggle">Invalid</span>
  </label>

생성 옵션

<input type="checkbox" class="new-switch" />
  Gn.create('switch', {
    target:  '.new-switch',
    size: 'large',
    color: 'info',
    checked: true,
    onToggle: function (e) { console.log('toggle 이벤트'); }
  });
name type default description
target string 스위치를 생성할 대상의 선택자(selector)
textSets toggleText string 토글에 표기할 문구
checked boolean false 스위치 초기 체크상태
disabled boolean false 스위치 비활성화 여부
color string 'success','warning','danger','info','cancel','dark','link','trans','secondary','mono'
size string 'small','normal','medium','large'
onToggle function 토글 시 수행될 이벤트

메소드

name return description
toggle() void 스위치 상태를 토글한다.
getValue() boolean 스위치 상태를 반환한다.
disable() void Disabled 처리한다.
enable() void Enabled 처리한다.

SyntaxInput

/scss/controls/syntaxinput.scss
v.0.1.0 javascript

생성 옵션

  <p><input type="text" class="syntaxInput" /></p>
  <p><input type="text" class="syntaxInput2" /></p>
  <p><input type="text" class="syntaxInput3" /></p>
  Gn.create('syntaxinput', {
    target: '.syntaxInput'
  });
  Gn.create('syntaxinput', {
    target: '.syntaxInput2',
    multiple: true,
    usetab: true
  });
  Gn.create('syntaxinput', {
    target: '.syntaxInput3',
    type: 'custom',
    patterns: {
      constant: {
        pattern: /\w+:?(?=\/)/gm
      },
      keyword: {
        pattern: /[^/]*$/gm
      }
    }
  });
name type default description
target string colorpicker 객체 선택자(selector)
value string
multiple boolean false true 인 경우, input 대신 textarea 로 입력받는다.
usetab boolean false 입력창 내 TAB 키 사용 여부. multiple: true 설정 시 사용가능
readonly boolean false 입력 가능여부
type string html syntax 타입 (plain, plaintext, text, txt, markup, html, mathml, svg, xml, ssml, atom, rss, css, clike, javascript, js)
사용자 정의 시 'custom'
onChange function input 값 변경 시 호출되는 이벤트
patterns object type 을 'custom'으로 지정 후, 패턴 형식의 Object를 설정한다.
{
  [token keyword: string] : {
    pattern: 스타일을 적용 할 패턴 정규식
  }
}

token keyword

token keyword style
comment comment
prolog prolog
doctype doctype
cdata cdata
punctuation punctuation
namespace namespace
property property
tag tag
boolean boolean
number number
constant constant
symbol symbol
deleted deleted
selector selector
char char
builtin builtin
inserted inserted
operator operator
url url
string string
atrule atrule
attr attr
keyword keyword
function function
class class
regex regex
variable variable
important important
bold bold
italic italic
entity entity

메소드

name return description
setValue(value: string) void 값을 변경한다.
getValue() string 값을 반환한다.
disable void Readonly 상태로 전환한다.
enable void Readonly 상태를 해제한다.

Time

/scss/controls/time.scss
v.0.1.0 javascript

생성 옵션

<div class="new-time"></div>
<div class="new-time2"></div>
  Gn.create('time', {
    target: '.new-time',
    onChange: function(time){
      console.log(time)
    },
    value: '22:33:44'
  });
  Gn.create('time', {
    target: '.new-time2',
    timeFormat: 'hh:mm',
    onChange: function(time){
      console.log(time)
    },
    value: '6:2'
  });
name type default description
target string time 생성 타겟
value string now 초기 시간 값
timeFormat string hh:mm:ss 시간 형식 (hh:mm:ss, hh:mm)
hasControls boolean true 시간 셋팅 버튼(00:00, 23:59) 출력여부
onChange function(value) 시간 변경 시 발생 이벤트
disabled boolean false Disable 여부
readonly boolean false 읽기전용 여부

메소드

name return description
setTime(time: string) void 시간 값을 변경한다.
getTime() string 설정된 시간 값을 반환한다.
disable() void Disabled 처리한다.
enable() void Enabled 처리한다.

Splitter

/scss/layout/splitter.scss
v.0.1.0 javascript

생성 옵션

HORIZONTAL TOP PANEL
VERTICAL LEFT PANEL
VERTICAL RIGHT PANEL
  <div id="horizontal-splitter" style="height: 300px">
    <div id="frame1">
      HORIZONTAL TOP PANEL
    </div>
    <div id="frame2">
      <div id="vertical-splitter" style="height: 100%">
        <div id="frame3">
          VERTICAL LEFT PANEL
        </div>
        <div id="frame4">
          VERTICAL RIGHT PANEL
        </div>
      </div>
    </div>
  </div>
  Gn.create('splitter', {
    target: '#horizontal-splitter',
    panel: ['#frame1','#frame2'],
    position: '30%',
    onDrag: function(e) {
      console.log('dragging');
    },
    onDragStart: function(e) {
      console.log('drag start');
    },
    onDragEnd: function(e) {
      console.log('drag End');
    }
  });
  Gn.create('splitter', {
    target: '#vertical-splitter',
    panel: ['#frame3','#frame4'],
    space: 20,
    orientation: 'vertical'
  });
name type default description
target string 화면 분할 객체 선택자(selector)
orientation string horizontal 화면분할 방향 (vertical | horizontal)
space number 0 패널영역 여백(padding)
minPosition number 30 축소 시 최소 사이즈 (space가 존재하는 경우 합산하여 적용됨)
position number, string 50% 생성 시 분할 핸들의 위치
panel array(2) [ 'selector','selector' ] 분할된 컨텐츠 객체 선택자(selector)
onDrag function 핸들 드래그 이벤트
onDragStart function 핸들 드래그 시작 이벤트
onDragEnd function 핸들 드래그 종료 이벤트