ドロップダウンスライダーのカスタマイズ

このサンプルではドロップダウンスライダーのカスタマイズ方法を確認することができます。スライダーの目盛り表示やステップ、方向などをカスタマイズできます。

ドロップダウンスライダーをさまざまなカスタマイズできます。 ドロップダウンスライダーのカスタマイズ ドロップダウンスライダーの表示方向や目盛りラベルの表示、ツールチップの表示などをカスタマイズできます。 以下は、ドロップダウンスライダーをカスタマイズできるプロパティです。 プロパティ 説明 デフォルト値 min スライダーで選択できる最小値を指定します。 -100 max スライダーで選択できる最大値を指定します。 100 step スライダーのステップを指定します。 1 marks スライダーの目盛りを指定します。 配列 valueChangeMode 入力値が変更されるタイミングを指定します。 ThumbRelease direction スライダーの方向を指定します。水平または垂直を指定できます。 水平 showMarkLabel 目盛りラベルを表示するかどうかを指定します。 true markLabelFormat 目盛りラベルの表示書式を設定します。 markLabelPosition 目盛りラベルの表示位置を設定します。 Bottom tooltipShowMode ツールチップの表示方法を指定します。 Hover tooltipFormat ツールチップの表示書式を設定します。 tooltipPosition ツールチップの表示位置を設定します。 Top showMarkTip 目盛りをツールチップで表示するかどうかを指定します。 false markTipFormat ツールチップに表示する目盛りの書式を設定します。 keyStep 矢印キーの「↑」または「↓」を押下する場合のステップを指定します。 false width 方向が水平の場合のスライダーの幅を指定します。 height 方向が垂直の場合のスライダーの高さを指定します。 valueChangeModeプロパティに設定できる値は以下のとおりで、既定値はSliderValueChangeMode.ThumbReleaseです。 SliderValueChangeModeの値 説明 ThumbMove スライダーを動かしている間に入力値が変更されます。 ThumbRelease スライダーを動かしていた後に入力値が変更されます。 directionプロパティに設定できる値は以下のとおりで、既定値はSliderDirection.Horizontalです。 SliderDirectionの値 説明 Horizontal スライダーの方向を水平に指定します。 Vertical スライダーの方向を垂直に指定します。 tooltipPositionプロパティに設定できる値は以下のとおりで、既定値はSliderTooltipPosition.Topです。 SliderTooltipPositionの値 説明 Top ツールチップをスライダーの上部に表示します。 Bottom ツールチップがスライダーの下部に表示します。 tooltipShowModeプロパティに設定できる値は以下のとおりで、既定値はSliderTooltipShowMode.Hoverです。 SliderTooltipShowModeの値 説明 None スライダーのツールチップを非表示に設定します。 Always スライダーのツールチップを常に表示します。 Hover ホバー状態のとき、スライダーのツールチップを表示します。
import '@mescius/inputman/CSS/gc.inputman-js.css'; import { InputMan } from '@mescius/inputman'; import './styles.css'; InputMan.appearanceStyle = InputMan.AppearanceStyle.Modern; const gcNumber1 = new InputMan.GcNumber( document.getElementById('gcNumber1'), { showDropDownSlider: true, maxValue: 100, minValue: 0, value: 50, width: 350, dropDownConfig: { width: 500, step: 10, marks: [0, 22, 50, 78, 100], keyStep: 2, tooltipFormat: (v) => `T:${v}℃`, markLabelFormat: (v) => `H:${v}%`, markTipFormat: (v) => `D:${v}km`, tooltipShowMode: InputMan.SliderTooltipShowMode.Always, }, } ); // ステップ document.getElementById('sliderStep').addEventListener('change', (e) => { gcNumber1.dropDownSlider.step = parseInt(e.target.value); }); // 入力値が変更されるタイミング document .getElementById('sliderValueChangeMode') .addEventListener('change', (e) => { gcNumber1.dropDownSlider.valueChangeMode = sliderValueChangeMode[e.target.selectedIndex]; }); // スライダーの方向 document.getElementById('sliderDirection').addEventListener('change', (e) => { gcNumber1.dropDownSlider.direction = sliderDirection[e.target.selectedIndex]; }); // 目盛りラベル document .getElementById('sliderShowMarkLabel') .addEventListener('change', (e) => { gcNumber1.dropDownSlider.showMarkLabel = e.target.checked; }); // 目盛りラベルの表示位置 document .getElementById('sliderMarkLabelPosition') .addEventListener('change', (e) => { gcNumber1.dropDownSlider.markLabelPosition = sliderTooltipPosition[e.target.selectedIndex]; }); // 目盛りラベルの書式 var markLabelFormat1 = new InputMan.GcTextBox( document.getElementById('markLabelFormat1'), { text: 'H:', } ); markLabelFormat1.onTextChanged(() => { gcNumber1.dropDownSlider.markLabelFormat = (v) => `${markLabelFormat1.text} ${v} ${markLabelFormat2.text}`; }); var markLabelFormat2 = new InputMan.GcTextBox( document.getElementById('markLabelFormat2'), { text: '%', } ); markLabelFormat2.onTextChanged(() => { gcNumber1.dropDownSlider.markLabelFormat = (v) => `${markLabelFormat1.text} ${v} ${markLabelFormat2.text}`; }); // ツールチップの表示方法 document .getElementById('sliderTooltipShowMode') .addEventListener('change', (e) => { gcNumber1.dropDownSlider.tooltipShowMode = sliderTooltipShowMode[e.target.selectedIndex]; }); // ツールチップの表示位置 document .getElementById('sliderTooltipPosition') .addEventListener('change', (e) => { gcNumber1.dropDownSlider.tooltipPosition = sliderTooltipPosition[e.target.selectedIndex]; }); // ツールチップの書式 var tooltipFormat1 = new InputMan.GcTextBox( document.getElementById('tooltipFormat1'), { text: 'T:', } ); tooltipFormat1.onTextChanged(() => { gcNumber1.dropDownSlider.tooltipFormat = (v) => `${tooltipFormat1.text} ${v} ${tooltipFormat2.text}`; }); var tooltipFormat2 = new InputMan.GcTextBox( document.getElementById('tooltipFormat2'), { text: '℃', } ); tooltipFormat2.onTextChanged(() => { gcNumber1.dropDownSlider.tooltipFormat = (v) => `${tooltipFormat1.text} ${v} ${tooltipFormat2.text}`; }); // 目盛りラベルをツールチップで表示 document .getElementById('sliderShowMarkTip') .addEventListener('change', (e) => { gcNumber1.dropDownSlider.showMarkTip = e.target.checked; }); // ツールチップに表示する目盛りの書式 var markTipFormat1 = new InputMan.GcTextBox( document.getElementById('markTipFormat1'), { text: 'D:', } ); markTipFormat1.onTextChanged(() => { gcNumber1.dropDownSlider.markTipFormat = (v) => `${markTipFormat1.text} ${v} ${markTipFormat2.text}`; }); var markTipFormat2 = new InputMan.GcTextBox( document.getElementById('markTipFormat2'), { text: 'km', } ); markTipFormat2.onTextChanged(() => { gcNumber1.dropDownSlider.markTipFormat = (v) => `${markTipFormat1.text} ${v} ${markTipFormat2.text}`; }); const sliderDirection = [ InputMan.SliderDirection.Horizontal, InputMan.SliderDirection.Vertical, ]; const sliderValueChangeMode = [ InputMan.SliderValueChangeMode.ThumbRelease, InputMan.SliderValueChangeMode.ThumbMove, ]; const sliderTooltipShowMode = [ InputMan.SliderTooltipShowMode.Hover, InputMan.SliderTooltipShowMode.Always, InputMan.SliderTooltipShowMode.None, ]; const sliderTooltipPosition = [ InputMan.SliderTooltipPosition.Top, InputMan.SliderTooltipPosition.Bottom, ];
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>数値コントロール - ドロップダウンスライダーカスタマイズ</title> <!-- SystemJS --> <script src="node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <script> window.onload = function() { System.import('./src/app'); } </script> </head> <body> <div class="custom"> <input id="gcNumber1" /> </div> <table class="sample"> <tr> <th>ステップ</th> <td> <input type="number" value="10" id="sliderStep" /> </td> </tr> <tr> <th>入力値が変更されるタイミング</th> <td> <select id="sliderValueChangeMode"> <option selected>スライダーを動かしていた後に入力値が変更される</option> <option>スライダーを動かしている間に入力値が変更される</option> </select> </td> </tr> <tr> <th>スライダーの方向</th> <td> <select id="sliderDirection"> <option selected>水平</option> <option>垂直</option> </select> </td> </tr> <tr> <th>ツールチップの表示方法</th> <td> <select id="sliderTooltipShowMode"> <option>ホバー時に表示する</option> <option selected>常に表示する</option> <option>表示しない</option> </select> </td> </tr> <tr> <th>ツールチップの表示位置</th> <td> <select id="sliderTooltipPosition"> <option selected>スライダーの上部</option> <option>スライダーの下部</option> </select> </td> </tr> <tr> <th>ツールチップの接頭書式</th> <td><input type="text" id="tooltipFormat1" /></td> </tr> <tr> <th>ツールチップの接尾書式</th> <td><input type="text" id="tooltipFormat2" /></td> </tr> <tr> <th>目盛りラベル</th> <td> <label><input type="checkbox" id="sliderShowMarkLabel" checked />表示する</label> </td> </tr> <tr> <th>目盛りラベルの表示位置</th> <td> <select id="sliderMarkLabelPosition"> <option>スライダーの上部</option> <option selected>スライダーの下部</option> </select> </td> </tr> <tr> <th>目盛りラベルの接頭書式</th> <td><input type="text" id="markLabelFormat1" /></td> </tr> <tr> <th>目盛りラベルの接尾書式</th> <td><input type="text" id="markLabelFormat2" /></td> </tr> <tr> <th>目盛りラベルをツールチップで表示</th> <td> <label><input type="checkbox" id="sliderShowMarkTip" />表示する</label> </td> </tr> <tr> <th>ツールチップに表示する目盛りの接頭書式</th> <td><input type="text" id="markTipFormat1" /></td> </tr> <tr> <th>ツールチップに表示する目盛りの接尾書式</th> <td><input type="text" id="markTipFormat2" /></td> </tr> </table> </body> </html>
body { padding-bottom: 10rem; min-height: 250px; } .custom { min-height: 150px; }
body { padding-bottom: 10rem; min-height: 250px; } [gcim-control-appearance="modern"] .custom { min-height: 150px; }
System.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true }, meta: { '*.css': { loader: 'css' } }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, // map tells the System loader where to look for things map: { '@mescius/inputman': 'npm:@mescius/inputman/index.js', '@mescius/inputman/CSS': 'npm:@mescius/inputman/CSS', 'css': 'npm:systemjs-plugin-css/css.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel/systemjs-babel-browser.js' }, // packages tells the System loader how to load when no filename and/or no extension packages: { src: { defaultExtension: 'js' }, "node_modules": { defaultExtension: 'js' }, } });